消息总线和消息队列的区别是:消息总线对应于服务总线(Service Bus),应用于SOA、EIP领域;: 消息队列是指利用高效可靠的消息传递机制 进行与平台无关的 数据交流,并基于数据通信 来进行分布式系统的集成。
一、消息总线和消息队列的区别
消息总线(Message Bus)
消息总线对应于服务总线(Service Bus),应用于SOA、EIP领 域,我们熟知的ESB就是这个领域的一个重要产品。所谓总线,就是像主板里的数据总线一样, 具有数据的传递和交互能力,各方不直接通信,使用总线作为标准通信接口。一般情况下,ESB 本身就可以作为消息总线和服务总线来便用,显然ESB不是一个MQ,它可以对接几个MQ,或者 内部包装几个MQ,用来传递消息和转发。
消息队列(Message Queue)
消息队列是指利用高效可靠的消息传递机制 进行与平台无关的 数据交流,并基于数据通信 来进行分布式系统的集成。是一个专门处理消息的服务器或中间件,接收消息,(存储息)分发消息。比如ActiveMQ,RabbitMQ,Kafka,RocketMQ,Pulsar等。
应用场景
根据消息队列的特点,可以衍生出很多场景,或者说很多场景都能用到。下面举几个例子:
1)异步通信
注册时的短信、邮件通知,减少响应时间;
2)应用解耦
信息发送者和消息接受者无需耦合,比如调用第三方;
3)流量削峰
例如秒杀系统。
消息队列clientAPI面向技术,消息总线clientAPI面向技术+业务。消息队列的clientAPI大都面向协议、通信实现,面向可用性以及高性能,如果归类一下那就是面向技术,除了通信场景它不会去模拟业务场景。而消息总线需要带着业务场景去实现需要支持的机制。当你去搜索任何一个消息队列的时候,它的advantage里都有一条:生产者与消费者解耦。
延伸阅读:
二、Kafka
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
以上就是关于消息总线和消息队列有何区别的内容希望对大家有帮助。