乐趣区

关于运维:消息中间件为什么我们选择-RocketMQ

作者:李伟

说起音讯队列,ActiveMQ、RabbitMQ、RocketMQ、Kafka、Pulsar 等纷纷涌入咱们的脑海中,在如此泛滥的开源音讯队列产品中,作为一名合格的架构师如何给出高性价比的计划呢?商业化的产品暂不纳入选项中。

接下来我将从 选型因素、RocketMQ 的劣势 两个方面解释为什么抉择 RocketMQ。

选型因素


首先从公司、音讯队列服务提供者(个别是中间件团队)、最终用户三个角度来简略总结剖析。

一、从公司层面看,关注如下几点:


1. 技术老本

技术老本,个别蕴含服务器老本、二次开发老本、前期保护老本等,言而总之:都是钱。

服务器目前根本都应用云服务器,不同的云厂商的雷同配置的服务器性能也有肯定差别,服务器老本个别须要理解:云厂商机器性能、云厂商优惠、所需服务器配置、服务器台数、单台服务器目前的价格、单台服务器优惠后的价格等。

2. 人力老本

人力老本,个别蕴含现有技术人员老本、新人招聘老本。

新的技术选型对于目前的技术人员接受程度怎么样,学习的难易水平怎么等,都是须要思考的。如果太难的话,上线周期会变长、业务需要实现速度慢,甚至有人间接到职。

新人招聘老本,个别招聘一个新人有如下几个过程:简历筛选、预约面试、数轮面试、发 offer、承受 offer、正式入职、试用期、转正。这两头波及到猎头老本、人力资源沟通老本、面试老本、新人入职后环境适应老本等等。

3. 其余

目前处于不同阶段的互联网公司对于技术老本、人力老本有着不一样的要求,然而很多有肯定规模的公司实际上还是用“买买买”的心态来看待的:只有业务倒退疾速,买服务器、招人都不是问题,如果老本高了就做技术降老本、裁员。这不仅是员工之痛,也是业务之痛,更是公司之痛。

二、从中间件组层面看,关注如下几点:


1. 稳固

公司级的服务首要的一点就是稳固。领有稳固的组件、稳固的服务,业务能力井井有条的进行。所以说,无论什么时候,稳固都是王道。

2. 性能反对

不同的业务场景须要的性能也不尽相同,通常咱们会思考重试、死信机制,位点重置,定时提早音讯、事物音讯,主从切换,权限管制等方面。

3. 性能

目前蕴含写入提早和吞吐。

4. 治理平台

首先须要满足最终用户接入、查看、排障,管理员管控 topic、消费者不便等。治理平台有现成的最好,不便二次开发。

5. 监控、报警

监控报警是否欠缺、是否不便接入公司外部自研体系,或者行业的事实标准 Prometheus。

6. 运维 & 反对 & 开源社区

如果产品上线后,大部分工夫,咱们都是在做运维 & 反对。运维蕴含服务部署、迁徙、服务降级、解决零碎 Bug、用户应用答疑、治理平台和监控报警平台降级等。

7. 其余

咱们除了依赖本身以外,也能够借助社区的力量,同一个问题可能他人遇到过并且提交过 PR,曾经失去解决,咱们就能够以此作为借鉴。所以社区的沉闷状况也是十分重要的思考。

三、从最终用户(个别蕴含业务后端研发以及他们的 Leader)看


1. 稳定性

对于业务的研发和他们的 Leader,他们的外围工作是实现业务逻辑。如果一个服务三天两头总是有问题,对于他们来说是比拟致命的,所以稳定性是比拟外围的一部分。

2. 革新现有我的项目的难度

旧我的项目革新其实是业务研发接入新中间件实际操作最多的局部。

3. 新我的项目接入是否便捷

是否便捷接入跟他们的工作量有着间接的关联。

4. 与目前的 App 微服务框架兼容怎么

新我的项目的接入和公司微服务框架兼容都比拟容易。个别中间件在提供服务时都会思考业务研发接入的便利性。

RocketMQ 的劣势


上面将依照选项因素的要求,剖析 RocketMQ 在这方面的劣势。

一、RocketMQ 如何解决和敌对面对公司层面的诉求


1. 技术老本

就技术成熟度而言,在经验阿里双十一数万亿洪峰、微众银行、民生银行、蚂蚁金服、安全、字节跳动、快手、美团、京东、网易等各种行业大厂的考验后,就显而易见了。

RocketMQ 对于服务器的配置要求不高,一般的云主机都能够。已经咱们验证 8C 16G 500G SSD 的 2 主 2 从的集群,发送 tps 能够到 4~5w,生产 tps 峰值 20w +,稳固在 8w~9w。并且,还能依据业务理论的需要无感的横向扩大。

综合而言,技术老本绝对可控且人才多。

2. 人力老本

人力老本次要是现有的技术人员的学习老本、招新人的老本。

RocketMQ 是 java 开发的,代码也十分稳固、有条理,各个版本之间除了性能有差别之外,Api、传输协定简直没有太多变动,对于降级而言也更加不便。

java 也是目前中间件采纳的比拟支流的语言,应用的技术人员十分宽泛。RocketMQ 在金融行业比方:微众银行、民生银行、蚂蚁金服、安全;其余行业公司,比方阿里、字节跳动、快手、美团、京东、网易等与大量中小企业都在应用,候选人范畴绝对较大。

RocketMQ 社区也比拟沉闷,钉钉群、微信群、QQ 大众多,社区文档十分丰盛和欠缺,原理分析视频、文档也十分多,十分易于学习和入门。

上面是钉钉群,欢送大家加群留言、答疑。

对于 java 方面的音讯队列方面的人才相比 C/C++、C#、Python、Go 等还是更多的:支流的 Kafka 是 scala + java、pulsar 是 java,对于招聘也有极大的劣势。

综合而言,RocketMQ 技术员对于人力老本比拟敌对。

二、从中间件组层面看,RocketMQ 是如何提供优良的能力,为业务保驾护航呢?


1. 稳定性

金融级牢靠、阿里双十一稳固反对万亿级音讯洪峰,在笔者之前所在公司也有过 2 年 + 零事变的佳绩

2. 功能丰富,反对的场景泛滥

  • 重试、死信机制,敌对、无感的业务重试机制。
  • 程序音讯、事物音讯
  • 万级 Topic 数量反对
  • 音讯过滤
  • 音讯轨迹追踪
  • 主从主动切换
  • 原生反对 Prometheus 监控
  • 原生反对易用治理平台:RocketMQ Console
  • 拜访权限管制(ACL)

3. 性能

  • RocketMQ 能够反对 99.9% 的写入提早在 2 ms,其余的开源音讯队列中间件根本都是大于 5 ms;目前大部分音讯队列两头间都反对横向扩大,吞吐上横向扩大简直都能够满足。RocketMQ 的在滴滴做的性能测试: _https://developer.aliyun.com/… _, 大家参考。
  • 发送、生产 tps 和 kafka 一个数量级,Topic 数量剧增对于性能影响较小。

4. 治理平台

RocketMQ Console 原生反对:
https://github.com/apache/roc…

5. 监控、报警

RocketMQ Exporter 原生反对 Prometheus:
https://github.com/apache/roc…

6. 运维 & 反对 & 开源社区

  • 无 zk 等第三方依赖,开箱即用
  • 社区钉钉群、微信群、QQ 群十分沉闷,钉钉群、微信群有问必答。
  • 社区最近新来一位小姐姐 Commiter,团队也在一直壮大。

综合看来,RocketMQ 稳固、牢靠、性能好,开箱即用,不依赖 Zookeeper,零碎的稳定性更高,复杂度更小。监控报警等周边设施欠缺,场景反对全,社区沉闷、文档丰盛,是中间件团队的不二之选。

三、对于最终用户:业务研发、业务研发 Leader,他们的外围担心是提供的技术是否稳固牢靠、是否疾速不便的接入


从中间件组层面看这个问题时,RocketMQ 稳固、牢靠,那对于接入是否敌对呢?

RocketMQ 提供 java 原生客户端、Spring 客户端,C++ 客户端、Python 客户端、Go 客户端等多类型、多语言的客户端,对于各种我的项目都能够对立接入。

微服务框架中 Spring Cloud 根本曾经成为事实标准,RocketMQ 反对 Spring boot Starter 和 Spring Cloud Function 等多种形式交融入微服务框架,对于 Spring 体系反对更加方便快捷。

Kafka vs RocketMQ


理论中,很多人应该面临过 RocketMQ vs Kafka,Kafka 适宜对于提早不敏感、批量型、Topic 数量可控、对于音讯失落不敏感的场景。比方大数据场景的 MySQL-2Hive、MySQL-2-Flink 的数据流通道,日志数据流通道等。

RocketMQ 实用于金融转账音讯、订单状态变更音讯、手机音讯 Push 等业务场景。这些场景 Topic 数量通常过万,对于音讯提早和失落极度敏感,数据通常是论条解决。对于海量数据的问题,个别地横向扩容齐全能够解决。

适合的场景抉择适合的产品,万能的产品是不存在的,都是折中,都是取舍。

作者介绍


李伟,Apache RocketMQ 社区 Commiter,Python 客户端我的项目负责人, Apache RocketMQ 北京社区联结发起人,Apache Doris Contributor。目前就任于腾讯,次要负责 OLAP 数据库开发,对分布式存储系统设计和研发有丰盛教训,也热衷于常识分享和社区活动。

RocketMQ 学习材料


阿里云知行实验室提供一系列的 RocketMQ 在线实操环境,蕴含操作文档、ubuntu 试验环境,大家随时尝试玩玩:

  • Apache RocketMQ 开源入门最佳实际:

https://start.aliyun.com/cour…

  • 《RocketMQ 分布式消息中间件:外围原理与最佳实际》随书实战:_https://start.aliyun.com/cour…
  • 在 Spring 生态中玩转 RocketMQ:

https://start.aliyun.com/cour…

试验预览图如下:

其余资源

  • RocketMQ vs. ActiveMQ vs. Kafka:

http://rocketmq.apache.org/do…

  • RocketMQ 源码:

https://github.com/apache/roc…

  • RocketMQ Exporter 源码:

https://github.com/apache/roc…

  • RocketMQ Spring 源码:

https://github.com/apache/roc…

  • RocketMQ C++ 客户端源码:

https://github.com/apache/roc…

  • RocketMQ Python 客户端源码:

https://github.com/apache/roc…

  • RocketMQ Go 客户端源码:

https://github.com/apache/roc…

  • RocketMQ Console 源码:

https://github.com/apache/roc…

  • RocketMQ Flink Connector 源码:

https://github.com/apache/roc…

  • RocketMQ 如何保障音讯牢靠:

    [https://mp.weixin.qq.com/s/imLTVwgm8MOiY1_5s3rdFQ](https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247502152&idx=1&sn=3c356a4b65d50e964f0350a13ba08df3&scene=21#wechat_redirect)
    
  • 大揭秘!RocketMQ 如何治理生产进度:

    [https://mp.weixin.qq.com/s/rHs9L1gTuFs05Cs2F4JXOw](https://mp.weixin.qq.com/s?__biz=MjM5NTk0NjMwOQ==&mid=2651114644&idx=1&sn=fa93f0264989b536153dc683a246601a&scene=21#wechat_redirect)
    
退出移动版