高性能事件驱动分布式事务架构设计

发布于:2024-10-24 编辑:匿名 来源:网络

1.什么是事件驱动架构?事件驱动架构是一种促进生产的软件架构范式。事件驱动架构在使用微服务构建的现代应用程序中非常常见,它使用事件来触发和解耦服务之间的通信。

事件可以是状态的变化,例如将商品放入购物车;它也可以是某个标识符,例如订单的发货通知。 eda.drawio.png 在传统的软件架构中,应用程序逻辑是由请求和进程驱动的。

请求执行一段逻辑并同步返回响应。在业务逻辑中,要执行的代码是按照流程的顺序排列的。

在事件驱动架构中,事件消费者将以异步方式处理事件生产者生成的事件。将原有流程中的逻辑交给事件消费者,解耦服务之间的耦合,聚焦应用逻辑。

职责单一,代码更加简洁,系统的响应能力也能得到提高。 2.分布式事务的事件驱动架构2019年,本文作者开源了Go语言的分布式事务框架Seata-Golang。

Seata-Golang实现了AT模式和TCC模式,这两种模式都是流程驱动的。 2018年,随着对云原生技术有了更深入的了解,我受到Kubernetes Control-Loop思想的启发,设计了一个新的高性能、非侵入式、事件驱动的Go语言分布式事务框架hptx,该框架还支持跨语言分布式事务。

、读写分离、数据库和表Mesh解决方案DBPack。两种产品都可以解决分布式事务问题,前者仅支持Go语言,后者支持任何编程语言。

它们使用相同的事件驱动架构。下面提供详细解释。

流程驱动 eda-Page-2.drawio.png 在Seata的设计中,事务发起者发起全局提交后,首先会判断该事务是否允许异步提交。如果允许,则直接返回提交成功,然后AsyncCommittingSessionManager会异步通知各个分支事务提交,AT事务默认允许异步提交。

如果不允许异步提交,则事务协调者会依次通知全局事务参与者每个分支事务已提交。所有分支事务提交成功后,全局事务提交的结果会同步返回给事务发起者,如上图所示。

事务协调器通知事务参与者提交过程中发生异常,并将全局事务标记为CommitRetrying状态。会有一个RetryCommittingSessionManager定期从持久存储中检索标记的全局事务以重试提交。

全局回滚的流程与上图类似。全局回滚时,AT模式和TCC模式同步执行,依次通知各分支事务回滚,然后将回滚结果响应给事务发起者。

如果回滚失败,全局事务会被标记为RollbackRetrying,RetryRollbackingSessionManager会定期检索被标记的全局事务数据来重试回滚。 image-5.pngSeata-Golang用户经常会问一个问题,如何让事务协调器TC Server高可用? Seata,包括Seata-Golang,默认建议使用Mysql数据库作为TC状态数据的持久存储。

TC Server本身是一个无状态应用,可以部署多副本,但是这里有一个问题:多个对等副本中的AsyncCommittingSessionManager、RetryCommittingSessionManager、RetryRollbackingSessionManager会从数据库中取出对应的数据执行,从而导致事务提交。回滚会重复执行。

虽然AT模式天生幂等,TCC模式也由用户保证幂等,但总存在一定的资源浪费,而且不够优雅。事件驱动 image-1.png 上图展示了hptx和dbpack的事务协调逻辑。

事务发起方AggregationSvc发起全局事务提交和回滚,仅修改ETCD中的数据状态,然后立即返回。订单服务和商品服务使用前缀 bs/${appid} 来观看 ETCD 中存储的分支交易数据。

当分支交易的数据发生变化时,ETCD立即推送变更事件到对应的服务,订单服务和产品服务接收到。更改事件发生后,将数据添加到工作队列中以执行提交或回滚逻辑。

AggregationSvc在提交和回滚时不会调用OrderSvc和ProductSvc的接口。整个流程通过ETCD解耦,异步执行。

eda-Page-3.drawio.png 事务分支提交或回滚失败后,会重新进入工作队列继续消费,直到提交、回滚成功或回滚超时(AT模式回滚操作涉及释放全局锁,需要设置超时时间,即retry_dead_threshold)。image-6.png 在此架构中,没有集中式事务协调器 TC Server。

用户只需要关心自己应用的高可用即可。如果部署多副本,hptx和dbpack会通过etcd选择master,并且只会选择master。

只有副本才能观看自己生成的分支事务数据进行提交和回滚,避免了重复执行提交和回滚逻辑的问题。集成hptx只需要依赖相应的SDK,不需要部署额外的TC Server。

但状态数据的存储由原来的Mysql改为ETCD。 3、新架构带来的好处:全新的云原生、事件驱动架构更加简洁,性能更强。

使用hptx的应用程序事务协调性能相比Seata-Golang提升了一倍,通过dbpack进行mesh模式的分布式事务协调性能相比Seata-golang提升了50%。以下是一些测试数据: 环境性能 Seata-golang Mac book pro 18.54 笔每秒 hptx Mac book pro 38.89 笔每秒 dbpack Mac book pro 28.09 笔每秒 hptx 阿里云 ecs ecs.sn1ne.xlarge (4 核 8G) 35.15 笔每秒hptx是目前最强大的云原生、非侵入式分布式事务解决方案。

选择其他基于内存的存储组件理论上可以实现更高的性能,但从整体可靠性和性能来看,etcd 是目前最好的选择。 4.结论通过在分布式事务领域的不断研究和总结,分布式事务框架不断演进,从最初兼容java Seata的seata-golang v1版本到云原生、非侵入式、基于grpc的seata - 从golang v2版本,到基于ETCD watch机制的事件驱动的hptx,再到跨语言的dbpack,分布式事务不断进化,能力进一步增强。

高性能事件驱动分布式事务架构设计

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 首届人工智能摄影奖揭晓,读完获奖作品,我两次惊慌

    首届人工智能摄影奖揭晓,读完获奖作品,我两次惊慌

    几年前,“现代主义之父”查尔斯波德莱尔对摄影技术提出了著名的批评——“每一个天才都是画家的避难所,他们没有能力或懒得完成自己的工作”。 教育。 ”近百年来,摄影技术不断发展,这项备受争议的新技术终于在各个领域完善为一门艺术。 从构图到光影,从景深到色彩,摄影

    06-21

  • 赣州:《关于推进私募股权投资基金业高质量发展若干措施的通知》

    赣州:《关于推进私募股权投资基金业高质量发展若干措施的通知》

    赣州市人民政府办公室印发关于促进私募股权投资基金业高质量发展若干措施的通知。 赣州市政府办发【】第5号 各县(市、区)人民政府,市政府有关部门,市属各所属、驻市各单位: 经市政府同意,现将《关于推进私募股权投资基金业高质量发展的若干措施》印发给你们。 请结合实

    06-17

  • OLED汽车光源产品开发商“亿光科技”完成数亿元C轮融资

    OLED汽车光源产品开发商“亿光科技”完成数亿元C轮融资

    投资界(ID:pedaily)1月2日消息,固安亿光科技有限公司(以下简称“亿光科技”) “亿光科技”)近日完成数亿元C轮融资。 本轮由吴跃峰、元和普华、创源创投、广东瑞信、武汉宏创联合投资。 万创投行担任首席融资财务顾问。 汽车电子化、智能化带动了汽车照明行业的发展,让

    06-17

  • NVIDIA没有“魔力”

    NVIDIA没有“魔力”

    “不可能超越NVIDIA”。 资深芯片投资人思杰斩钉截铁地说,“即使AMD拥有比NVIDIA参数更强的芯片,也无法撼动NVIDIA在AI市场的地位。 ”这几乎是AI芯片从业者的共识。 无论是芯巨头还是拥有技术专家的美英初创公司,如果想坐上NVIDIA主导的加速计算桌上,与NVIDIA对抗的机会微

    06-17

  • 一家初创公司正在为员工设立 VR 自慰舱,有人真的想要这个福利吗?

    一家初创公司正在为员工设立 VR 自慰舱,有人真的想要这个福利吗?

    员工福利对于公司和员工都很重要。 公司为员工提供有利于或舒适的服务、设施和福利,员工可以从中得到放松并得到灵感,也可以提高工作效率,增强员工对公司的认同感和归属感。 因此,为了吸引和留住人才,很多企业也在员工福利方面“大显身手”。 比如,中国很多人向往的互联

    06-21

  • 存储巨头旗下“长鑫科技”再融资108亿元,投前估值约1400亿元

    存储巨头旗下“长鑫科技”再融资108亿元,投前估值约1400亿元

    投资界消息(ID:pedaily),3月28日晚间,兆易创新宣布长鑫科技目前正在开展新一轮股权融资,公司拟使用自有资金15亿元参与长鑫科技本轮增资。 将与长鑫科技、早期股东合肥长鑫集成电路有限公司、合肥青汇集流企业管理合伙企业、合肥吉鑫企业管理合伙企业签署《关于长鑫科技

    06-17

  • 市值200亿,九安医疗一日投资五家VC

    市值200亿,九安医疗一日投资五家VC

    又一超级LP诞生。 这次是有着“魔王”之称的九安医疗。 投资界获悉,九安医疗周五公告称,公司以自有资金3.4亿元认购了5只基金份额。 参与的基金管理人为:继峰资本、元盛创投、吴岳峰资本、耀图资本、汇鑫投资。 如此大的投资额,在当前人民币融资困难的情况下,显得弥足珍贵

    06-18

  • 商业卫星持续发展,中科天塔完成近亿元融资

    商业卫星持续发展,中科天塔完成近亿元融资

    据投资界(ID:pedaily)11月29日消息,近日,西安中科天塔科技有限公司(以下简称“西安中科天塔”)完成融资近亿元。 商业航天硬科技企业“中科天塔”)宣布完成近亿元Pre-A轮融资。 本轮股权融资的投资方为长青资本、中科之星和唯尔投资。 中科天塔本轮融资将主要用于加快

    06-17

  • LP开场谈几点

    LP开场谈几点

    2019年7月19日至20日,第十??七届中国基金合伙人峰会在深圳举行,由清科创业投资共同体主办,深圳市C区人民政府协办。 活动汇聚知名优秀母基金、政府引导基金、保险资金、富裕家族、VC/PE机构等+优质LP及万亿可投资资金,分享中国LP市场最新动态,探讨新经济下的风险投资之路

    06-18

  • 邦尔骨科完成3亿元D轮融资,投资方为大晨财智和千骥资本,

    邦尔骨科完成3亿元D轮融资,投资方为大晨财智和千骥资本,

    投资界(微信ID:pedaily)消息,动脉网报道称,邦尔骨科医院集团有限公司已完成3亿元人民币融资。 D轮融资,本轮融资投资方为大晨金融、千骥资本。 此前,邦尔骨科医院集团今年以来已获得斯道资本、金浦产业投资、启明创投的三轮融资。 创始人和邦尔骨科医院集团董事长程栋表

    06-18

  • 赛雷纳(中国)医疗科技完成数千万元B轮融资

    赛雷纳(中国)医疗科技完成数千万元B轮融资

    投资界消息,赛雷纳(中国)医疗科技有限公司宣布完成数千万元B轮融资。 本轮融资由翰颐资本领投,老股东金阖 Capital、Chende Capital和Celula-HK参与(包括Versant Ventures、Kaiser Permanente Ventures等美国知名投资机构以及多家天使投资人)。 自2017年在华成立以来,赛

    06-18

  • 河狸嘉完成新一轮数亿元融资,阿里巴巴成为第一大股东

    河狸嘉完成新一轮数亿元融资,阿里巴巴成为第一大股东

    投资界(微信ID:pedaily)据8月25日消息,美容产业服务平台河狸嘉宣布完成新一轮融资数亿元。 ,投资人为阿里巴巴,华兴资本担任本次交易的独家代理。 本轮融资完成后,阿里巴巴成为河狸家族第一大股东。 事实上,从去年开始,阿里爸爸就与河狸家族展开了密集合作。 今年3月

    06-17