什么是分布式消息中间件?

对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系统,什么又是中间件。数据库

分布式系统服务器

“A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messasges.”——《Distributed Systems Concepts and Design》网络

从上面这个解释能够获得分布式系统的两个特色:架构

  1. 组件分布在网络计算机上
  2. 组件之间经过消息来协调行动
  • 中间件

Middleware is computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue". Middleware makes it easier for software developers to implement communication and input/output, so they can focus on the specific purpose of their application.——维基百科并发

中间件被描述为为应用程序提供操做系统所提供的服务以外的服务,简化应用程序的通讯、输入输出的开发,使他们专一于本身的业务逻辑。app

从维基百科上对中间件的解释感受有点绕,其实能够从“空间”的角度去理解中间件,即中间件是处于“中间层”的组件,是上层的应用程序和底层的服务之间的桥梁(好比DB中间件的上层是应用程序,底层是DB服务),也是应用与应用之间的桥梁(好比分布式服务组件)。负载均衡

  • 分布式消息中间件

“Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems.”——维基百科异步

维基百科给出的消息中间件的定义是支持在分布式系统中发送和接受消息的硬件或软件基础设施(对咱们这里讨论的范围来讲确定就是软件了)。分布式

那么分布式消息中间件其实就是指消息中间件自己也是一个分布式系统。ide

消息中间件能作什么?

任何中间件必然都是要去解决特定领域的某个问题,消息中间件解决的就是分布式系统之间消息传递的问题。消息传递是分布式系统必然要面对的一个问题。

假设一个电商交易的场景,用户下单以后调用库存系统减库存,而后须要调用物流系统进行发货,若是交易、库存、物流是属于一个系统的,那么就是接口调用。可是随着系统的发展,各个模块愈来愈庞大、业务逻辑愈来愈复杂,必然是要作服务化和业务拆分的。这个时候就须要考虑这些系统之间如何交互,第一反应就是RPC(Remote Procedure Call)。系统继续发展,可能一笔交易后续须要调用几十个接口来执行业务,好比还有风控系统、短信服务等等。这个时候就须要消息中间件登场来解决问题了。

笔者认为,RPC和消息中间件的场景的差别很大程度上在于就是“依赖”和“量”。好比短信通知服务并非事交易环节必须的,并不影响下单流程,不是强依赖,因此交易系统不该该依赖短信服务。好比一些数据分析程序可能须要在拿到一天的总销售量,这个就只须要销售中心提供接口在须要时调用便可。

消息中间件出现之后对于交易场景多是调用库存中心等强依赖系统执行业务,以后发布一条消息(这条消息存储于消息中间件中)。像是短信通知服务、数据统计服务等等都是依赖于消息中间件去消费这条消息来完成本身的业务逻辑。

从以上的场景能够看出消息中间件其实就是对系统进行了解耦,同时带来了异步化等好处。

简单归纳一下消息中间件的应用场景大体以下:

  • 业务解耦:交易系统不须要知道短信通知服务的存在,只须要发布消息
  • 削峰填谷:好比上游系统的吞吐能力高于下游系统,在流量洪峰时可能会冲垮下游系统,消息中间件能够在峰值时堆积消息,而在峰值过去后下游系统慢慢消费消息解决流量洪峰的问题
  • 事件驱动:系统与系统之间能够经过消息传递的形式驱动业务,以流式的模型处理

分布式消息中间件长什么样?

一个抽象的对分布式消息中间件的认知大概是这样:

  • 有一个SDK,提供给业务系统发送、消费消息的接口
  • 有一批Server节点用于接受和存储消息,并在合适的时候发送给下游的系统进行消费

关于分布式消息中间件详细内容:

【分布式架构】分布式消息中间件MQ开发教程

(阿里云消息队列MQ(Message Queue)是企业级互联网架构的核心产品,服务于整个阿里巴巴集团已超过8年,通过阿里巴巴交易核心链路反复打磨与历年双十一严苛考验,是一个真正具有低延迟、高并发、高可用、高可靠,可支撑万亿级数据洪峰的分布式消息中间件。)

内容介绍:

课时1:MQ 快速入门 02:19

课时2:MQ 介绍 15:02

课时3:MQ 资源报表使用指南 01:00

课时4:MQ 消息查询 02:16

更多精品课程:

7天玩转云服务器

云数据库Redis版使用教程

玩转云存储对象存储OSS使用入门

阿里云CDN使用教程

负载均衡入门与产品使用指南

阿里云大学官网(阿里云大学 - 官方网站,云生态下的创新人才工场

相关文章
相关标签/搜索