分布式消息中间件浅解

分布式消息中间件

分布式系统

废话不多说,直接进入正题。我是十三!

分布式系统的两个特点:

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

中间件被描述为为应用程序提供操作系统所提供的服务之外的服务,简化应用程序的通信、输入输出的开发,使他们专注于自己的业务逻辑。其实可以从“空间”的角度去理解中间件,即中间件是处于“中间层”的组件,是上层的应用程序和底层的服务之间的桥梁(比如DB中间件的上层是应用程序,底层是DB服务),也是应用与应用之间的桥梁(比如分布式服务组件)。

分布式消息中间件

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

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

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

消息中间件能做什么?

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

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

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

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

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

简单概括一下消息中间件的应用场景大致如下:

· 业务解耦:交易系统不需要知道短信通知服务的存在,只需要发布消息

· 削峰填谷:比如上游系统的吞吐能力高于下游系统,在流量洪峰时可能会冲垮下游系统,消息中间件可以在峰值时堆积消息,而在峰值过去后下游系统慢慢消费消息解决流量洪峰的问题

· 事件驱动:系统与系统之间可以通过消息传递的形式驱动业务,以流式的模型处理

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

插入链接与图片

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

有一个SDK,提供给业务系统发送、消费消息的接口

有一批Server节点用于接受和存储消息,并在合适的时候发送给下游的系统进行消费

结语

至此应该对分布式消息中间件应该有了一个简单的认识。
笔者在蚂蚁金服做过开发,对其内部的一些中间件有或深或浅的了解,这里不方便写太多其内容。引用一篇阿里官方的文档作为结束的拓展吧

Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能:http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值