云计算大数据,网络通信基础,分布式计算------组通信深入

序:

        我们前面所讲的进程通信都是属于两个进程间的通信。有时,通信不仅仅存在于两
个进程之间,而是涉及两个以上的多个进程。例如为了容错,一个文件可能会有多个副
本,这时候需要多个文件服务员管理同一个文件。在这样的系统中,可能会要求一个顾客
将同一个报文发送到所有的文件服务员,以保证在有节点崩溃的情况下,顾客的请求能够
得到执行。组通信机制有许多方面的应用,如多副本的更新、视频/音频会议等。所谓组
通信,指的是一个报文能够被发送到多个接收者的通信。

  • 组通信的设计问题

    1.封闭组和开放组

    2.对等组和分级组

    3.组成员的管理

    4.组寻址

    5.发送和接受原理

    6.原子性

    7.组重叠

 

        组通信有许多实现方面和传统的报文传递是相同的,例如,通信是有缓冲的还是无缓 冲的,是阻塞的还是非阻塞的,等等。然而,它毕竟不同于向单个进程发送报文,所以有它 独有的设计方面的考虑,具体如下:

        (1)封闭组(Closed Group)和开放组(Open Group)。按谁能够向一个组发送报文来分,组通信可以分为封闭的组通信和开放的组通信。说一个进程组是封闭的,是指只有这 个组的成员才允许向这个组发送报文,组外的进程不能向整个组发送报文,但是可以向组 内的某个成员发送报文。说一个进程组是开放的,是指系统中的所有进程都允许向这个 组发送报文。封闭进程组常用于并行处理,例如,处理象棋游戏的一组进程应该组成一个 封闭组,因为它们不需要和外部进程交互。而在多副本文件系统中,文件系统由多个服务 员提供服务,多个服务员组成一个进程组,这时就需要组外的进程(顾客)向这个组发送报 文。同时,组内的成员有时也需要用到组通信,例如,在决定由哪个服务员来处理一个请 求的时候。

        (2)对等组(Peer Group)和分级组(Hierarchical Group)。按照一个进程组的内部结 构,进程组可分为对等组和分级组。所谓对等组,是指组内的所有进程是平等的,没有一 个进程处于主导地位,任何决定都是所有进程集体作出的。而在分级组中,组中进程存在 着级别,例如,一个进程为协调者(Coordinator),其他进程为工作者(Worker)。无论一个请 求是来自组外的顾客,还是来自组内的工作者,这个请求被送到协调者,由协调者决定哪 个工作者最适合处理这个请求。对等组和分级组各有优缺点。对等组的优点在于它的对 称性并且不存在单点失效的问题,当组中的一个进程崩溃时,这个进程组只是变得更小, 但是可以继续提供服务。它的缺点是作决定的过程很复杂,当决定任何事情的时候需要 较长的延迟和较高的代价。而分级组具有相反的特性,当协调者崩溃的时候,整个进程组 再也不能提供服务,但是它可以很快地作出决定而不干扰组中的其他进程。

        (3)组成员的管理。当需要进行组通信的时候,需要某种方法建立和删除一个组,同 时需要提供一种方法允许一个进程加入某个进程组或者离开某个进程组。组成员的管理 有两种常见的方式:第一种是集中式的管理方式,第二种是分布式的管理方式。在集中式 的管理方式中,设置一个组管理服务员,任何管理请求都发向这个服务员,组管理服务员 为所有进程组及其组成员设置一个数据库。集中式的管理方式比较直接、高效和易于实 现。同所有的集中式机构一样,它存在着单点失效的问题,如果组管理服务员失效,组管 理机制不再存在,可能导致大部分或所有进程组需要重新构造。在分布式的管理方式中, 不存在一个集中的组管理服务员,当一个外部进程打开一个进程组的时候,它需要向组中 的所有成员发送一个报文,关闭一个进程组时同样如此。当一个进程要加入一个进程组 时,需要向组中的所有成员发送一个加入报文,当离开一个进程组时需要向组中的所有成 员发送一个离开报文。 无论采用那种管理方式,存在着如下需要解决的问题:第一个问题,如果一个组成员 崩溃,它实际上离开了所在的进程组,但是它并没有声明,在这种情况下,组管理员或组中 的其他成员并不知道这种情况。在实际的情况下,如果组中的其他成员发现某个成员对 任何事情没有响应,则认为该成员已经脱离该组,可以将它从进程组中删除。第二个问 题,加人和离开一个组必须和要发送的报文同步。也就是说,从一个进程加入一个进程组 那一刻起,所有发送到该组的报文,该进程必须接收。同样,当一个进程离开了一个进程组之后,它再也不能接收任何发送到该组的报文。第三个问题,当一个进程组中过多的进程失效使得这个组再也不能提供相应的服务,这时就需要某个协议来重建该进程组。总
是会有一个进程负责重建工作,问题是当有多个进程同时启动试图重建该组时怎么办?重建协议应该能解决这个问题。
        (4)组寻址(Group Addressing)。为了向一个进程组发送一个报文,一个进程必须能
够确定它向哪个进程组发送,也就是说每个进程组必须有一个地址,正如一个进程必须有
一个地址一样。组寻址的实现方法分为 3 类:由系统内核实现的方法、由发送进程实现的
方法和预测寻址的实现方法。
由系统内核实现的方法分为 3 种情况,如图

        如果网络支持组播,那么组地址可以和一个组播地址相对应,所有发送到这个组的报文可以组播到对应的机器上,而不会发送到无关的机器上。如果网络硬件只支持广播而 如果网络支持组播,那么组地址可以和一个组播地址相对应,所有发送到这个组 不支持组播,发送到某个组的报文会广播到所有的机器上,操作系统内核从报文中获取组 地址,如果机器上有进程组的成员,它会将报文传递给该机器上的所有组成员,如果该机 器上没有组成员,就会简单地丢弃该报文。如果网络既不支持组播又不支持广播,发送主 机的系统内核保持了一个属于该进程组的主机表,由系统内核一对一地向所有这些主机 发送报文。在这种由内核实现的寻址方法中,用户不必关心组的大小和组通信是采用上 述哪几种技术实现的,他只需使用组地址来发送报文,报文就可以到达所有的进程组 成员。 由发送进程实现的方法是由发送进程维持一张表,该表明确指出接收进程组的所有 进程的目的地址。在这种方法中,send 原语使用一个参数,这个参数是一个指针,该指针 指向一个地址链表,该地址链表指出了进程组中所有成员的地址。这种方法最大的缺点 是用户进程必须精确地知道组中有哪些成员,即对用户是不透明的。 预测寻址(Predicate Addressing)可以使用上述任何一种方法来实现,但这里采取了新 的措施。每个报文中包含一个预测表达式,它是一个布尔表达式,这个布尔表达式涉及接 收此报文,否则丢弃此报文。 收者的机器号码,局部变量或其他因素,接收的机器如果计算得到表达式的值为真,则直接收此报文,否则丢弃.

        (5)发送和接收原语。在理想的情况下,点对点通信和组通信应该合并使用同一组 原语,然而 RPC 和组通信的合并就很困难。如果点对点通信和组通信应该合并使用同一 组原语,发送原语同样包含两个参数,一个是地址,另一个是指向报文的指针。如果地址 是一个进程地址,则报文发送给指定的进程,如果地址是一个组地址,则报文发送给组中 的所有成员。无论是点对点通信还是组通信,发送原语同样可以是有缓冲的或是无缓冲 的、阻塞的或是无阻塞的,可靠的或是不可靠的。同样,接收原语可以是阻塞的或是无阻 塞的。由于点对点通信和组通信常用于不同的目的,所以有的系统专门提供了组通信原 语 group_send 和 group_receive。

        (6)原子性(Atomicity)。对于组通信来说,当一个报文要发送到一个进程组,那么这 个报文要么被组内的所有进程正确接收,要么没有一个进程接收。某些进程接收报文,而 某些进程不接收的情况是不允许的。组通信的这种特性称为原子性。原子性使分布计算 系统的程序设计变得很容易。当一个进程向一个进程组发送报文时,它不必担心组内某 些进程没有收到这个报文。例如,在多副本的分布式数据库系统中,假设某个进程向数据 库的每台机器上发送一个生成一个新记录的报文,然后再发送一个更新该记录的报文,如 果某个成员没有收到产生新记录的报文,它就无法对记录进行更新,就会产生不一致。

         (7)组重叠(Overlapping Groups)。正如前面所论述的,一个进程可能同时是多个进 程组的一个成员。这种情况可能会导致一种新的不一致性。图 2.3.2 有两个进程组,即组 1 和组 2。进程 A 、B C 是组 1 的成员,进程 B.C、D 是组 2 的成员。假设进程A和 D 分别 向它们自己所在的组同时发送报文,假设在组内使用前面所述的全局顺序语义并且假设 组通信是使用前面所述的单播技术实现,报文的顺序如图 3.3.2 所示。

        从图 2. 3.2 中我们可以看出,B 收到报文的顺序不同于 C,B 先收到来自于 A 的报文, 后收到来自于 D 的报文;而 C 先收到来自于 D 的报文,后收到来自于 A 的报文。虽然在 每个组内都使用了全局顺序语义,但还是出现了接收顺序的不一致性。当然如果进程组 不是重叠的,全局顺序语义就不会出现这种情况。

        组通信所涉及的问题还包括前面提到的报文的顺序问题和可扩充性等问题。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值