3-28 6 views
消息中间件:
协助程序之间异步通信
一、消息中间件的作用:
削峰填谷
异构集成
解耦
异步隔离
二、市场上在用的消息中件特点:
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、消息大小可以在集群配置中限制、发送端限制
