事务消息中心-TMC】的更多相关文章

此文已由作者杨凯明授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 背景 为什么要做事务消息中心 原有kqueue的方式缺点: 降低业务库性能 占用业务库磁盘 历史数据管理成本高 技术运维工作量很大 事务消息中心的优点: 去除上述kqueue的缺点 易运维 易扩展 事务消息中心的缺点: 接入适当改造 增加网络开销 TMC基本概念 事务消息中心主要是提供两阶段提交的方案,对业务方消息提供保证投递的支持. 支持RabbitMQ及Kafka 支持多数据源.多类型 服务端水平扩展…
近日,Apache RocketMQ 社区正式发布4.3版本.此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消息,而且实现了对外部组件的零依赖.接下来,本文将详细探秘RocketMQ事务消息的设计原理以及实现机制. 一.需求缘起 在微服务架构中,随着服务的逐步拆分,数据库私有已经成为共识,这也导致所面临的分布式事务问题成为微服务落地过程中一个非常难以逾越的障碍,但是目前尚没有一个完整通用的解决方案. 其实不仅仅…
开心一刻 昨晚和一哥们一起吃夜宵,点了几瓶啤酒 不一会天空下起了小雨,哥们突然道:糟了 我:怎么了 哥们:外面下雨了,我老婆还在等着我去接她 他给了自己一巴掌,说道:真他妈不是个东西 我心想:哥们真是个好丈夫 很快他补充道:喝酒怎么能分心呢 我一口啤酒直接笑喷而出 知识回顾 本文不讲什么是 RocketMQ ,不讲它的实现原理,只想和大家探讨下它的事务消息的正确使用方式 再探讨之前,先带大家回顾下知识点 事务消息的设计原理  RocketMQ 在 4.3.0 版中已经支持分布式事务消息,采用 2…
@ 目录 1 示例模式 2 安装与配置 RocketMQ 3 运行服务 3.1 启动 NameServer 3.2 启动 broker 4 生产者 4.1 事务监听器 4.2 事务消息生产者 5 消费者 6 测试 1 示例模式 RocketMQ 事务消息示例包含一个生产者.消费者.NameServer 以及 Broker 服务,它们之间的关系如下: RocketMQ架构上主要分为四部分[^1]: Producer:消息发布的角色,支持分布式集群方式部署.Producer通过MQ的负载均衡模块选择…
分布式事务是一个复杂的问题,rmq实现了事务的最终一致性,rmq保证本地事务成功消息一定会发送成功并被成功消费,如果本地事务失败了,消息不会被发送. rmq事务消息的实现过程为: producer发送half消息 broker确认half消息,并通知producer,表示消息已经成功发送到broker(这个过程其实就是步骤1broker的返回) producer收到half确认消息之后,执行自己本地事务,并将事务结果(UNKNOW.commit.rollback)告诉broker(这是一个one…
在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTransaction: public TransactionSendResult sendMessageInTransaction(final Message msg, final Object arg) throws MQClientException { if (null == this.trans…
这周RocketMQ发布了4.3.0版本,New Feature中最受关注的一点就是支持了事务消息: 今天花了点时间看了下具体的实现内容,下面是简单的总结. RocketMQ事务消息概要 通过冯嘉发布的<RocketMQ 4.3正式发布,支持分布式事务>一文可以看到RocketMQ采用了2PC的方案来提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息. 这张图说明了事务消息的大致方案,分为两个逻辑:正常事务消息的发送及提交.事务消息的补偿流程 事务消息发送及提交: 发送消息(ha…
在RocketMQ4.3.0版本后,开放了事务消息这一特性,对于分布式事务而言,最常说的还是二阶段提交协议,那么RocketMQ的事务消息又是怎么一回事呢,这里主要带着以下几个问题来探究一下RocketMQ的事务消息: 事务消息是如何实现的 我们有哪些手段来监控事务消息的状态 事务消息的异常恢复机制 RocketMQ的事务消息是如何实现的 RocketMQ作为一款消息中间件,主要作用就是帮助各个系统进行业务解耦,以及对消息流量有削峰填谷的作用,而对于事务消息,主要是通过消息的异步处理,可以保证本…
用户U1从A银行系统转账给B银行系统的用户U2的处理过程如下:第一步:A银行系统生成一条转账消息,以事务消息的方式写入RocketMQ,此时B银行系统不可见这条消息(Prepare阶段) 第二步:写入MQ成功后,回调A银行系统,对T1,T2表进行操作(很显然需要是一个事务)我们重点关注下T2表,这个表是用来干嘛的呢?每条转账消息都会在T2表中,该表有2个特殊的字段:status,updatetime. 第三步:完成第二步,接下来发送确认消息给MQ,如果这个确认消息发送成功,那么这条转账消息,将对…
一.背景 假设有一个系统的最大并发量有2000TPS左右.同时该系统有闲时和忙时,希望可以随时进行拓展和削减服务能力,以节省服务器费用开销. 该系统能提供站内消息.短信.app消息.邮箱的一个消息系统,并可实现通用化. 二.需求分析 1.该系统最大并发有2000TPS左右. 处理这么大并发,可以通过负载均衡.水平拓展机器数来暴力解决.但我们可以找寻一种可在业务层面进行水平扩展或缩容的架构. 2. 同时该系统有闲时和忙时,希望可以随时进行水平拓展和削减服务能力. 这个需求可以解读为需要对业务服务器…