目录
1、单体架构
2、分布式系统架构
3、基于消息中间件的分布式系统架构
4、消息中间件概述
1、什么是消息中间件
2、消息中间件的应用场景
3、常用的消息中间件
5、消息中间件核心设计
本质
5大核心组成
6、消息中间件5大核心
6.1 协议
6.1.1 常见协议
6.1.2 AMQP协议
6.1.3 MQTT协议
6.1.4 Open Message协议
6.1.5 Kafka协议
6.2 持久化
定义
持久化的方式
6.3 消息分发
常用的消息中间件分发策略
6.4 高可用
Master-Slave主从共享数据的部署方式
Master-Slave主从同步部署方式
Broker-Cluster多主集群同步部署方式
Broker-Cluster多主集群转发部署方式
Master-Slave与Broker-Cluster结合
6.5 高可靠
1、单体架构
所有的代码、模块,放在一个项目里,一个模块升级,整个系统全部升级
2、分布式系统架构
3、基于消息中间件的分布式系统架构
4、消息中间件概述
1、什么是消息中间件
利用高效可靠的消息传递机制进行平台无关的数据交流
并基于数据通信来进行分布式系统的集成;
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信
2、消息中间件的应用场景
跨系统数据传递、高并发流量削峰、数据异步处理......
3、常用的消息中间件
ActiveMQ、RabbitMQ、Kafka、RocketMQ
5、消息中间件核心设计
本质
一种具备接收请求、保存数据、发送数据等功能的网络应用。
和一般网络应用程序的区别是它主要负责数据的接收和传递,所以性能一般都高于普通程序
5大核心组成
协议、持久化机制、消息分发机制、高可用设计、高可靠设计
6、消息中间件5大核心
6.1 协议
协议的定义:
协议是计算机之间通信时共同遵从的一组约定,都遵守相同的约定,计算机之间才能相互交流。
是对数据格式和计算机之间交换数据时必须遵守的规则的正式描述
协议三要素:
1)语法:数据与控制信息的结构或格式;
2)语义:需要发出何种控制信息、完成何种动作、做出何种响应;
3)时序(同步):事件实现顺序的详细说明
6.1.1 常见协议
Http协议三要素举例:
语法:http规定了请求报文和响应报文的具体格式
语义:客户端主动发起的操作称为请求
时序:一个请求对应一个响应
消息中间件常用的协议:OpenWire、AMQP、MQTT、Kafka、OpenMessage
为啥不用http协议做消息中间件:太大了(请求头)、短连接(响应后,连接就断了)
6.1.2 AMQP协议
AMQP(Advanced Message Queuing Protocol)是高级消息队列协议
04年JPMorgan Chase(摩根大通集团)联合其他公司共同设计
特性
事务支持、持久化支持,出生金融行业,在可靠性消息处理上具备天然的优势
应用场景
RabbitMQ、ActiveMQ
6.1.3 MQTT协议
MQTT(Message Queuing Telemetry Transport)消息队列遥测传输
是IBM开发的一个即时通讯协议,物联网系统架构中的重要组成部分
特性
轻量、结构简单、传输快、没有事务支持、没有持久化相关设计
应用场景
适用于计算能力有限、低带宽、网络不稳定的场景( RabbitMQ、ActiveMQ)
6.1.4 Open Message协议
OpenMessaging
是近一两年由阿里发起,与雅虎、滴滴出行、Streamlio等公司共同参与创立的分布式消息中间件、流处理领域的应用开发标准
是国内首个在全球范围内发起的分布式消息领域国际标准
特性
结果简单、解析快、有事务设计、有持久化设计
应用场景
Apache RocketMQ
6.1.5 Kafka协议
Kafka协议是基于TCP的二进制协议
消息内部是通过长度来分隔,由一些基本数据类型组成
特性
结构简单、解析快、无事务设计、有持久化设计
应用场景
kafka
6.2 持久化
定义
就是将数据存入磁盘,而不是存在内存中随服务重启而消失,使数据能够永久保存叫持久化
持久化的方式
文件系统、数据库
6.3 消息分发
消息分发策略:明确这个消息发给哪个系统、如果支付系统处理失败,需要重试
常用的消息中间件分发策略
6.4 高可用
高可用性是指产品在规定的条件和规定的时刻(或时间区间内)处于可执行规定功能状态的能力。
当业务量大时,一台消息中间件服务器可能无法满足需求,所以需要消息中间件能够集群部署,来达到高可用的目的
Master-Slave主从共享数据的部署方式
Master-Slave主从同步部署方式
Broker-Cluster多主集群同步部署方式
Broker-Cluster多主集群转发部署方式
Master-Slave与Broker-Cluster结合
6.5 高可靠
系统可以无故障地持续运行。比如:一个系统从来不崩溃、报错,或者崩溃、报错的几率较低,那就是高可靠
在高并发业务场景下,如果不能保证系统的高可靠,那造成的损失将会非常严重
保证消息中间件的高可靠性方法:
消息传输可靠:通过协议来保证系统间数据解析的正确性
消息存储可靠:通过持久化来保证消息的存储可靠性