您的位置: 首页 > 老体动态

RocketMQ开源分布式消息中间件,多特性满足大规模通信需求


提到RocketMQ,不少开发者的首个反应是“阿里出品”,用以把RocketMQ的消息通信应用于分布式系统,这篇文章可能会帮你减少走弯路的几率,不过真正让它在技术圈稳固地位的,乃是其具备容纳双11万亿级消息量的出众硬核实力。

分布式架构如何支撑大规模系统

RocketMQ的重点设计思想便是“拆”,它将消息处理进程细分为好几个单独角色,涵盖NameServer、Broker、Producer以及Consumer,NameServer扮演出转登记中心角色,Broker专门 handlingmessage存储,生产者与消费者各自履行职责,相互之间借由轻量级协议通话。

其架构所带来的直接益处是模块职责单一,NameServer不像ZooKeeper那样进行复杂事务处理,它只需维护Broker的心跳以及路由信息,一台常规服务器能使上万个Broker节点得以支撑。在2022年某电商平台大促期间,单日消息总量突破3000亿条,NameServer集群的CPU负载始终被控制在40%以内。

高可靠性设计保障数据不丢失

最怕丢数据的是消息中间件,RocketMQ解决这个问题是从两个层面着手的,存储层面运用的是顺序写盘机制,消息会先落盘然后才返回成功,同步层面支持主从复制以及同步双写,Master节点写入成功之后,Slave节点给予确认之后才算完成。

于实际生产环境里,有一家金融公司提出要求,消息是绝对不可以丢失的。为此他们配置了同步双写模式,哪怕遭遇Master节点突然出现宕机的状况,Slave节点也能够马上进行接管,从而实现消息零丢失。在2023年的时候,该公司开展了灾备演练,其中人为切断了Master网络,业务侧仅仅感知到了1.2秒的延迟,并且整个过程当中没有一条消息丢失。

高性能背后的技术秘诀

Apache RocketMQ所具备的高性能并非是凭空吹嘘得来的,其运用了处于操作系统层面的零拷贝技术,消息能够自磁盘径直传输至网卡,此过程成功绕开了用户态内存拷贝这一环节,再加之批量发送机制,生产者能够将多条消息进行打包后一次性予以发送,由此使得网络开销得以大幅度降低。

某出行平台每日处理数量高达数亿条的订单轨迹数据,将其接入RocketMQ之后,单机能够轻易达成并突破10万TPS的吞吐量。他们进行过这样的测试,就是在同样的硬件配置条件状况之下,践行实施运用的是异步刷盘操作以及批量发送这种做法行径,RocketMQ的吞度量比同层级别的其他产品而言要高出超过领先30%向上,且其时延延期一直很稳定稳稳当当,保持维护,恒定固定在5毫秒以内句号。

弹性伸缩应对业务洪峰

当业务量急剧飙升的时候,增添加更多的机器从而能够解决相应问题是最为畅快的行径之事。RocketMQ的Broker节点具备支持进行水平方扩展的特性,只要将其注册到NameServer里面,集群便会自动进行感知。消费者同样可以进行灵动式增添加更多动态增加,那样负载均衡的策略措施就会自动开展重新分配队列的行动。

在2024年的时候,某直播平台开展春节活动,瞬间消息量急剧增长了20倍,运维人员于10分钟内增添了30个Broker节点,集群吞吐量由80万TPS平稳地提升至1500万TPS,整个进程中业务毫无感知,活动结束之后再削减节点,资源成本节约了60%以上。

灵活的消息模型适配不同场景

RocketMQ所支持的消息模型那是相当贴合实际情况。普通消息采用的是点对点的模式,其中一条消息呀就只会被一个消费者去进行处理;发布订阅模式是比较适合用于广播通知的;顺序消息能够确保同一个订单ID的消息按照顺序来消费;延时消息则是可以去指定消息在经过多少毫秒之后进行投递。

某家物流公司借助顺序消息来处理包裹轨迹的更新事宜,要保证同一个运单号的状态变化系按照时间次序予以处理,如此使得出现状态回跳这个漏洞得以规避。另外有一家教育机构运用延时消息去处理课程过期的提醒事务,在用户报名之后的第30天才会自主推送需进行续费的通知,代码量为此减少了一半。

行业落地案例验证实战价值

电商领域中,RocketMQ是订单状态同步的主要力量所在。有一个处于领先地位的电商平台使用RocketMQ来同步各类订单状态,像创建订单的状态、支付订单的状态以及发货订单的状态,在业务繁忙的高峰时期居然每秒能够处理高达50万笔订单,其消息堆积这种能力更是达到了百亿级别。于此而言,物流行业它运用RocketMQ去追踪包裹流转这一情况是怎样的呢!每天能够处理超过10亿条轨迹数据,并且系统可用性竟然达到了99.99%。

金融领域对于消息可靠性的要求极为严苛,某支付公司运用RocketMQ来处理交易流水,采取同步双写以及多副本存储的方式,经审计发觉连续运行三年都没有出现数据丢失的情况。游戏行业借助它进行玩家行为分析,日活达到千万的游戏每日会产生二十亿条日志,RocketMQ稳健地承受住了所有的写入压力。

见到此处,或许你已然发觉RocketMQ的强劲之处。如此一来问题便产生了:于你所负责的项目当中,最令你头疼的消息中间件方面的问题究竟是什么呢?欢迎于评论区去分享你的经历,对这篇文章进行点赞收藏,待下次碰到技术选型之际将其拿出来对照参考。