JSON

#学习笔记#基于JSON数据交换模型的实时支付系统设计和实现(2)

字号+ 作者:H5之家 来源:H5之家 2016-11-12 15:00 我要评论( )

基于以上分析,以JSON为内部数据交换格式,将5层数据交换模型精简为3层,如图1所示,即外部报文(对于传统POS设备)—内部报文(原第二至三层改为JSON格式)-数据库层和文件层接口。对移动支付设备甚至可以直接使用

基于以上分析,以JSON为内部数据交换格式,将5层数据交换模型精简为3层,如图1所示,即外部报文(对于传统POS设备)—内部报文(原第二至三层改为JSON格式)-数据库层和文件层接口。对移动支付设备甚至可以直接使用JSON格式从外部发送到系统内部(通信层可支持TCP/HTTP/HTTPS,为了保证数据安全和快速路由,还需额外加报文头、签名和认证信息)。项目组以该3层模型构建新一代支付系统,并在关键模块将JSON与XML进行实证对比。


2基于JSON的数据交换模型实证分析


2.1支付系统总体架构图



抽取支付系统关键模块搭建验证系统。如图2所示,核心的金融交易流程处理采用异步模式,通信层(渠道、主机)、数据预处理层(组装、桥接)、基础服务层(加解密、超时控制)使用统一的平台数据处理格式,模型进行接口改造后即可对不同数据格式进行性能对比测试。


测试以典型的POS缴费交易为例,在交易处理的各个子系统和子程序中,对于内部数据格式的每个字段的处理总计“读”约1 200次、“写”约900次(具体次数因业务图2支付系统架构图流程有所不同),下面实证XML和JSON的性能。


2.2测试说明


2.2.1测试环境


软件环境,数据库:Oracle(Oracle11.2.0.2);测试主机操作系统:AIX 6106 SP6;测试中间件:TUXEDO 10 R3,Weblogic 10.3.5。硬件设备由6台IBM 小型机和2台高端存储组成,如表1所示。交易模拟:2台POS仿真程序分别发起交易,2台PC使用银联仿真器模拟银联和发卡机构。表1测试硬件设备设备类别产品型号子系统用途及配置数量服务器P7系列



2.2.2测试流程及衡量指标


采用JSON作为支付平台统一数据处理格式,要求达到以下指标:TPS≥3 000 (TPS:每秒处理交易数),平均单笔交易耗时<1 s。


测试采用缴费交易,测试采用的库函数版本为:JSON:Jsonc 0.9;XML:Libxml2 DOM。


2.3测试数据


(1)测试中使用两台PC同时模拟终端发送数据,每个模拟程序均包括发送和接收线程,发送频率为每隔700~650 μs发一笔,测试结果如表2和表3所示。



说明:JSON格式TPS能达到并稳定至3000, XML格式在TPS达到2 010时CPU已接近耗尽。


(2)按照200万条交易流水对JSON和XML占用空间测试,结果如表4所示。


说明:采用JSON格式存储要节省23%。


3、对于JSON的底层优化分析


大型支付系统对于性能要求高,特别是为了应对突发性交易峰值的情况,项目组对于JSON底层进行分析和优化,并将其命名为EJSON(Extend JSON)。


3.1对JSON域键名的规划和长度压缩


优化内容主要包括对JSON键值的存储路径进行规划;对平台常用词汇的缩写定义;对各模块、组件中重合的JSON键名进行合并;对键名长度压缩(将原来用下划线分隔的键名定义方式改为缩略词与驼峰法相结合)。经优化后主要进程间通信的消息长度减少,消息的JSON序列化字符串长度从8 200 B降至5 700 B。


3.2JSON开源库对内存的分配机制优化


JSON原内存分配机制如下:在最初初始化时申请16个键值空间(其中为避免散列算法冲突,故仅使用其中的2/3),如发现空间不够则再申请2倍空间,并将原有数据拷贝到新空间。这样虽然能保证存储空间有效利用,但增加系统开销、降低处理性能。针对支付系统场景中JSON键值取值,改进JSON为一次申请足够内存块,无需每次动态申请空间。此优化使单笔交易耗时减少了约8 ms。


4、结论


(1)新数据交互模型是可行的。基于EJSON的方案大大提高了开发效率,报文自外部渠道转换为内部EJSON格式后,所有子系统、大部分子函数使用一个JSON对象作为参数传递变量,新增的业务字段不影响原有函数和系统,大大降低了维护成本。新支付系统上小型项目生命周期大大缩短,平均为49个自然日,其中用于软件开发的时间仅占25%,开发效率大大提高。


(2)EJSON 可以用于生产系统中。目前新一代支付系统已成功投产,系统采用了EJSON作为数据处理格式,并取得良好效果。平均TPS最高能稳定至约3 180笔/秒,平台在压力控制500 TPS时的单笔交易平均处理时间可控制在40 ms以内,日交易量峰值达到1 402万笔。


(3)后续改进方向。以消费者体验为中心,进一步提高移动支付设备接入的便利性和兼容性[6],加强大数据服务、增值金融子系统支持,在以下方面进行改进:一是JSON将作为数据总线成为系统间交互的标准格式,以此为基础建立统一的JSON变量命名数据字典,对于自有系统命名内外一致,对于外部系统接入尽量只做一次内外转换;二是研究支持JSON存储的数据库,以进一步改3层数据交互为准两层数据交互,以JSON键值为数据存储的元数据,进一步适应未来移动互联网非结构化数据操作的需求。


参考文献


[1] 钟巍,吴业福. 数据交换模型研究与实现[D].武汉:武汉理工大学,2008.


[2] 李聪. 基于XML的数据交换平台的设计与实现[D].武汉:武汉理工大学,2009.


[3] 谷方舟,沈波. JSON数据交换格式在异构系统集成中的应用研究[J].铁路计算机应用,2012,21(2):14.


[4] 高静,段会川. JSON数据传输效率研究[J]. 计算机工程与设计,2011,32(7):22672269.


[5] 邢四为,宋杰.基于JSON的信息交互系统的研究与实现[D]. 合肥:安徽大学,2013


[6] 吕光金,曹倩雯.基于TAMTRA的移动支付模式消费者接受影响因素研究[J].微型机与应用,2015,34(8):8386.

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 学习使用JMeter进行RESTful API测试的有效技术和最佳实践(2)

    学习使用JMeter进行RESTful API测试的有效技术和最佳实践(2)

    2016-11-12 14:00

  • MongoDb学习笔记

    MongoDb学习笔记

    2016-10-30 12:00

  • golang学习之html json解析

    golang学习之html json解析

    2016-10-30 12:00

  • JackSon学习笔记(二)

    JackSon学习笔记(二)

    2016-10-24 17:00

网友点评