RabbitMQ运维篇之部署与用户管理(一)

  

一、认识RabbitMQ及用途消息队列(MQ)

相对于一些大点的公司都会使用这个MQ,比如像卡夫卡,RabbitMQ, activeMQ, rocketMQ主要用于系统与系统之间,或者程序与程序之间进行数据的传递,那么作为消息中间件,我们可以将它作为消息代理服务器,最主要的就是作用就是系统之间的信息进行“结藕”,MQ是数据可靠性的重要保障。

  

那么说起mq的作用之前呢,比如我们以前会遇到什么问题?
 RabbitMQ运维篇之部署与用户管理(一)
1)比如说现在我们有两个系统,一个系统,一个系统B,那么这两个系统可以把它理解成一个订单系统,一个是后台的支付系统,那么这两个系统之间,你调用我的,我调用你的,也就是数据之间进行一个相互的传递。那么按照之前的做法来说,来回的传递,就出现问题了,比如说,不管是一个系统还是B系统中间任何一个系统出现了问题,我们的消息就发送不出去了,那么像碰到这种情况下,我们就需要额外的去编写一些程序,来保证我们的消息成功送达,比如说增加缓存,增加重试次数,这就需要额外的编码,这就需要编码的工作量也是不小的。

  

2)另外就是数据传递过程中,这两个系统都是java开发的还好,比如一个是java开发的一个是python开发的,那么在这两个系统之间进行数据传递的过程中,那么麻烦就很大了,在这里面平台不一样语言不一样,进行传递的接口也不一样,这在我们无形中带来了很大的问题。

  

3)对于系统一与系统b之间如果系统出现了问题,我们甚至都不知道是什么原因造成的,比如系统的接口变了,导致系统b接收不到哪些,系统b不知道出现哪些问题,我们没办法对问题进行切全,那么在线上调试与运维的过程中,这也是一个必然灾难性的后果。

  

综上所述的话,直接调用的话称为藕严重的耦合,这两个缺了哪一个都不能正常工作,那么怎么解决呢,这个时候就需要mq去解决了。

  

所以mq叫做消息代理服务器,可以看到上面的mq的基本架构图系统一与系统b不再直接通信,中间增加了一台mq的消息代理服务器,所有的消息都往这个消息代理服务器上去发送,那么这个消息代理服务器本身来说它具备了一些高可用,高并发的特性,可以估且的认为它是非常稳定的,至少比我们开发的系统来说要稳定的多的多,不用担心当机,无法提供服务,那么在这个基础之上,所有的系统把这个消息放出去,再由这个消息服务器,根据数据的情况分别的转发或者分发

  

那么我们数据传递的目的,那么这么做有这么一个好处
首先我们系统之间不再进行之间的通信,那么它就完成这个节藕的工作,它完全面向一个中间人来做
其二的话MQ它是一个国际的标准,它在底层遵循一个叫做amqp高级消息队列协议,那么在这个底层的话因为它是一个国际标准,因此系统一与系统b,我们不管是什么样的系统开发的,只要遵循了数据传输的规范,那么就可以在这里面完成通过MQ进行数据的传递,这是数据统一的协议,另外就是数据切全的过程,那么在切全的过程中,你会发现,我们估且认为MQ这是一个稳定的服务。系统一与系统b进行数据传输,如果系统一把数据,送到MQ里面,那么系统一的任务就完成了,至于系统b把我们的数据拿走,那是系统b的事,那么系统一的事完成了,那么如果真的出现了问题,比如运维工程师发现这个程序没有执行,那么看着系统的发送成功了,那么剩下的问题就是连带MQ,到系统b这一块进行一个处理与跟踪,那么MQ并提供强大的图形化管理页面,我们可以轻易的将之前发送的数据进行跟踪与管理。这也是非常的重要

  

那么说到mq,它有这么一个好的特性,可以总结一句话,mq解决了在这个系统之间进行数据传递的耦合性问题,使用mq几乎适用于我们所有的系统调用或者是分布式项目

  

二,什么是RabbitMQ ?
在我们市场上有各种各样的mq,但是RabbitMQ是全世界最火的开源消息代理服务器,在全世界拥有超过35000个项目部署在RabbitMQ,用的人多,而且解决一些相关的问题也就很快,这个兔子英文翻译为兔子,这个也是一个整个消息中间件的龙头老大,也就是我们使用RabbitMQ很多的方案不用自己去考虑,因为全世界的工程师都为这个RabbitMQ添砖加瓦,那么这个RabbitMQ的最新版本的是3.8.2
而且RabbitMQ支持几乎所有的操作系统与编程语言,提供了高并发,高可用的成熟方案,支持多种消息协议,易于部署与使用

RabbitMQ运维篇之部署与用户管理(一)