4000-9696-28

消息中间件大全

2023年06月06日 16:01供稿中心:北大青鸟总部

摘要: 消息中间件就是利用高效可靠的消息传递机制进行异步的数据传输,并基于数据通信进行分布式系统的集成。通过提供消息队列模型和消息传递机制,可以在分布式环境下扩展进程间的通信。

在当今互联网的世界里,互联网行业的“三高”问题已经是常态,也因此我们必须要掌握一些可以应对三高问题的技术。

鉴于很多传统行业的小伙伴,对“三高”不是特别清楚,这里咱么先来解释下三高的概念。

首先,这个三高绝对不是你们所理解的,高血糖、高血脂、高血压,这三高,对于程序员来讲,估计这辈子也不会跟他们有什么关系(程序员都是精瘦型)。

而互联网行业的,所谓“三高”,高并发、高性能、高可用,简称三高(3H)。



为了应对这些三高问题,我们程序员可是,熬没了头发,每天都在思考如何解决这些问题;就在这个被动的解决问题的过程中,技术在快速的更新迭代,程序员的头发也在慢慢凋零。

在技术迭代的过程中,就出现了一种叫做消息中间件的技术,当然这个消息中间件是一个统称了,他里面还包含其他具体的技术。而这个消息中间件,我们又可以分成两个概念来理解它,一个消息,一个中间件

咱么先来看下什么是消息,在互联网的系统中,所谓消息,就是系统与系统通信所传递的信息,就好比我们人与人之间交流,也是要通过语言来传递的信息的,这个信息就可以类比成系统的中消息。

中间件的概念呢,其实就是底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件,说人话就是,处在一个非核心的位置,有它没它都行,并不影响系统正常运行,它在两个系统中相当于一个桥梁的作用。



知道了消息是啥,中间件是啥,那么下一个问题,什么是消息中间件。学英语的时候,大家经常说,每个字母都认识,字母组合在一起就不认识了,如果把消息和中间件组合在一起估计你也不认识了。

消息中间件就是利用高效可靠的消息传递机制进行异步的数据传输,并基于数据通信进行分布式系统的集成。通过提供消息队列模型和消息传递机制,可以在分布式环境下扩展进程间的通信。

在互联网行业,消息中间件已经是大型分布式系统中不可或缺的重要组件。看似简单,却解决了不少难题。比如分布式系统中的异步处理、系统耦合、流量削锋、分布式事务管理等。轻松实现了一个高性能,高可用,高扩展的系统。

今天咱么就来见识见识,几种主流的消息中间件技术。


常见的消息中间件

当今市面上有很多主流的消息中间件,比如:资历比较老的ActiveMQ,比较火的RabbitMQ,以及现在当红小生Kafka,还有自带光环RocketMQ(阿里巴巴开源),以及退居二线的ZeroM、MetaMQ等。

消息中间件的种类的还是非常丰富的,但是目前比较主流的当属Kafka、RabbitMQ了,接下来我们就对几个主流的中间件做一个简单的介绍。


RabbitMQ

RabbitMQ在2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一,支持多种客户端,如:Python、Java等,。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。


Kafka

Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统,之后成为Apache项目的一部分;它可以处理消费者规模的网站中的所有动作流数据(网页浏览,搜索和其他用户的行动),在大数据时代的今天,这是非常重要的一部分数据。Kafka高吞吐量的特性,使他同样在大数据领域备受欢迎。


ActiveMQ

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。它为企业消息传递提供高可用,出色性能,可扩展,稳定和安全保障。


RocketMQ

RocketMQ源自阿里,纯国产件,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。据说RocketMQ在设计时参考了Kafka,但并不是简单的复制,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用支撑了阿里多次双十一活动,可以说是经历过大考的中间件。


没有比较就没有伤害

上面咱么介绍了四种比较常用的中间件技术,但是在具体的工作我们还是需要选择其中的一种,如下图中,所体现的特性;就可以作为选择的一个参考。



如何选择

通常在我们选择中间件产品的时候;除了,从技术本身考虑之外,我们都会从两个方面进行考虑,一个是从公司基础实力,一个是业务场景。


公司实力

如果是中小型软件公司,一般多选择RabbitMQ,它管理界面用起来十分方便。而且RabbitMQ的社区十分活跃,如果实际开发中遇到什么问题,都可以从社区找到帮助,这点对于中小型公司来说十分重要,因为中小公司,技术水平比较薄弱;这也说明RabbitMQ是一个非常成熟的技术。

如果是大型软件公司,根据具体使用在RocketMQ和kafka之间二选一。一方面,大型软件公司,具备足够的资金搭建分布式环境,也具备足够大的数据量。而且还可以针对RocketMQ进行定制化开发。


业务场景

RocketMQ定位于非日志的可靠消息传输(日志场景也OK),目前RocketMQ在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。

Kafka主要特点是追求高吞吐量,如果一开始的目的就是用于日志收集和传输。适合于产生大量数据的互联网服务的数据收集业务。

RabbitMQ基于AMQP协议来实现,AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全;所以,对数据一致性、稳定性和可靠性要求很高的场景建议选择RabbitMQ。

其实更多是时候,是基于以上两种情况来进行综合考虑的,既要考虑的成本,又要考虑业务需求。


标签:
关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
BCVE视频特效课程
BCUI全链路UI设计
BCSP软件开发专业
BCNT网络工程师
启能职业教育基础课程
学习客户端下载
青鸟优师
青鸟云课堂
微信 公众号 咨询 顶部 首页
官方新版意见收集

*

官方新版意见收集

提交成功,感谢您的反馈。

我们会认真阅读和考虑每个用户的反馈。