分布式消息中间件

分布式消息中间件

生产者(客户端)–发送消息–>消息中间件–分发消息–>消费者(服务器)

什么是消息中间件

  1. 利用高效可靠的消息传递机制进行平台无关的数据交互;
    把用户消息暂存到消息中间件, 消息中间件在把消息分发到对应分布式模块
  2. 基于数据通信来集成分布式系统
    分布式系统之间完全通过数据来连接,后台系统之间不需要接口调用
  3. 通过提供消息传递和消息队列模型, 它可以在分布式环境下扩展进程间的通信
    跨系统跨进程通信

消息中间件的应用场景

跨系统数据传递、高并发流量削峰填谷、数据异步处理、系统解耦…等等

常用的消息中间件

ActiveMQ、RabbitMQ、Kafka、RocketMQ

消息中间件的核心设计

消息中间件的本质

一种具备接收请求、保存数据、发送数据等功能的网络应用;和一般网络应用的区别是它主要负责数据的接收和传递,所以性能一般高于普通程序

消息中间件的5大核心组成

1. 协议

计算机之间通信共同遵循的一组约定
协议三要素:

  1. 语法
  2. 语义
  3. 时序

消息中间件常用的协议: OpenWire、AMQP、MQTT、Kafka、OpenMessage(由国内发起)

2. 持久化机制

简单来说就是将数据存入磁盘,而不是在内存中,不会因为服务器宕机而丢失数据,能够让数据永久保存就叫持久化

常用持久化方式就是文件系统

3. 消息分发机制

为什么要有消息分发策略

  1. 消息要被特定的系统接收到, 其他的系统不需要接收
  2. 试错机制:后台出错,需要重新发送消息

要解决的问题:

  1. 消息传递是推还是拉
  2. 是主动分发还是轮询分发
  3. 有无重发功能
4. 高可用设计

指服务可用性,保持能够使用的状态, 避免服务中断.消息中间件可以使用集群部署, 来达到高可用

分布式消息中间件实现方式:

  1. Master-Slave主从共享数据
    服务器共用同一份数据
  2. Master-Slave主从同步部署方式
    主服务器同步数据到所有服务器
  3. Broker-Cluster多主集群同步
    所有服务器都可以进行同步数据
  4. Broker-Cluster多主集群转发
    只同步数据信息,不同步数据内容, 服务器将请求转发给存有消息内容的服务器
  5. Master-Slave与Broker-Cluster结合
    分区同步数据
5. 高可靠设计

消息传输可靠:通过协议保证系统数据解析的正确性
消息存储可靠:通过持久化保证存储消息的可靠性