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): 模拟共享内存的环境,使多个进程能够访问同一个内存区域。
• 缓存机制: 应用程序通过共享内存访问缓存数据,提高访问效率。
总结:
核心要点:
间接通信通过 中间机制 使通信双方解耦,降低了耦合度,提高了系统的灵活性。
空间解耦 和 时间解耦 是间接通信的两个关键特性。
四种主要模式:群组通信、发布-订阅系统、分布式事件驱动系统 和 共享内存抽象,分别适用于不同场景。
希望这个解读对你有所帮助!有不清楚的部分欢迎进一步提问。
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,