0x01 介绍
中间件基本遵循了以下3种不同的通信风格种的一种或多种:
-
Messaging(消息传递)模式
在不同的服务间通过交换消息来相互作用。 -
Publisher-Subscriber(发布者-订阅者)模式
不同的服务和组件间通过一对多的关系异步地交换事件来相互作用。 -
Broker(经纪人)模式
应用可以通过发送消息访问远程的服务。
(或:不同的组件间通过远程方法调用来相互作用。)
0x02 区别
Broker:客户端可以调用托管在服务器上的远程组件对象的远程方法。隐藏掉网络的存在。
Messaging:实现多对一的通信方式,不需要静态的去预定义接口(接口会导致客户端对服务的依赖)。降低了耦合度、放宽了对类型的限制。客户端动态地把固定类型地消息发送给特定的远程服务,而不必须发给特定的方法。
Publisher-Subscriber:Publisher与Subscriber以一对多的方式交换事件,他们不关心也不知道对方。进一步解除应用组件之间的耦合。
模式 | 通信方式 | 通信关系 | 组件依赖性 |
---|---|---|---|
Broker | 远程方法调用 | 一对一 | 组件接口 |
Messaging | 消息 | 多对一 | 通信终端地消息格式 |
Publisher-Subcriber | 事件 | 一对多 | 事件格式 |
0x03 Messaging下细粒度的模式
基于Messaging模式的中间件可以细分为下面4种分布式基础架构模式。
Message Channel(信道)模式:可以连接不同的应用服务,这些服务之间通过交换消息进行交互。一个服务将消息写入到通道中,另一个服务从通道中读取信息。
Message Router(消息路由)模式:要求一个客户端根据不同的条件集,向应用的其他服务发送消息。
Message Translator(消息转化器)模式:支持将消息转换为另一种形式。
Message Endpoint(消息端点)模式:可以通过封装和实现必要的适配代码,从而帮助应用服务与消息基础设置进行连接。
0x04 Broker下细粒度的模式
Broker中间件的职责可以分解为下面的5种分布式基础设施模式。
Client Proxy(客户端代理)模式:为客户端提供了一个本地接口,用于与远程组件进行交互。客户端能够以一种与位置无关的方式访问远程组件,使得远程组件看起来是与本地组件在一起的。
Requestor(请求者)模式:封装了客户端远程通信的各种细节,比如封送、通过网络发送请求、允许客户以位置无关的方式访问远程组件。
Client Request Handler(客户端请求处理程序)模式:封装了客户端在同一的接口背后进行的进程间的通信的细节。
Server Request Handler(服务器请求处理程序)模式:封装了服务端在同一的接口背后进行的进程间通信的细节。
Invoker(调用者)模式:可以在服务器组件收到来自远程客户端的请求时,替服务器组件屏蔽掉与网络相关的问题,比如请求的接受、解封送、分派请求。
网友评论