最近接口做了好长时间了,觉的有必要记录点什么下来!(虽然最近这一块不是我负责了有别的事要忙去,但是我还是经常会去看看项目开发情况。)
项目主要是一个Http接口的开发,利于与其它公司合作在信息交互!因为我们这个是电信行业的项目,所以呢,在与合作商合作的时候会下发大量的短信,走数据库这有点太不专业了!用Ejb?这有点太过份了,而且很多公司赚钱是赚了不少钱,但技术实力不行。别的不说,就Http接口合作的好几家公司还真不会。
先说一下这个接口设计的一些重点:
1、安全:这是肯定的,不能随便一个家伙跑过来就要用我们的接口发短信啊。
2、效率:一家合作商用户订阅量在100多万,一天十几家下去,你的接口的扛的住啊。
3、备份:这合作商发的信息你得有详细log啊,要是出了问题,这能找责任人啊。
出于以上三点要抓信核心要点:
1、加入安全验证机制
2、减少数据库访问量,重构代码注重条理减少没效率的代码。采用Http能还有个好处就是规避了多线程的问题。
3、采用log4j把详细的下发日志记录到log上,每个log的大小限制在1M.
一、安全
在安全方面最先考虑的是一个合作商就给他一个http链接,同时定义一个合作商编号,这样就可能起到隔离,起码你不是我和合作商你不知道发哪个Url,更别说编号了.
但往深层想想这也不妥当:
1、每加个合作商你得再搞个Url链接吧,这你多少还得重写点代码吧。不利于扩展。
2、万一要是人家利用了别人的通道如何?Url发错了,编号通过了。或者更极端点。这安全级别不够。于是想到一个办法,在服务器Apache上做了手脚:验证IP(非合作商无法进入)。同时共用一个Url,会将合作商编号与产品编号一起生成一个md5号,通过后去验证一下md5就行了。虽然不是在最大程序上做到安全,不过我们都建立在友好合作的前提下的,没必要那么干,冒充别人的发。而且md5值你也无法知道。
3、在实体类中加入:周未是否充下发(本来还想搞节假日,这太不靠谱了除非专门找人维护这个去,一年一个变。)、开启状态(关闭,暂停,运行)。从而决定这一堆信息能否下发。
二、性能
说实话安全这块做到这基本上就算成了。但还并不是很完美,但是有时候在性能上考虑,还真不能再加太多东西了,一天量一大必然影响性能。
1、为了能够更好的实现性能上的最优,大家都知道减少数据库访问次数,这是最先考虑的,因为代码的速度运行远远高于数据库啊。所以呢我们的数据库就采用了一张大表设计(把合作商id,名称,产品,发送所有方式,发送方向,合作商md5编号等)。有些东西并不怎么符合范式,但是为了效率吗,这种东西多一张表,他就会多更多的复杂度。性能上会有更多的损耗。基本上每一个产品发送取一次数据库就行了。(一个产品上百万手机号+信息内容)
2、其次就是代码了,数据库已经不是瓶颈了,基本上用户从进为就已经通过Ip验证了,也就是有钥匙了,而且去数据库取的东西无非就是“指纹验证”,并且预读入一些用户信息。数据库就算是一个钟头下发两三百个产品也不是问题。
3、 所以现在的优化方向是代码:做的第一件事就是重构。大家也注意到了其实有多个下发方式,选择的下发方式不同那么实现代码也不同。原来写的代码if else过多,基本上代码没有可阅读性。于是采用策略模式重构了一下,把相同的代码抽出来,这样代码条理就清晰了。在策略模式上我们没有选择反射,更没有选择数据库,因为怕效率上跟不上,为了效率我们有context里写了个静态map用于存储各种实现方法。因为我们的下发方式非常固定,基本上大半年也改不了一两次,所以写到代码上比较合适。
4、第四点从一定程度上还是讲的第一点,但是我还是有必要提一下。就是尽量把通用性的属性用静态方法写到代码里,这样会好很多。(虽然在数据库上数据是一口气全拿上来的,但是感觉这样会好点。至少便于阅读)
三、日志
这一点非常重要,说难听的,以后出了问题打官司还得用他呢(至于能不能作为呈堂证供就是我们要过分研究的东西了。)。但我们的记录的详细,啥时间,啥内容,发向啥手机,发送状态等。这里主要就使用log4j.
这个现在实现有点凌乱(到处乱加log),但是吧。主要是原来那个程序,一起还没按我写好的代码把东西重构好,不然这log得在一个统计的地方调用他。
这个接口的设计吧我就写这么多,但是,总感觉不是很全面,也希望听听大家的想法。有什么砖可以拍。不过目前我们还没用上好的http接口的框架啊啥的。大家也可以推荐一下!
分享到:
相关推荐
总的来说,这个“单片机课程设计:数字电压表(8路通道)”项目涵盖了51单片机的基础操作、C语言编程技巧、模拟-数字转换技术以及嵌入式系统的设计思路。对于电信专业的学生来说,这是一个很好的实践平台,能提升...
在电信行业中,设备的可维护性和灵活性至关重要,尤其是在需要频繁移动或调整位置的场景下。标题中的“电信设备-一种...这一设计思路在现代电信设备制造中具有广泛的借鉴意义,尤其是在强调效率和适应性的应用场景中。
考虑到FPGA芯片的性能以及软件控制的优势,该设计方案在石油石化行业具有实际的应用价值,为石油井下传感仪器的检测提供了一种新思路和解决方案。通过虚拟仪器的设计,不仅能够提供更为精准的测量,还能通过软件界面...
在电信行业中,设备的复杂性和多样性使得信息处理与通信系统的集成变得尤为重要。"电信设备-一种基于模块相对位置的信息组合系统"是一个针对这个问题提出的一种创新解决方案。这种系统的设计理念是利用模块之间的...
下面我们将详细解析这一技术的核心原理、设计思路以及其在电信设备中的应用。 首先,让我们了解单片机的基本概念。单片机,也称为微控制器,是集成在一个芯片上的微型计算机,包含了CPU、内存、定时器/计数器和输入...
**设计思路**:MCC驱动设计的核心在于如何有效地整合HDLC协议与MCC硬件,实现数据的高效处理和传输。设计时需考虑HDLC协议的特性,如帧结构、同步模式、错误检测机制等,以及MCC硬件的性能指标,如数据吞吐量、延迟...
通过深入学习"信封类快件自动供件结构.pdf"这份资料,可以详细了解每个部分的设计思路、工作原理、安装维护要点以及可能遇到的技术挑战。这对于电信设备制造商、物流系统集成商、快递公司等相关领域的技术人员来说,...
6. **运维与维护**:设计可能考虑到了设备的易于维护和升级,如预留扩展接口、便捷的维修通道等,确保了系统的长期稳定运行。 7. **案例分析**:文件可能包含了一些实际应用案例,展示模块化移动房屋在不同场景下的...
- **定义与重要性**:调研同类产品的设计思路和技术实现,为自身项目提供参考。 - **具体内容**:现有产品的优缺点分析、新技术的应用前景等。 **4. 总体架构,CPU选型,总线类型** - **定义与重要性**:确定系统...
融合通信的设计思路主要包括以下几点: 1. 利用社交媒体的力量,通过用户的通信连接掌握其社交关系,强化和扩展用户的社会网络。 2. 充分发挥移动设备的优势,结合现有通信手段,提供更丰富的互动体验。 3. 引入...
此外,硬件电路设计也是论文的重点,包括FPGA与AD转换器、存储器以及其他外围设备的接口设计,以及光纤通信模块的设计。 在国内外研究现状中,数据采集系统的控制芯片经历了从单片机到DSP,再到FPGA的演变。尽管DSP...
这种分析仪的设计思路是将输入的数字信号通过RS232接口传输到主机,主机上的软件再进行解析和显示,以实现对信号的分析。 **工作原理** 1. **信号采集**:简易逻辑分析仪通过一组输入通道(例如,多位开关或逻辑...
- 具有开放的CTI接口,与计算机业务系统之间实现高速带宽连接,确保交换网络与计算机网络无缝集成。 - 支持多媒体应用和信息处理,兼容ATM、IP等多种接入方式。 2. **综合接入平台**: - 能够同时处理语音、传真...
它不仅为专业人士提供了研究和开发的新思路,也为信息系统的设计者和运营商提供了实用的技术指南。 综上所述,电子信息系统中信息传输控制技术的发展和应用,是保障现代通信系统高效、安全运行的关键。随着技术的...
CPCI-E是一种基于PCI Express(PCIe)接口标准的板级互连技术,广泛应用于工业控制、电信和军事等领域,因其高带宽、低延迟的特性而受到青睐。 描述中提到这是一个“cpcie标准的pcb”,表明这是一个遵循CPCI-E规范...
总的来说,德州仪器的TLK2226千兆以太网收发器通过其高密度、低功耗和灵活的设计选项,为通信和网络设备制造商提供了全新的设计思路,推动了行业向更高效、更节能的方向发展。它在满足高速数据传输需求的同时,也为...
业务网通过这些接口与传输网交互,实现信号的高效传输。 - **常用传输设备与结构**:传输设备通常以子框为单位,安装在机架中,由机架提供必要的电源、告警、冷却等功能。子框内包含复用单元、线路单元等,可实现多...