5.1 简介
间接通信:在分布式系统中实体通过中介者进行通信,没有发送者和接收者(们)之间的直接耦合
注意:接收者可以是多个,很多间接通信范型明确支持一对多通信
间接通信避免了直接耦合,使用中介有两个主要特性:
空间解耦:
发送者不知道也不需要知道接收者(们)的身份,反之亦然
参与者可以被替换、更新、复制或迁移
时间解耦:
发送者和接收者(们)可以有独立的生命周期
发送者和接收者(们)不需要同时存在才能通信
在易变的环境下,发送者和接收者可以随时进入和离开
间接系统常常用于预期会发生改变的分布式系统
例如:移动环境中
间接系统还常用于分布式系统的事件分发,在系统中接收者未知,且易于改变
间接系统的主要缺点是:
增加间接层带来的性能开销
更加难以精确管理
与异步通信的关系:
在异步通信中,发送者发送一个消息,然后继续工作(不阻塞),因此不需要与接收者在同一时间通信。
时间解耦增加了额外的维度,发送者和接收者(们)可以互相独立存在。例如:接收者在通信发起时可能不存在。
5.2 组通信
组通信(group communication)提供一种服务,在这种服务中,消息首先被发送到组中,然后该消息被传送到组中的所有成员。
在这个动作中,发送者不清楚接收者们的身份
组通信是对组播通信的抽象,可以通过IP组播实现或等价的覆盖网实现
增加了一些重要特性,如管理组的成员、检测故障、提供可靠性和排序保证
组通信的主要应用领域包括:
面向大量客户的可靠消息分发
支持协作应用
支持一系列容错策略
支持系统监控和管理,包括负载平衡策略
5.3 发布—订阅系统
发布—订阅系统(publish-subscribe systems)有时也称为基于事件的分布式系统(distributed event-based system)
在发布—订阅系统中,发布者(publisher)发布结构化的事件到事件服务,订阅者(subscriber)通过订阅(subscription)表达对特定事件感兴趣,其订阅可以是结构化事件之上的任意模式。
发布订阅系统的任务是把订阅和发布事件进行匹配,保证事件通知(event notification)的正确传递。
一个给定的事件将被传递到多个潜在的订阅者
发布—订阅系统的特征
异构性
-事件通知被用作一种通信手段,分布式系统中没有被设计实现互操作的组件可以在一起工作。
异步性
-通知是由生成事件的发布者异步地发送到所有对其感兴趣的订阅者的,发布者和订阅者之间进行了解耦。
为通知提供不同的传递保证
-具体选择依赖于应用的需求
5.4 消息队列
分布式消息队列是间接通信系统的一个重要的类别
消息队列使用队列概念作为一种间接机制提供点对点的服务
消息队列可以实现时间和空间解耦
消息队列也称消息中间件
5.5 共享内存的方式
共享内存的抽象是另外一种间接通信范型
为并行计算开发,分布式共享内存在读和写字节级别操作
分布式共享内存可以通过地址进行访问