Java学习总结 2-1-1 分布式消息中间件设计篇
什么是消息中间件
利用高效的消息传递机制进行平台无关的数据交流
基于数据通信来进行分布式系统的集成
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信
应用场景
跨系统数据传递、高并发流量肖锋、数据异步处理等。。
常用的消息中间件
ActiveMQ、RabbitMq、kafka、RocketMQ
核心设计
一种具备接收请求、保存数据、发送数据等功能的网络应用
和一般网络应用的区别是他主要负责数据的接收和传递,所以性能一般都高于普通程序
5大核心组成
协议
持久化机制
消息分发机制
高可用设计
高可靠设计
协议
协议是计算机之间通信时共同遵从的一组约定,都遵守相同的约定,计算机之间才能相互交流
是对数据格式和计算机之间交换数据是必须遵守的规则的正式描述
协议三要素
1、语法:即数据与控制信息的结构或格式 http规定了请求报文和相应报文的具体格式
2、语义:即需要发出何种控制信息,完成何种动作以及做出何种相应 客户端主动发起的操作成为请求
3、时序(同步):即事件实现顺序的详细说明 一个请求对应一个响应
消息中间件常用的协议
OpenWire、AMQP、MQTT、Kafka、OpenMessaaage
为什么直接使用Http协议?
http内容复杂,短链接不适合长时间对消息中间件操作
AMQP(Advanced Message Queuing Protocol):
RabbitMq、ACTIVEMQ
高级消息队列协议04年JPMorgan Chase(摩根大通集团)联合其他公司共同设计
特性:
事务支持、持久化支持,出生金融行业,在可靠性消息处理上具备天然的优势
MQTT(Message Queuing Telemetry Transport):
RabbitMq、ACTIVEMQ
消息队列摇测传输是IBM开发的一个即时通讯协议,物联网系统架构中的重要组成部分
特性:
轻量、结构简单、传输快、没有事务支持、没有持久化相关设计
应用场景:
使用于计算能力有限、低带宽、网络不稳定的场景
OpenMessaaage:
RabbitMq
是由阿里发起,与雅虎、滴滴出行、Streamlio等公司共同参与创立的分布式中间件、流处理领域的应用开发标准
是国内首个在全球范围内发起的分布式消息领域国际标准
特性:
结构简单、解析快、有事务设计、有持久化设计
Kafka:
Kafka
基于TCP为禁止协议。消息内部是通过长度来分割,有一些基本数据类组成
特性:
结构简单、解析快、无事务设计、有持久化设计
持久化
将数据存入磁盘,而不是存在内存中随服服务重启而消失,使数据能够永久保存叫持久化
消息分发
高可用
主从共享
主从同步
多主机群转发
Master-Slave与Broker-Cluster结合
高可靠
指系统可以无障碍的持续运行。比如一个系统从来不崩溃、报错,或者崩溃、报错的几率较低就为高可靠
在高并发业务场景下,如果不能保证系统的高可靠,那造成的损失将会非常严重
消息传输可靠:通过协议来保证系统间数据解析的正确性
消息存储可靠:通过持久化来保证消息的存储可靠性