什么是分布式消息中间件
分布式系统架构,简单说就是多个系统协调处理一个请求。但是,分布式系统架构有可能会有很高的耦合度。引入分布式消息中间件,可以很好地解耦合。
什么是消息中间件
- 利用高效可靠的消息传递机制进行平台无关的数据交流
- 给予数据通信来进行分布式系统的集成
- 通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
常用消息中间件
- ActiveMQ
- RabbitMQ
- Kafka
- RocketMQ
消息中间件核心设计
消息队列MQ可以联结producer和consumer之间的一个纽带。
本质
一种主要负责数据的接收和传递,性能一般高于普通程序。
5大核心
- 协议
- 持久化机制
- 消息分发机制
- 高可用设计
- 高可靠设计
下面我们简单介绍下这5大核心。
协议
协议是计算机之间通信时共同遵从的一组约定。 协议的三要素:
- 语法
- 语义
- 时序
消息中间件常用协议:
- OpenWire
- AMQP
- MQTT
- Kafka
- OpenMessage
AMQP协议
AMQP(Advanced Mesage Queuing Protocol)是高级消息队列协议。 特性:事务支持、持久化支持,出生于金融行业,在可靠性消息处理上具备天然的优势。
MQTT
MQTT消息队列遥测传输是IBM开发的即时通讯协议,物联网系统架构的重要组成部分。
特性:轻量、结构简单、传输快,没有事务支持,没有持久化相关设计。
应用场景: 计算能力有限、低宽带、网络不稳定的场景。
Open Message协议
OpenMessaging是国内首个发起的分布式消息领域国际标准。
特性:结构简单、解析快、有事务设计、有持久化设计。
Kafka协议
Kafka协议是基于TCP的二进制协议。消息内部是通过长度来分隔,由一些基本数据类型组成。
特性:结构简单、解析快、无事务设计、有持久化设计。
持久化
所谓持久化,就是把数据存入磁盘,不让数据因服务重启而消失。 一般有两种方式,写入文件系统和存入数据库。目前,大部分分布式消息中间件都支持写入文件系统,。
消息分发
一般分两种方式。 一种是生产者向消费者推送消息,另一种则是消费者向生产者拉取消息。 一般包括有发布订阅、轮询分发、公平分发、重发和消息拉取。
高可用
高可用性是指产品在规定的条件和规定的时刻或时间区间内处于可执行规定功能状态的能力。 做法:
- 主从共享数据的部署方式
- 主从同步部署方式(可以解决负载均衡的问题)
- 多主集群同步部署方式
- 多主集群转发部署方式
高可靠
高可靠性是指系统可以无故障地持续运行。比如一个系统从来不崩溃、报错,或者崩溃、报错的几率较低,那就是高可靠。