分布式消息中间件
生产者(客户端)–发送消息–>消息中间件–分发消息–>消费者(服务器)
什么是消息中间件
- 利用高效可靠的消息传递机制进行平台无关的数据交互;
把用户消息暂存到消息中间件, 消息中间件在把消息分发到对应分布式模块 - 基于数据通信来集成分布式系统
分布式系统之间完全通过数据来连接,后台系统之间不需要接口调用 - 通过提供消息传递和消息队列模型, 它可以在分布式环境下扩展进程间的通信
跨系统跨进程通信
消息中间件的应用场景
跨系统数据传递、高并发流量削峰填谷、数据异步处理、系统解耦…等等
常用的消息中间件
ActiveMQ、RabbitMQ、Kafka、RocketMQ
消息中间件的核心设计
消息中间件的本质
一种具备接收请求、保存数据、发送数据等功能的网络应用;和一般网络应用的区别是它主要负责数据的接收和传递,所以性能一般高于普通程序
消息中间件的5大核心组成
1. 协议
计算机之间通信共同遵循的一组约定
协议三要素:
- 语法
- 语义
- 时序
消息中间件常用的协议: OpenWire、AMQP、MQTT、Kafka、OpenMessage(由国内发起)
2. 持久化机制
简单来说就是将数据存入磁盘,而不是在内存中,不会因为服务器宕机而丢失数据,能够让数据永久保存就叫持久化
常用持久化方式就是文件系统
3. 消息分发机制
为什么要有消息分发策略
- 消息要被特定的系统接收到, 其他的系统不需要接收
- 试错机制:后台出错,需要重新发送消息
要解决的问题:
- 消息传递是推还是拉
- 是主动分发还是轮询分发
- 有无重发功能
4. 高可用设计
指服务可用性,保持能够使用的状态, 避免服务中断.消息中间件可以使用集群部署, 来达到高可用
分布式消息中间件实现方式:
- Master-Slave主从共享数据
服务器共用同一份数据 - Master-Slave主从同步部署方式
主服务器同步数据到所有服务器 - Broker-Cluster多主集群同步
所有服务器都可以进行同步数据 - Broker-Cluster多主集群转发
只同步数据信息,不同步数据内容, 服务器将请求转发给存有消息内容的服务器 - Master-Slave与Broker-Cluster结合
分区同步数据
5. 高可靠设计
消息传输可靠:通过协议保证系统数据解析的正确性
消息存储可靠:通过持久化保证存储消息的可靠性