Skip to content

andochiwa/Message-Middleware-Notes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

目录

1 2 3
ActiveMQ RabbitMQ Kafka

中间件(MiddleWare)

中间件是处于操作系统和应用程序之间的软件,也有人认为它属于操作系统中的一部分。

人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台,但在这组中间件中必须要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时它还可以把它与支撑软件和实用软件区分开来。

中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,可以将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,即为解耦。中间件带给应用系统的不只是开发的简便,也减少了系统的维护,管理等工作量,还减少了计算机总体费用的投入

特点

脱离于具体设计目标,而具备提供普遍独立功能需求的模块,这使得中间件一定是可替换的。如果在一个系统设计中,中间件不可替换,那么不是架构设计有问题,就是这个中间件,在别处可能是中间件,而在这个系统中是个引擎

中间件应该具有以下几个特点

  • 满足大量应用的需求
  • 运行于多种硬件和OS平台
  • 支持分布计算,提供跨网络,硬件和OS平台的透明性的应用或服务的交互
  • 支持标准的协议以及标准的接口

消息中间件的应用场景

  1. 跨系统数据传递
  2. 高并发的流量削峰
  3. 数据的分发和异步处理
  4. 大数据分析与传递
  5. 分布式事务

在有大量数据迁移,或者请求并发很多的时候,可以将这些请求放到消息队列内,让它稳定可靠的执行

消息中间件的核心组成部分

  1. 消息的协议
  2. 消息的持久化机制
  3. 消息的分发策略
  4. 消息的高可用
  5. 消息的容错机制

消息中间件常见协议

1.AMQP

AMQP即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制

特点:

  • 支持分布式事务
  • 消息的持久化支持
  • 高性能,高可用的消息处理优势

2.MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

适用于计算能力有限,低带宽和网络不稳定等场景。

特点:

  • 轻量,结构简单
  • 传输快,但不支持事务
  • 没有持久化设计

3.kafka

kafka协议是基于TCP/IP的二进制协议,消息内部是通过长度来分割,由一些基本数据类型组成

特点:

  • 结构简单,解析速度快
  • 有持久化设计
  • 无事务支持

About

introduction and usage of ActiveMQ, RabbitMQ and Kafka

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published