Apache RocketMQ在我司的最佳实践--智慧政务场景下的分布式消息与分布式事务

简介: Apache RocketMQ在我司的最佳实践--智慧政务场景下的分布式消息与分布式事务

h5banner.png

<本文已参与 RocketMQ Summit 优秀案例征文活动,点此了解详情>

缘起

对于Apache RocketMQ的了解,追溯起来,可以说是从开源初始,就认识到了它。那时候的它,还是个幼年,没有成熟的社区,也没有好的机制去运作。本身,也不算是成熟的产品。

但是,在阿里强大的技术背景驱动下,随着业务的支撑,它慢慢得到了长远的发展,更多的走向了大众的视野,也慢慢成为了一款优秀的消息队列中间件。

在技术选型中,可以作为一名佼佼者,为各个技术负责人提供技术支持。

缘与业务

对于我司传统的业务场景以及相关产品中,一般不会涉及到消息中间件的涉及。很有幸,公司的发展以及壮大,新的产品、新的业务场景进行了拓展。我司,也参与了智慧城市的相关业务场景建设。

很多的产品,属于互联网平台,因此,对于消息队列中间件的需求,就随之诞生,也就比较迫切。借助消息队列其减少相应所需的时间和削峰,降低系统耦合性的相关特性,构建更加健壮的平台产品。

实践从业务中来,到业务中去。本次分享便从一个企业服务平台的建设才讲述。

业务场景如下所示:

我司与政府大数据局,参与共建一个企业与企业、企业与政府之间互联互通的、信息交互的一个新型互联网平台。平台中,为企业提供了最便捷的沟通入口。

根据政府的需求,企业可以在线,实现政策申报、政策享受等一系列先进的、优秀的、便捷、快速的政府服务。同时,企业在平台中,跟其他企业可以实现在线服务申请、在线沟通。其中,平台上企业个人中心中会有个模块会消息中心。展示了,企业收到的来自各个方面的消息通知。

场景如下图所示:

image.png

缘与技术

本身作为分布式消息业务需要,同时为了降低系统耦合性,选择消息队列中间件,来完成消息中心的建设。

技术选型

四种常用的分布式消息队列开源软件:KafkaActiveMQRabbitMQRocketMQ

在分布式消息队列的江湖里,Kafka 凭借其优秀的性能占据重要一席。

Kafka 作为流平台具有以下三种能力:

  1. 发布和订阅记录流,类似于消息队列或企业消息系统;
  2. 具有容错能力,且可以持久化的方式存储记录流;
  3. 当记录流产生时(发生时),可及时对其进行处理。

Kafka 适用于两类应用:

  1. 建立实时流数据管道,在系统或应用之间可靠地获取数据;
  2. 建立对数据流进行转换或反应的实时流应用程序。

目前,Kafka更多的用于数据量大的大数据平台项目。

ActiveMQ 由 Apache 出品,据官网介绍,它是最流行和最强大的开源消息总线。ActiveMQ 非常快速,支持多种语言的客户端和协议,而且可以非常容易地嵌入到企业的应用环境中,并有许多高级功能。

ActiveMQ 基于 Java 语言开发,从使用的便捷性与开源程度,是可以承担起更多的职责。但是,目前由于

  1. 社区活跃度较低,更新慢,增加维护成本;
  2. 网络资料显示,ActiveMQ 存在一些莫名其妙的问题,会丢失消息;
  3. 目前,官方将重心放到 ActiveMQ 6.0 下一代产品 Apollo 上,对 5.x 的维护较少;
  4. 不适合用于上千个队列的应用场景。

因此,不适合更新迭代速度的互联网平台。

RabbitMQ 是流行的开源消息队列系统,支持多种客户端,如 Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX、持久化。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。但是,目前由于

  1. 尽管结合 Erlang 语言本身的并发优势,性能较好,但是不利于做二次开发和维护;
  2. 实现了代理架构,意味着消息在发送到客户端之前可以在中央节点上排队。此特性使得 RabbitMQ 易于使用和部署,但使得其运行速度较慢,因为中央节点增加了延迟,消息封装后也比较大;
  3. 需要学习比较复杂的接口和协议,学习和维护成本较高。

因此,综合考虑没有选择。

RocketMQ 由阿里研发团队开发的分布式队列,侧重于消息的顺序投递,具有高吞吐量、可靠性等特征。RocketMQ 与ActiveMQ一样,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的改进,在消息可靠性上比 Kafka 更好,RocketMQ 已经被业界多个大型互联网公司采用。

所谓实践是检验真理的唯一标准,实际应用中的表现比文字更具说服力。在阿里内部,RocketMQ 很好地服务了集团大大小小上千个应用,在每年的双十一当天,更有不可思议的万亿级消息通过 RocketMQ 流转(在 2017 年的双 11 当天,整个阿里巴巴集团通过 RocketMQ 流转的线上消息达到了万亿级,峰值 TPS 达到 5600 万),在阿里大中台策略上发挥着举足轻重的作用。

目前,社区活跃,开源程度高,本身经得起业务场景的考验,因此最终选型为RocketMQ。

部署架构

RocketMQ支持部署场景的自定义,同时支持高可用的部署方案。

对于当前平台的建设,存在DMZ区、金宏网区网络隔离环境。对于平台的中间件部署存在一些复杂的网络要求。

借用官网对于部署架构的图示:

image.png

对于我们在实践中的部署,同样采用了官方的部署实践。采用了多Master、多Slave异步复制的方式,即使磁盘损坏,消息丢失得非常少,消息实时性不会受影响,因为 Master 宕机后,消费者仍然可以从 Slave 消费,此过程对应用透明,不需要人工干预,性能同多 Master 模式几乎一样。

技术实现

对于RocketMQ的客户端消费者、服务端生产者来讲,采用Springboot作为技术开发框架,实现起来非常简单。

引入对应的POM依赖


<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.0.3</version>
</dependency>

应用配置文件修改


rocketmq:
  name-server: xxxx:9876
  producer:
    group: base_group_syncMsg
    send-message-timeout: 5000
    retry-times-when-send-failed: 2
    max-message-size: 4194304

对应的添加相关注解、实现业务代码即可。

使用方便,功能强大,对于开发者来说非常友好,是一个很好的选择。

缘与分布式事务

写到这里,同时也描述下,采用了微服务技术解决方案后,在很多场景下,会产生分布式事务。那么,除了自实现,分布式事务框架,同时,我们可以采用消息队列来实现。

在本次实践中,我们有过进一步的实践。在此,就不多说。

缘与未来

实践看来,对于RocketMQ的落地过程中,虽有坎坷,但是达到了预想的效果。社区的文档也是比较满足实际落地需要,总体来说,是不错的。

在此,也希望社区越做越好吧,未来可期。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
158 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
2月前
|
消息中间件 存储 数据采集
Apache InLong:构建10万亿级数据管道的全场景集成框架
Apache InLong(应龙)是一站式、全场景海量数据集成框架,支持数据接入、同步与订阅,具备自动、安全、可靠和高性能的数据传输能力。源自腾讯大数据团队,现为 Apache 顶级项目,广泛应用于广告、支付、社交等多个领域,助力企业构建高效数据分析与应用体系。
|
9月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ、Apache Seata 荣获 2024 开源创新榜单“年度开源项目”
近日,以“新纪天工、开物焕彩——致敬开源的力量”为活动主题的“重大科技成就发布会(首场)”在国家科技传播中心成功举办,并隆重揭晓了 2024 开源创新榜单,旨在致敬中国开源力量,传播推广开源科技成就,营造中国开源创新生态。2024 年开源创新榜单由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办,中国开发者社区承办,以王怀民院士为首组建评审委员会,进行研讨评审,面向中国开源行业领域,遴选具有创新性、贡献度和影响力的开源项目、社区、应用场景与开源事件。在评审出的 10 个年度开源项目中,Apache RocketMQ、Apache Seata 成功入选。
296 112
|
6月前
|
存储 SQL 关系型数据库
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
拉卡拉早期基于 Lambda 架构构建数据系统面临存储成本高、实时写入性能差、复杂查询耗时久、组件维护复杂等问题。为此,拉卡拉选择使用 Apache Doris 替换 Elasticsearch、Hive、Hbase、TiDB、Oracle / MySQL 等组件,实现了 OLAP 引擎的统一、查询性能提升 15 倍、资源减少 52% 的显著成效。
212 6
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
|
8月前
|
SQL 缓存 数据处理
数据无界、湖仓无界,Apache Doris 湖仓一体典型场景实战指南(下篇)
Apache Doris 提出“数据无界”和“湖仓无界”理念,提供高效的数据管理方案。本文聚焦三个典型应用场景:湖仓分析加速、多源联邦分析、湖仓数据处理,深入介绍 Apache Doris 的最佳实践,帮助企业快速响应业务需求,提升数据处理和分析效率
388 3
数据无界、湖仓无界,Apache Doris 湖仓一体典型场景实战指南(下篇)
|
8月前
|
存储 运维 监控
从 ClickHouse 到 Apache Doris:在网易云音乐日增万亿日志数据场景下的落地
日志数据已成为企业洞察系统状态、监控网络安全及分析业务动态的宝贵资源。网易云音乐引入 Apache Doris 作为日志库新方案,替换了 ClickHouse。解决了 ClickHouse 运维复杂、不支持倒排索引的问题。目前已经稳定运行 3 个季度,规模达到 50 台服务器, 倒排索引将全文检索性能提升7倍,2PB 数据,每天新增日志量超过万亿条,峰值写入吞吐 6GB/s 。
423 5
从 ClickHouse 到 Apache Doris:在网易云音乐日增万亿日志数据场景下的落地
|
9月前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
381 3
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
9月前
|
消息中间件 存储 Java
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
45岁资深架构师尼恩在其读者群中分享了关于如何提升RocketMQ顺序消费性能的高并发面试题解析。面对10W QPS的高并发场景,尼恩详细讲解了RocketMQ的调优策略,包括专用方案如增加ConsumeQueue数量、优化Topic设计等,以及通用方案如硬件配置(CPU、内存、磁盘、网络)、操作系统调优、Broker配置调整、客户端配置优化、JVM调优和监控与日志分析等方面。通过系统化的梳理,帮助读者在面试中充分展示技术实力,获得面试官的认可。相关真题及答案将收录于《尼恩Java面试宝典PDF》V175版本中,助力求职者提高架构、设计和开发水平。
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
|
7月前
|
消息中间件 存储 前端开发
MQ有什么应用场景
MQ有什么应用场景
|
9月前
|
分布式计算 DataWorks 数据处理
产品测评 | 上手分布式Python计算服务MaxFrame产品最佳实践
MaxFrame是阿里云自研的分布式计算框架,专为大数据处理设计,提供高效便捷的Python开发体验。其主要功能包括Python编程接口、直接利用MaxCompute资源、与MaxCompute Notebook集成及镜像管理功能。本文基于MaxFrame最佳实践,详细介绍了在DataWorks中使用MaxFrame创建数据源、PyODPS节点和MaxFrame会话的过程,并展示了如何通过MaxFrame实现分布式Pandas处理和大语言模型数据处理。测评反馈指出,虽然MaxFrame具备强大的数据处理能力,但在文档细节和新手友好性方面仍有改进空间。

热门文章

最新文章

推荐镜像

更多