分布式消息中间件设计概述
消息中间件概述
什么是消息中间件
- 利用高效可靠的消息传递机制进行平台无关的数据交流;
- 并基于数据通信来进行分布式系统的集成;
- 通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信;
消息中间件的应用场景
跨系统数据传递,高并发流量削峰,数据异步处理……等待
常用的消息中间件
ActiveMQ,RabbitMQ,Kafka,RocketMQ
消息中间件核心设计
本质
一种具备接受请求、保存数据、发送数据等功能的网络应用。和一般网络应用程序的区别是它主要负责数据的接受和传递,所以性能一般都高于普通程序
5大核心组成
- 协议
- 持久化机制
- 消息分发机制
- 高可用设计
- 高可靠设计
协议
协议是计算机之间通信时共同遵从的一组约定,都遵守相同的约定,计算机之间才能相互交流。是对数据格式和计算机之间交换数据时必须遵守的规则的正式描述。
协议3要素
- 语法:即数据与控制信息的结构或格式
- 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
- 时序:即事件时序顺序的详细说明
常见协议
HTTP协议3要素
语法:http规定了请求报文和响应报文的具体格式。
语义:客户端主动发起的操作称为请求。
时序:一个请求对应一个响应。
消息中间件常用的协议:OpenWire、AMQp、MQTT、Kafka、OpenMessage
AMQP协议
MQTT协议
Open Message协议
Kafka协议
持久化
简单来说就是将数据存入磁盘,而不是存在内存中随服务器重启而消失,使数据能够永久保存叫做持久化
常用持久化方式
— | ActiveMQ | RabbitMQ | Kafka | RocketMQ |
---|---|---|---|---|
文件系统 | 支持 | 支持 | 支持 | 支持 |
数据库 | 支持 | / | / | / |
消息分发
为什么要有消息分发策略
常用的消息中间件分发策略
高可用
高可用性是指产品在规定的条件和规定的时刻或实际区间内处于可执行规定功能状态的能力。
当业务量大时,一台消息中间件服务器可能无法满足需求,所以需要消息中间件能够集群部署,来达到高可用的目的。
Master - Slave 主从共享数据的部署方法
Master-Slave 主从同步部署方式
Broker-Cluster多主集群同步部署方式
Broker-Cluster多主集群转发部署方式
Master-Slave与Broker-Cluster结合
高可靠
高可靠性是指系统可用无故障的持续运行。比如一个系统从来不崩溃、报错、或者崩溃、报错的几率较低,那就是高可靠。
在搞并发业务场景下,如果不能保证系统的高可靠,那造成的损失将会非常严重。
保证消息中间件的高可靠性,可用从以下几个方面考虑
消息传输可靠: 通过协议来保证系统间数据解析的正确性。
消息存储可靠: 通过持久化来保证消息的存储可靠性。
总结
想要设计和实现一个消息中间件,协议、持久化、消息分发、高可用、高可靠 这个5个核心点必须要实现