一 .初识消息队列/RabbitMQ详解

1. 什么是消息队列

图1:消息队列

 

图1就是一个消息队列的使用结构图,比方说买票系统需要生成订单,不是直接就去调用订单系统,而是通过消息队列,把生成订单的数据,写入消息队列中去,然后订单系统就可以到消息队列中去订阅获取数据,再生成订单;消息队列有个特点,先进先出,先存进去的就先被取出来,取出来以后,数据在队列中被删除,消息数据在消息队列中是持久化存储的;只要是没有被取出,就会一直存储在消息队列中

 

如上图,就把买票系统和生成订单系统做了解耦;即时是生成订单系统发生故障了,并不影响买票系统,依然可以把消息先写入消息队列;等生成订单系统正常了,再继续去生成订单;这里也会涉及到三个名词---生产者/消费者/队列;写入消息到队列的被称为生产者,在消息队列中取出数据的被称为消费者;

 

在大数据高并发的情况下,服务器压力变大,如果使用消息队列,可以让生产者服务器做集群,消费者服务器也做集群;如图2。

图2

 

如果生产者服务器不能满足需求了,可以来多态服务器,来同时处理,写入消息到消息队列,消费者服务器如果处理能力不够,也可以增加多个消费者服务器,来同时消费消息队列里的数据;从而大大的提高系统的处理能力。

 

消息队列不仅可以实现一方写入,一方取出,也可以是一方既可以写入,也可以取出;既做生产者,也做消费者;如图3

图3

 

怎么样,如上图,就可以做一个多个客户端之间的即时通信了!

经过以上介绍,我们了解了什么是消息队列在我们技术开发中的应用,消息队列能给我们带来什么。他其实就是一个第三方的一个队列;让要做的事情能够排队进行;让多个进程协作完整业务处理;当然了,消息队列也是一个独立的进程;现在业界已经有很多已经成型的消息队列引擎;下面就给大家列举一些。

.  ZeroMQ

. 推特的Distributedlog

.  ActiveMQ:Apache旗下的老牌消息引擎

.  RabbitMQ、Kafka:AMQP的默认实现。

.  RocketMQ

.  Artemis:Apache的ActiveMQ下的子项目

.  Apollo:同样为Apache的ActiveMQ的子项目的号称下一代消息引擎

以上这些消息队列引擎,都已经比较成型,其中RabbitMQ支持的功能非常丰富,RabbitMQ支持集群化,高可用部署架构,支持消息高可靠;支持多种编程语言;现在的技术开发都追求支持高可用,集群,可靠性;所以,学习RabbitMQ是我们的首选;这里我就准备把RabbitMQ给同学们做以介绍,从RabbitMQ的环境准备、环境部署;使用RabbitMQ做一个开发Demo;包括还有RabbitMQ的进阶,支持集群的;RabbitMQ的路由配置。

2. 消息队列RabbitMQ

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。

RabbitMQ服务器是用Erlang语言编写的;可以支持的操作系统有:Linux/WindowsNT 到 10/Windows Server2003 到 2016/macOS/Solaris/FreeBSD/TRU64/VxWorks

RabbitMQ支持下列编程语言:C#/Python/Java/Ruby/PHP/JavaScript/Go/Elixir/Objective-C

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章