当前位置: 信鸽 >> 信鸽的繁衍 >> 消息代理消息中间件和消息队列的区别和联
如果你是IT从业人员或者对IT比较感兴趣,基本都听说过消息代理、消息中间件和消息队列这几个词汇。今天郑州翔天信鸽就为大家分享一下它们的区别和联系。
ONE
简单来说,中间件其实就是帮助应用程序与其他应用程序、网络、硬件、操作系统交互或者通信的软件。它是相对于架构体系的,并不涉及具体的业务逻辑,也不涉及底层的硬件逻辑,用于用户数据交换和管理,可以起到“中介”的作用。任何中间件必然是为了解决特定领域的某个/某些问题而出现的。
TWO
消息可以说是一个数据传输单位,它包含了创建时间、通道/主题信息、输入参数等全部数据;队列是一种FIFO的数据结构。编程语言一般都内置队列实现,可以作为进程间通讯的方法。
使用队列中最常见的场景就是生产者/消费者模式:生产者生产消息放到队列中,消费者从队列里面获取消息消费。
准确的来说,消息队列是一种可以实现生产者到消费者单向通信的通信模型,一般大家说MQ指的是实现了这个模型的中间件。
可以说,消息中间件是现在企业架构中不可或缺的组成部分,虽然不同的中间件实现方案不同,但都具备以下这几个特点:
(1)分布式。其实消息中间件解决的就是分布式系统之间消息传递的问题,消费者可以分布在多台服务器上,一方面降低了由于单点故障引起的消息队列阻塞的风险,另一方面也很容易横向扩展。
(2)持久可靠。消息队列一般会把接收到的消息存储在本地硬盘上,保证消息不会在未消失之前莫名丢失。
(3)高性能和高吞吐量。比如RocketMQ有亿级消息堆积能力,广泛应用在阿里系的各种高并发场景下。
THREE
消息代理是一种架构模式,主要用于消息验证、变换、路由。不同的消息中间件架构和实现各不相同,但大部分都实现了Broker,其实就是消息中间件服务器,是中间件的核心。