消息中间件设计思路

偶尔善良 提交于 2020-01-18 04:26:17

五大核心组成

  • 协议
  • 持久化机制
  • 消息分发机制
  • 高可用设计
  • 高可靠设计

协议

三要素

  • 语法
  • 语义
  • 时序(同步)

消息中间件常见协议:OpenWire、AMQP、MQTT、Kafka、OpenMessage

为什么消息中间件不用 HTTP 协议
—— HTTP 太大,并且是短连接

AMQP

高级消息队列协议即 Advanced Message Queuing Protocol(AMQP)
特性:
支持事务、持久化,可靠性好

MQTT

MQTT (Message Queuing Telemetry Transport) 消息队列遥测传输是 IBM 开发的一个即时通讯协议,物联网系统架构中的重要组成部分。
特性:
轻量、结构简单、传输快、没有事务支持、没有持久化相关设计
应用场景:
适用于计算能力有限、低带宽、网络不稳定的场景

OpenMessage协议

OpenMessaging 是近一两年由阿里发起,与雅虎、滴滴出行、StreamIio等公司共同参与创立的分布式消息中间件、流处理领域的应用开发标准。是国内首个在全球范围内发起的分布式消息领域国际标准。
特性:
结构简单、解析快、有事务设计、有持久化设计

Kafka协议

Kafka协议是基于TCP的二进制协议。消息内部通过长度来分隔,由一些基本数据类型组成。
特性:
结构简单、解析快、无事务设计、有持久化设计

持久化

在这里插入图片描述

消息分发

在这里插入图片描述

高可用

主从共享

在这里插入图片描述

主从同步

在这里插入图片描述

多主集群同步部署


相比于主从同步模式,集群不仅开放了读功能,还开放了写功能。

多主集群转发部署模式

在这里插入图片描述
虽然 broker-1 没有该数据信息,通过同步的元数据,它知道 broker-2 上有相关信息,并把相应请求转发给 broker-2.

Master-Slave 和 Broker-Cluster 的组合

在这里插入图片描述

高可靠

高可靠即系统可以无故障地持续运行。

消息中间件的高可靠性,一般考虑两个方面:

  • 消息传输可靠:通过协议来保证系统间数据解析的正确性
  • 消息存储可靠:通过持久化来保证消息的存储可靠性
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!