RabbitMQ

RabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递。

AMQP协议

核心概念

  1. server:又称broker,接受客户端连接,实现AMQP实体服务。

  2. connection:连接和具体broker网络连接。
  3. channel:网络信道,几乎所有操作都在channel中进行,channel是消息读写的通道。客户端可以建立多个channel,每个channel表示一个会话任务。
  4. message:消息,服务器和应用程序之间传递的数据,由properties和body组成。properties可以对消息进行修饰,比如消息的优先级,延迟等高级特性;body是消息实体内容。
  5. Virtual host:虚拟主机,用于逻辑隔离,最上层消息的路由。一个Virtual host可以若干个Exchange和Queue,同一个Virtual host不能有同名的Exchange或Queue。
  6. Exchange:交换机,接受消息,根据路由键转发消息到绑定的队列上。
  7. banding:Exchange和Queue之间的虚拟连接,binding中可以包括routing key
  8. routing key:一个路由规则,虚拟机根据他来确定如何路由 一条消息。
  9. Queue:消息队列,用来存放消息的队列。

rabbitMQ集群模式

  1. 主备模式:实现rabbitMQ高可用集群,一般在并发量和数据不大的情况下,这种模式好用简单。又称warren模式。(区别于主从模式,主从模式主节点提供写操作,从节点提供读操作,主备模式从节点不提供任何读写操作,只做备份)如果主节点宕机备份从节点会自动切换成主节点,提供服务。

  2. 集群模式:经典方式就是Mirror模式,保证100%数据不丢失,实现起来也是比较简单。

  • 镜像队列,是rabbitMQ数据高可用的解决方案,主要是实现数据同步,一般来说是由2-3节点实现数据同步,(对于100%消息可靠性解决方案一般是3个节点)

        3.多活模式:这种模式也是实现异地数据复制的主流模式,因为shovel模式配置相对复杂,所以一般来说实现异地集群都是使用这种双活,多活的模式,这种模式需要依赖rabbitMQ的federation插件,可以实现持续可靠的AMQP数据。

rabbitMQ部署架构采用双中心模式(多中心)在两套(或多套)数据中心个部署一套rabbitMQ集群,各中心的rabbitMQ服务需要为提供正常的消息业务外,中心之间还需要实现部分队列消息共享

原文地址:https://www.cnblogs.com/KL2016/p/14888025.html