也发一个我写的前置类服务器设计简介

发布于 2022-09-07 09:56:19 字数 1901 浏览 12 评论 9

本人虽从事金融IT仅有一年,但是对服务器开发非常有热情,进过近一年的努力,开发了本文将介

绍的适合用于开发前置类服务器的平台,希望得到诸位前辈的指教。

1)参考nignx、lighttpd、libevent等开源项目,取长补短。
   nignx、lighttpd的架构,libevent的超时处理。

2)Master+Worker多进程多路复用epollET模式。实现高性能I/O,节约CPU。

3)优化的三层架构设计:表示层、商业逻辑层、数据访问层。表示层(通讯层)基于状态机开发,思路清晰;商业逻辑层具有高独立性,线性扩展,易于快速开发;数据访问层包括:类似对象/关系映射访问模式实现的数据缓存层,在线访问模式的数据库层。

4)平台各模块间松耦合、平台与商业应用松耦合,可配置,实现模块及商业应用的可选择。日志模块、调度引擎模块、报文适配器模块、内存操作模块、数据库操作模块、安全服务模块,每个模块本着信息隐藏、自我管理、调用初始化函数指定加载、不调用不加载的原则设计。可以配置加载多个商业应用,线性扩展。应变将来商业的更新需求,实现高开发效率,支持新功能的快速交付。
日志模块:       提供高效的日志记录服务。
调度引擎模块:   根据配置决定如何处理接收到的报文。
报文适配器模块: 提供各种报文处理功能。
内存操作模块:   将报文转为内存统一数据对象。
数据库操作模块: 动态SQL技术实现的oracle数据库操作接口。
安全服务模块:   加密机安全服务API,DES/TDES模块。

5)多渠道利用缓存加速服务器,实现高性能服务:
→使用Hash表管理报文、中间处理结果(数据字典缓存区),服务初始化正常运行后没有内存分配及释放,防止内存泄露(除非一次交易数据量超过Hash表容量,Hash表会扩容2倍)。
→使用Hash表缓存频繁查询的数据库表,查询速度提升几十倍。
→缓存流水表记录,批量插入,减少SQL,减轻数据库服务器压力,插入速度提升上百倍。  
进程全局数据区(内存组件):
数据流池:收到的请求报文、给后台的请求报文(前置);
数据字典缓存区:解析后的报文数据元及处理结果;
数据缓存区:加载内存表;(数据量大时考虑做成系统全局数据区)
日志缓冲区:日志首先写到缓冲区,适时写到硬盘;
流水缓冲区:流水表首先写到缓冲区,适时写入数据库;
时间戳小根堆:超时管理;
其他杂项信息:句柄信息、状态信息等。

6)优化的日志记录模块,适应金融交易服务器日志量大的特点。减少系统调用、减少磁盘I/O,写日志的效率提高十几倍。

7)基于小根堆算法做超时管理,具有高效的特点。

8)自动根据服务器CPU核数启动一定数量的Worker进程并绑定CPU,解放CPU0专注于网卡中断及系统进程处理;负载均衡;提高cache命中率。

9)能够兼容标准、各种类8583报文,定长报文。由于报文被转为内存统一数据对象,所以可以轻松实现报文格式的转换。

10)平台通过交易函数管理表查找客户端请求的“服务位置”,并调用服务(动态库),数据字典缓存区指针是交易函数唯一的参数。

11)使用加密机做MAC及PIN安全服务。

12)DESTDES安全服务模块,原本是为了编写压力测试客户端开发的,但是经过完善以后,可以用于为没有加密机的应用提供安全服务。

13)配置文件、配置数据库表热升级。可使用外部命令实时升级,或者通过数据库探测延后升级。

    此外本人也开发了另一个版本的平台,基本技术思路同此版本,只是Master进程与Worker进程职

责于上述版本不同,适合于开发业务逻辑复杂的后台。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

凉城凉梦凉人心 2022-09-10 00:43:15

我觉得银联的通讯规范真的是太低级了,看起来好像通讯简单了,但是实际上对整个系统来说更复杂了,也不知道是谁设计的,就方便了银联自己

白芷 2022-09-10 00:42:47

回复 8# mopewolf

     其实吧,我这个架构很难改造成符合银联的通讯规范,所以如果做银联前置架构必须改,主要是通讯层:增加路由分拣进程(一个出一个进)、银联规范中的两进两出或四进四出通讯进程、进程间使用消息队列通信,

以便使用消息类型决定报文的流向。

   报文处理进程可以复用上述设计中的很多模块、技术。

不如归去 2022-09-10 00:38:05

已经很好了,没什么要提的!

晒暮凉 2022-09-10 00:37:25

这么多看的,就没有一个人给点建议,指出点啥?1!!!

抠脚大汉 2022-09-10 00:03:28

回复 5# __Aaron

    多谢鼓励,多多指教

吹泡泡o 2022-09-09 23:47:38

继续努力!

方觉久 2022-09-09 23:36:22

不错啊

娇柔作态 2022-09-09 23:34:28

这个平台是我设计的,大部分代码也是我写的或者修改的开源代码,但是其中一部分模块的代码是修改的公司的代码,所以目前还不便于开源,怕有麻烦

时光倒影 2022-09-09 10:02:35

不错,开源不?!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文