中间件
现有的网络通信架构都是阻塞的,对比的bio模式。如果加上消息中间件则可以让我们解耦,变成NIO模式,非阻塞。
mq 分布式消息中间件
应用场景:系统解耦,流量削峰,数据异步处理等等。
常用的消息中间件
- activemq
- rockmq
- kakfa
核心设计
协议 协议有语法,语义,时序,主体等部分组成。 比如http协议,规定请求和响应的格式。 消息中间件一般不会使用http使用(臃肿,短链接), 会使用amqp,openwire(activemq), mqtt, kafka, openmessage, 【jms】(java官方消息规范)。
为什么不使用http做消息队列的协议。
因为http 比较复杂,不适合简单
amqp协议
特性:事务支持,持久化支持。
MQTT(物联网) 协议
特性: 轻量,结构简单,传输快,没事事务支持,没有持久化
open message协议(阿里发起,国内)
特性:结构简单,解析快,事务设计,有持久化设计
kafka协议
特性:结构简单,解析快,无事务设计,有持久化设计
持久化
持久化是为了保证数据安全可用而设计出的,一般保存在本地磁盘。
消息分发
- server 推向 consumer。
- consumer 请求获取 server。
高可用
- 主从共享数据部署
其余broker只是master的备份不提供服务。
- 主从同步部署
- 主会更新数据, 主会更新副本通过广播。
- 主从都可以提供读
- 多主集群转发部署
高可靠
- 消息传输可靠:通过协议保证数据解析正确性
- 消息存储可靠:通过持久化来保证消息存储的可靠性。