分布式系统之间接通信

本文探讨了间接通信在分布式系统中的概念,包括通过中介的几种模式如群组通信、发布-订阅系统、消息队列和分布式共享内存。重点介绍了JMS在Java中的应用,以及空间和时间解耦的优势与挑战。
摘要由CSDN通过智能技术生成

#间接通信的定义,空间与时间解耦,间接通信的几种模式

一.间接通信的定义

Communication between entities in a distributed system through an intermediary (中介) with no direct coupling (耦 合) between the sender and the receiver(s).【要通过中介交流】接收方和发送方之间不直接通信而是通过中介,实体通过中介者进行通信

常见的中介:groups,Event-based abstractions,Message queues, shared memory abstractions【其实就对应几种间接通信模式】

二.空间与时间解耦

RPC是直连

解耦(decoupling)好处:mobility, dependability and event dissemination (传播)

                                坏处:性能开销增大;处理更困难

两种类型:空间解耦&时间解耦

  • space decoupling: 接收者不知道发送者是谁,在这种情况下,system developer has freedom in dealing with changes:发送者和接收者都可以替换,更新而不影响其他方面
  • time decoupling:接收者和发送者有独立的生命周期,接收者和发送者不需要同时运行来交流

三.间接通信模式

1.Group communication EG:JGroup——a Java toolkit for reliable message

进程可以加入或者离开一个组,一个进程事项发起一个组播操作,而不是发起多个发送操作到每个进程。有效地使用带宽,组通信与广播通信不同。广播通信是一种发送者向所有接收者同时发送数据的方式。组通信只向特定的一组接收者发送数据,而不是向所有接收者发送数据。

2.Publish-Subscribe System  EG:JMS----Java message Service

允许发布者将消息发送给订阅者,而无需知道订阅者是谁。订阅者可以订阅他们感兴趣的主题,然后他们将收到所有关于该主题的消息。系统作为一个broker(代理)传递事件到正确的订阅者,发布-订阅系统是一个一对多的通信范型。


四种订阅模型方式:

  • Channel-based 基于渠道(发布者发布事件到命名的渠道,订阅者订阅其中一个已命名的渠道,并接收所有发送到那个渠道的事件。)
  • Topic-based 基于主题(每个事件通知可以定义多个主题,订阅者根据自己感兴趣的主题订阅):be enhanced by introducing hierarchies (层次结构) of topics.
  • Content-based 基于内容(基于主题订阅的一般化):Most flexible, significantly more expressive, but challenging to implement.
  • Type-based 基于类型(object-based,在基于类型的方法中,订阅根据事件类型来定义,根据给定的事件类型或者子类型来定义)

四种基于内容的方法:1. Flooding 泛洪:把发布的事件给所有可能得接收者/把订阅信息发送给所有可能得发布者 2.Filtering 过滤 : 代理转发通过网络转发通知仅当这里有A PATH to a valid subcriber. 3.Advertisements汇聚: 减少overhead of filtering and flooding 4. Gossip闲聊:每一个节点都有可能转发信息,achieving multicast

3.Distributed event-based systems(消息队列方式)

  • 生产者进程发送消息到特定队列,消费者进程从队列中接收消息。有以下三种接收方式
  • a.堵塞接收blocking:保持堵塞直到有合适的消息可用。
  • b.非堵塞接收(轮询 polling):检查队列的标志,返回可用的消息,或是一个不可用的指示。
  • c.通知操作being notified:当队列中有可用的消息时,向消费者发送事件通知。

4.Distributed Shared Memory (DSM)——EG:JMS,Oracle Streams Advanced Queuing

An abstraction of shared memory in a distributed system.分布式共享内存(DSM)是一种抽象,用于给不共享内存的物理机共享数据。分布式共享内存使得不同计算机的进程能访问不同进程的数据,就像访问自己进程的数据一样。

5.Tuple spaces元组空间:EG:JavaSpace IBM TSpace

进程通过在元组空间放置元组(写入,读取,拿走)间接进行通信,其他进程可以从元组空间中读或者删除元组。元组由一个或多个带类型的数据域组成。

几种模式之间的对比:

JMS allows Java programs to access the facilities provided by the Message Oriented Middleware (MOM) JMS是一个用于在Java应用程序之间发送异步消息的API。JMS提供了一种统一的编程模型,允许应用程序使用不同的消息中间件产品。

JMS中的交互方式:1.Message queuing (aka 1-to-1 communication)

                                 2.Publish-Subscribe (aka 1-to-many communication)

JMS的结构:

感觉JMS部分还是懵懵的。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值