文章目录
[隐藏]

一、消息中间件简介

消息中间件大量应用于分布式系统的数据通信,通过提供消息传递和消息排队模型,能够实现系统松耦合、异步和并行处理,从而提高了系统的可扩展性、易维护性和吞吐性。
在消息中间件中,常见的角色大致包括Producer(生产者)、Consumer(消费者)、Broker(中转角色),典型的应用模型如下图所示:
消息中间件的产品有很多,常见的有RabbitMQ、Kafka和RocketMQ。
  • Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。
  • RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。
  • RocketMQ是阿里开源的消息中间件,它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,但并不是Kafka的一个Copy,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。

阿里中间件团队对三者做过一个测试,性能对比结果如下:

二、Rabbitmq集群部署

Openstack中高可用消息队列服务借助Rabbitmq消息队列集群实现,分别在三个控制节点安装Rabbitmq,并构建cluster,然后设置HA模式,部署脚本install-configure-rabbitmq.sh如下:

配置openstack其他组件时,直接使用Rabbitmq节点及端口,并配置重试等选项,设置HA模式,如下:

三、参考文档

http://queues.io/

https://www.amqp.org/

https://github.com/rabbitmq

https://www.rabbitmq.com/install-rpm.html

https://docs.openstack.org/ha-guide/shared-messaging.html

http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/

四、系列文章

Openstack云平台脚本部署”系列文章目录如下:

Openstack云平台脚本部署之概述(零)

Openstack云平台脚本部署之基础环境配置(一)

Openstack云平台脚本部署之Galera高可用集群配置(二)

Openstack云平台脚本部署之RabbitMQ高可用集群部署(三)

Openstack云平台脚本部署之MongoDB配置(四)

Openstack云平台脚本部署之Memcached配置(五)

Openstack云平台脚本部署之Keystone认证服务配置(六)

Openstack云平台脚本部署之Glance镜像服务配置(七)

Openstack云平台脚本部署之Nova计算服务配置(八)

Openstack云平台脚本部署之Neutron网络服务配置(九)

Openstack云平台脚本部署之Dashboard配置(十)

Openstack云平台脚本部署之Cinder块存储服务配置(十一)

Openstack云平台脚本部署之Ceilometer数据收集服务配置(十二)

Openstack云平台脚本部署之Aodh告警服务配置(十三)

Openstack云平台脚本部署之Ceph存储集群配置(十四)

Openstack云平台脚本部署之计算节点服务配置(十五)

Openstack云平台脚本部署之增加计算节点配置(十六)