免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4972 | 回复: 11
打印 上一主题 下一主题

[金融] 也发一个我写的前置类服务器设计简介 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-18 14:23 |只看该作者 |倒序浏览
本人虽从事金融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)DES\TDES安全服务模块,原本是为了编写压力测试客户端开发的,但是经过完善以后,可以用于为没有加密机的应用提供安全服务。

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

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

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

论坛徽章:
0
2 [报告]
发表于 2010-06-18 15:29 |只看该作者
不错,开源不?!

论坛徽章:
0
3 [报告]
发表于 2010-06-18 15:33 |只看该作者
这个平台是我设计的,大部分代码也是我写的或者修改的开源代码,但是其中一部分模块的代码是修改的公司的代码,所以目前还不便于开源,怕有麻烦

论坛徽章:
0
4 [报告]
发表于 2010-06-18 15:34 |只看该作者
不错啊

论坛徽章:
0
5 [报告]
发表于 2010-06-18 15:35 |只看该作者
继续努力!

论坛徽章:
0
6 [报告]
发表于 2010-06-18 15:36 |只看该作者
回复 5# __Aaron


    多谢鼓励,多多指教

论坛徽章:
0
7 [报告]
发表于 2010-06-20 11:26 |只看该作者
这么多看的,就没有一个人给点建议,指出点啥?1!!!

论坛徽章:
0
8 [报告]
发表于 2010-06-21 15:57 |只看该作者
已经很好了,没什么要提的!

论坛徽章:
0
9 [报告]
发表于 2010-06-21 17:26 |只看该作者
回复 8# mopewolf


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

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

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

论坛徽章:
0
10 [报告]
发表于 2010-06-21 17:28 |只看该作者
我觉得银联的通讯规范真的是太低级了,看起来好像通讯简单了,但是实际上对整个系统来说更复杂了,也不知道是谁设计的,就方便了银联自己
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP