单体架构:
所有代码都在一个项目中,耦合度太高,升级一个模块需要将所有模块都升级一遍。
分布式系统架构:(一个请求需要多个系统协调处理)
基于消息中间件的分布式系统
消息中间件概述
-
什么是消息中间件
利用高效可靠的消息传递机制,进行平台无关的数据交流;
并基于数据通信来进行分布式系统的集成;
通过提供消息传递和消息排队模型,它可以在分布式系统下扩展进程间的通信。 -
消息中间件的应用场景
跨系统数据传递、高并发流量削峰、数据异步处理等等 -
常用的消息中间件
activemq、rocketmq、rabbitmq、kafka -
本质
一种具备接受请求、保存数据、发送数据等功能的网络应用。
和一般网络应用程序的区别是它主要负责数据的接受和传递,所以性能一般高于普通程序。 -
5大核心组成
协议、持久化机制、消息分发机制、高可用机制、高可靠机制
协议:
什么是协议?
协议是计算机之间通信时共同遵守的一组协定,都遵守相同的协定,计算机之间才能相互交流。
是对数据格式和计算机之间交流时必须遵守的规则的正式描述。
协议三要素;
- 语法:数据与控制信息的结构或格式;
- 语义:即要发出何种控制信息,完成何种动作以及做出何种响应。
- 时序(同步):事件实现顺序的详细说明
常见协议:
http协议的三要素
- 语法:http规定了请求报文和响应报文的具体格式。
- 语义:客户端主动发起的操作称为请求。
- 一个请求对应一个响应。
消息中间件的常见协议:AMQP、OpenWire、MQTT、Kafka、OpenMessage
为什么消息中间件不直接使用http协议?
答:http协议太复杂、且是短连接。
openWire协议主要是activeMq使用。
AMQP(advanced message queuing protocol)协议:
是高级消息队列协议,04年,JPMorgan Chase(摩根大通集团)联合其他公司设计。
特性:事务支持、持久化支持,出生金融行业,在可靠性消息处理上具备天然的优势。
MQTT(message queuing telemetry transport)协议:
消息队列遥测传输,是IBM开发的一个即时通讯协议,物联网系统架构中的重要组成部分。
特性:轻量、结构简单、传输快、没有事务支持、没有持久机制
使用场景:适用于计算能力有限、低带宽、网络不稳定的场景。
Open Message
近两年由阿里发起、与雅虎、滴滴出行、streamlio等公司共同参与创立的分布式消息中间件、流处理领域的应用开发标准。
是国内首个在全球范围内发起的分布式消息领域国际标准。
特性:结构简单、解析快,有事务设计、有持久化设计。
Apache RocketMQ就是用的这种协议。
Kafka协议
是基于TCP的二进制协议。消息内部通过长度来分隔,由一些基本数据类型组成。
特性:结构简单、解析快、无事务设计、有持久化设计。
持久化
什么是持久化:简单来说就是将数据存入磁盘,而不是存在内存,随服务重启而消失,使数据能够永久保存叫做持久化。
常用持久化方式:
消息分发
高可用
高可靠
就是指系统能持续无故障地持续运行。比如一个系统从来不崩溃、报错、或崩溃报错的几率很低,那就是高可靠。
高并发业务场景下,如果不能保证系统的高可靠,那将造成很严重的损失。