消息系统
一、简介
消息队列(Message Queue)字面理解,就是一个队列,具有先进先出的特性。
消息系统,举个例子来说吧,它更像一个中间件,比如说菜鸟驿站。前几天在网上买了一双鞋子到了,然后快递小哥给你打电话,但你现在在上班走不开,怎么办呢,到这里很多人都会想到菜鸟驿站,对的,快递小哥把鞋子放到菜鸟驿站,然后等你下班的时候来取就好,消息系统也是一样的,发送者将消息推送到消息系统,然后接收者来拉取。
二、消息系统的作用
1、应用解耦:多个应用可通过消息队列对消息进行处理,应用之间相互独立,互不影响。
如同好几个快递同时到达,其中有中通、圆通、邮政、顺丰,如果没有菜鸟驿站,你就得挨个去不同的地点,这样你会受不了,有了菜鸟驿站,你只需去一趟菜鸟驿站,就可以全部收到。


2、异步处理:相比于串行和井行处理,异步处理可以减少处理的时间;
一个快递到了,快递小哥给你打电话,但是你走不开,这就陷入一个僵局,快递小哥只能一直等你,然后其他的快递就送不了,只有等你取走快递,才能继续工作,太浪费时间;现在有了菜鸟驿站之后呢,只需要将快递放在菜鸟驿站,快递小哥就可以继续送其他的快递,然后等你忙完之后,来菜鸟驿站领取就行。

3、流量消峰/数据限流:流量高峰期,可通过消息队列来控制流量, 避免流量过大而引起应用系统崩溃;
比如说:前几天买了好多的快递,都是中通的,今天都送到了,但是快递太多了,你只能一趟一趟的去领取,没有休息的时间,最后崩溃了,现在有了菜鸟驿站,就给了你休息的时间,不至于崩溃。
三、消息系统的分类
1、点对点消息系统(Peer-to-Peer):一般基于polling(轮询)或pull(拉取)接受消息;发送到队列中的消息被一个而且只能是一个接收者接受,即使有多个接收者在同一队列监听消息;即支持异步“即发即弃”的消息传送方式,也支持同步请求/应答传送方式。

2、发布/订阅消息系统:发布到一个主题的消息,可以被多个订阅者所接收;发布/订阅即可基于Push消费数据,也可基于Pull或者Polling消费数据;解耦能力比P2P模型更强。

四、各种消息系统
RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
ActiveMQ是由Apache出品,ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。它非常快速,支持多种语言的客户端和协议,而且可以非常容易的嵌入到企业的应用环境中,并有许多高级功能。
RocketMQ出自 阿里公司的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进,消息可靠性上比 Kafka 更好。RocketMQ在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理等。
Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统,之后成为Apache项目的一部分。Kafka系统快速、可扩展并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。
本文中部分来自于网络,如有侵权,请联系博主进行删除

浙公网安备 33010602011771号