企业服务总线ESB之交易流水

来源:互联网 发布:淘宝网天猫商城童装 编辑:程序博客网 时间:2024/05/16 17:04

流水信息的记录是企业服务总线中非常重要的一个环节,其有两个核心的作用:

  • 交易过程中问题的排查和跟踪;

  • 冲正交易的执行;冲正是银行里特定的词汇。实际就是如何保证分布式事物的一致性。

这里面首先技术问题需要解决,在大交易量情况下,海量流水记录的问题。我们先做一个假设,某行日均交易量为五千万笔,80%的交易集中在4个小时完成,TPS基本要3000,每笔交易如果按照记两笔流水的话,流水报文大小假设为30K,大约1S是180M。

同步记流水,会大大影响ESB的性能。所以这里需要考虑异步去记流水,把流水信息发送到对应的消息队列,然后起多个流水应用去收取流水信息,然后插入数据库。这是发现插库有成为了瓶颈,这时考虑先起线程池去收取队列上的消息,然后写到本地文件,然后读的线程池从本地文件读取后,写入数据库,当写成功后,删除对应文件,写失败后,记录进失败文件。

通过以上调整,整体性能有了较大提高,但是TPS还是有落差,综合分析后,网络IO和磁盘IO还是存在瓶颈,所以在同一物理机部署的情况下,可采用共享内存的方式,做了修改后,通过压测,性能还是没有提升,发现Java的共享内存坑爹的只有映像文件的实现,所以还是有磁盘IO。采用C实现共享内存,JNI调起的方式,进行共享内存的验证,正在验证中。

分布式一致性的问题,一般原子交易的一致性,交易系统本身会保证。当使用总线进行组合交易时,交易的轨迹和流水信息只有总线知道,这时候总线需要保证组合服务的一致性,这时候总线负责发起调度,调用对应的冲正服务,保证交易的一致性。

0 0