消息中间件:

协助程序之间异步通信

一、消息中间件的作用:

削峰填谷
异构集成
解耦
异步隔离

二、市场上在用的消息中件特点:

RocketMQ:(近几年用的越来越多了,文档变多)
开源分布式消息中间件,不遵循JMS规范,吞吐能力强,最新发版4.7,社区活跃,技术比较成熟;(吞吐量十万级以上)

Kafka:
分布式消息中间件,不遵循JMS规范,吞吐能力强,更倾向于数据流处理,主要应用于大数据流处理和日志处理,为处理日志而生;(吞吐量十万级以上)
(专门做数据流处理的服务,严格意义上不算消息中间件)
kafka topic随着增多 吞吐能力急剧下降,kafka topic可以很大 但不可以很多

ActiveMQ:
分布式消息中间件,高性能,开源,吞吐能力一般(万级)遵循JMS规范,技术成熟 支持很多种协议,资料多; (吞吐量万级)

RabbitMQ:
Erlang语言开发,遵循JMS规范,高性能,开源,吞吐能力一般(万级),用在分布式系统中存储转发消息、具有高可用;(吞吐量万级,处理数据的速度是微秒级别,其他MQ都是毫秒级))

这些MQ的不同:处理都很快但应用场景不一样、吞吐能力不一样,发展早晚不一样

三、消息中间件选型的关键&选型的原则:

关键需求(刚需):
是否支持集群;是否支持持久化;消息重试;分布式事务;顺序消息;消息延时支持;消息积压;消息回溯;

选型的要点及原则:
寻求满足的订单;选型过程最好做好量化记录;多角度思考;合适就是最好的,不要追求高性能功能全面;

选型建议:
区分关注点。确保只针对核心关注点进行选择,给出选择的截止时间,并按时进入到项目实战准备,再多的理论分析都不如真正使用过后的感受深入

其他考虑因素:
产品与当前技术栈是否匹配;产品使用推广度;产品的高可用性;产品的稳定性;产品的活跃度、资料等

四、主流消息中间件18个方面对比&发展趋势

五、RocketMQ与Kafka性能对比、特点、运维对比

水平拓展:
RocketMQ支持直接的水平拓展,无需对每个主题扩容,kafka则需要对每个主题执行分片重分配策略,缩容也是如此。

持久化:
RocketMQ是顺序写的方式,kafka每个主题存储的数据存储是分开的。在删除主题的时候RocketMQ不会删除主题数据,kafka会删除主题存储的数据。Kafka支持单主题持久化时间配置,RocketMQ不支持。

消息检索:
RocketMQ提供丰富的消息查询功能,kafka不提供直接的查消息接口。

回溯消费:
RocketMQ只支持时间维度回溯,kafka支持指定分区offset位置的回溯,可以实现消息重试。

消息重试:
RocketMQ有重试队列支持消息重试机制,kafka不支持。

注: 1、消息入队是单条超过4K、10K是个瓶颈,会有明显的性能下降
2、消息大小可以在集群配置中限制、发送端限制



如果想赏钱,可以用微信扫描下面的二维码,一来能刺激我写博客的欲望,二来好维护云主机的费用; 另外再次标注博客原地址 itnotebooks.com 感谢!

手把手搭建CI/CD(一)

gitlab + tekton + argoCD

阅读全文

自动分析国家关于每年的法定节假日安排公告,生成查询接口自动判断作息日

背景 工作中经常遇到需要根据作息去做排班系统、跑定时报表任务、统一告警通道、巡检等等场景,之前是比较粗暴的区分周一~周五、周六和周日这样,遇到法定节...

阅读全文

Golang Terraform 创建阿里云ECS云主机

封装NewTerraform方法 将Terraform的环境相关信息都在这个方法内定义完成 1. Terraform工作目录定义 2. Plugins初始化,考虑到在线初始化太慢,这里是提前下...

阅读全文

欢迎留言