Last week, we talked about

◻Security vulnerability of distributed systems.

◻Security mechanisms and policies in distributed systems.

◻Symmetric and asymmetric cryptosystems.

◻Security management.

Today we talk about

◻Indirect communications

🞑What is indirect communication

🞑Space and time decoupling

◻Indirect communication paradigms (模式)

🞑Group communication

🞑Publish-subscribe systems

🞑Distributed event-based systems

🞑Shared memory abstraction

好的,我们开始详细解读今天的主题 “Indirect Communications(间接通信)”

1. 什么是间接通信?

定义:

间接通信 指通信的发送者和接收者不直接进行交互,而是通过中间机制(例如消息队列、事件系统、共享存储等)实现信息的传递。这种通信方式避免了双方的直接耦合,使系统更加灵活和可扩展。

2. 空间解耦和时间解耦

间接通信的两个关键特征是 空间解耦时间解耦

空间解耦 (Space Decoupling)

发送者接收者 不需要彼此知道对方的身份。

• 发送者只需要把消息放到一个中间机制中,例如:

消息队列

发布-订阅系统

• 这种方式提高了系统的灵活性,因为发送者和接收者可以独立开发和部署。

例子:

A 服务将消息发布到消息队列,而 B 服务从消息队列中接收和处理消息。A 和 B 并不直接相互通信。

时间解耦 (Time Decoupling)

发送者接收者 不需要在同一时间在线。

• 发送者可以在任何时间发送消息,接收者可以在稍后读取和处理消息。

• 消息被中间存储(例如消息队列、共享存储),实现了发送与接收的异步解耦。

例子:

A 服务发送一条消息到消息队列,即使 B 服务当前不在线,消息队列也会将消息保存下来,B 服务上线后可以获取消息。

3. 间接通信的主要模式(Paradigms)

(1) 群组通信 (Group Communication)

概念:

群组通信允许消息被发送到一个 接收者组(Group),而非单一接收者。

多播 (Multicast): 消息被发送给多个接收者。

广播 (Broadcast): 消息被发送给所有接收者。

• 群组通信通常用于需要一致性或协调的场景,例如 分布式共识算法

特点:

• 提高了消息的传递效率。

• 支持动态群组成员管理:成员可以加入或离开群组。

• 常用于分布式系统的复制管理和协调任务。

应用示例:

• 在数据库复制系统中,主数据库将更新操作广播给多个从数据库。

• 在 分布式共识算法(如 Paxos、Raft) 中,群组通信用于多个节点之间的投票和同步。

(2) 发布-订阅系统 (Publish-Subscribe Systems)

概念:

发布-订阅模式是一种 事件驱动 的通信机制。

发布者 (Publisher): 发送消息,但不知道谁会接收这些消息。

订阅者 (Subscriber): 订阅感兴趣的主题,当消息被发布时,系统会将消息发送给订阅者。

中间代理 (Broker): 负责管理消息的发布与分发。

特点:

空间解耦: 发布者和订阅者之间不直接通信。

时间解耦: 订阅者可以在稍后接收消息。

主题 (Topic): 订阅者可以选择性地订阅特定主题的消息。

应用示例:

消息中间件:如 Apache Kafka、RabbitMQ 和 ActiveMQ。

事件通知系统:用户订阅特定事件,系统自动推送通知。

(3) 分布式事件驱动系统 (Distributed Event-Based Systems)

概念:

分布式事件驱动系统是发布-订阅系统的扩展,强调基于 事件 的异步通信。

事件 (Event): 表示某个系统状态的变化或操作的触发。

事件处理器 (Event Processor): 负责接收和处理事件。

特点:

• 强调异步、实时的事件处理。

• 支持 事件流复杂事件处理(CEP)。

事件驱动 的系统架构通常更加解耦,适合于分布式系统。

应用示例:

实时监控系统:处理海量日志流和事件(如网络监控和异常检测)。

IoT 系统:传感器产生事件,系统实时处理和分析数据。

(4) 共享内存抽象 (Shared Memory Abstraction)

概念:

共享内存抽象是一种 间接通信 的机制,发送者和接收者通过共享的内存区域进行数据交互。

发送者: 将数据写入共享内存。

接收者: 从共享内存中读取数据。

特点:

• 通信速度快,适用于高性能场景。

数据一致性 是共享内存通信的一个重要挑战。

• 在分布式系统中,通过 分布式共享内存 (DSM) 模拟共享内存。

应用示例:

分布式共享内存 (DSM): 模拟共享内存的环境,使多个进程能够访问同一个内存区域。

缓存机制: 应用程序通过共享内存访问缓存数据,提高访问效率。

总结:

截屏2024-12-18 14.56.50.png

核心要点:

  1. 间接通信通过 中间机制 使通信双方解耦,降低了耦合度,提高了系统的灵活性。

  2. 空间解耦时间解耦 是间接通信的两个关键特性。

  3. 四种主要模式:群组通信发布-订阅系统分布式事件驱动系统共享内存抽象,分别适用于不同场景。

希望这个解读对你有所帮助!有不清楚的部分欢迎进一步提问。

What is Indirect Communication ?

◻Communication between entities in a distributed system through an intermediary (中介) with no direct coupling (耦合) between the sender and the receiver(s).

◻What is the intermediary?

🞑Groups,