RocketMQ在Phoenix框架中的应用与实践
感谢RocketMQ官微采稿
摘要:Phoenix是宽拓科技架构团队研发的内存计算框架,借鉴了LMAX的架构思路,采用CQRS和EventSouring理念打造。本文简单介绍Phoenix,以及RocketMQ在Phoenix中的应用与实践。 注:该Phoenix不是Apache开源的那个Phoenix。
行业背景
在金融资管投资交易领域,业务场景复杂,如在交易处理场景中,存在事前的风控头寸控制需求,导致交易事件必须串行处理,无法并发,且单次交易事件处理中,存在高密度的复杂业务逻辑计算且依赖数据范围广,所以系统的性能问题非常突出。
目前业内一般基于关系型数据库来处理单个交易事件,会存在复杂SQL运算逻辑和多次IO读取数据,因此很难做到低延迟。并且由于业务逻辑比较复杂,经常陷入与表模型纠缠当中。
因为交易事件必须串行处理,所以基于SpringCloud/Dubbo这类分布式框架,并不能享受到横向扩容带来的计算能力提升的好处,反而在多点部署的时候需要引入全局锁来做好并发保护,增加了业务实现的复杂度。
基于此我们在借鉴了英国外汇交易中心的LMAX架构基础上,结合CQRS + EventSouring理念,落地了一套基于Java的内存计算框架Phoenix。目标是要把复杂的业务逻辑拿到内存中计算,摆脱对关系型数据库的依赖,结合DDD设计思路,让业务开发人员真正面向对象编程,大大降低单个事件的处理延时,通过低延迟获取高吞吐回报。同时利用单线程模式,避免了并发场景,降低了编程复杂度。
Phoniex介绍
Phoenix是对CQRS + EventSouring理念落地的JAVA开发框架,围绕Phoenix开发框架打造了一套开发运维平台。Phoenix框架具有如下特性: ln-Memory、支持分布式事务(SAGA)、微服务、单线程、支持同步/异步调用。 在开发运维平台上提供,内存查询/修改、快照管理,事件编排,调用链跟踪、实时监控、个性化业务指标监控、性能指标统计等。目前已经在生产中使用