消息中间件:

协助程序之间异步通信

一、消息中间件的作用:

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

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

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 感谢!

Terraform操作阿里云ECS,批量创建ECS云主机

利用Terraform实现运维平台的IaaS层,由于公司用的全是阿里云,所以以阿里云为例,不过既然是Terraform,其实无需太在意这个,基类封装好,什么云可以,甚至...

阅读全文

error: command ‘gcc’ failed with exit status 1 -Python3.6.9 MacOs Catalina

Shell error: command 'gcc' failed with exit status 1 -Python3.6.9 MacOs Catalina 1 ...

阅读全文

嵌套阿里云数据库自治服务DAS监控大盘

通过给阿里云创建RAM用户并授予STS权限策略,将DAS(原HDM)控制台免登录嵌套到自建的运维平台中 https://help.aliyun.com/document_detail/125772.html?spm=...

阅读全文

欢迎留言