- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
讨论 E1 (安全性):满足 没有进程被替换 E2(活性):满足 根据可靠消息传递的假设 性能 最好的情况N-2个消息 标识最大的进程发现协调者错误,发送N-2个协调者消息 最坏情况O(N2)个消息 标识最小的进程发现协调者错误,然后N-1个进程开始选举,每个进程都发送消息到较大标识的进程 * 7.4 组播通信 特点 一个进程只调用一个组播操作来发送一个消息到组中的每个进程 不是多次发送同一个消息到不同进程 效率:程序员方便,硬件的支持 传递保证:无法保证 系统模型 组标识:G 封闭组:只有G内的成员可以发送消息给G 开放组:组G外的成员也可以发送消息给G * 静态组与动态组 静态组:组内成员不可变更的组,组成员按照某种方式事先定义,以后无论发生什么情况都不可变更 动态组:允许组成员动态地加入退出。一个进程可以提出请求,加入(Join)一个组,从而成为这个组的成员,也可以要求离开或由于失效而退出(Leave)这个组 * 静态组与动态组 动态组提供面向视图(View-Oriented)的组成员服务(Group Membership Service) 视图(View)是组中当前活跃的成员(进程)列表,每个视图都有一个唯一的标志,组成员服务跟踪组的成员关系随时间的变化。当组成员列表发生变化,组成员服务负责通知组的各个成员,组成员就会安装(Install)新的视图 * 消息通信服务 根据消息传输是否可靠,消息通信服务可分为不可靠多播(Unreliable Multicast)和可靠多播(Reliable Muticast) 不可靠多播类似UDP提供的数据报服务,不保证消息安全到达所有接收方。可靠多播保证消息被所有接收方安全收到(Receive),但并不保证被接收方安全接收(Deliver) 区分接收(Deliver)和收到(Receive)。一个进程收到消息后可以先不接收它(送交上层应用),即接收是应用层行为,而收到在通信层行为 * 消息通信服务 按照消息的顺序特性,消息通信服务可分为无序、先入先出顺序(FIFO Order)、因果序(Causal Order)、全序(Total Order)等。 * 基本组播 原语 B-multicast(g,m):对每个属于组g的进程p, send(p,m),可靠的一对一 send操作 进程p执行 receive(m)时:进程执行 B-deliver(m) 可靠组播 完整性(安全性):任何传递的消息与发送的消息相同,且不会被重复传递 有效性(活性):任何消息都会被传送到目的地 协定:如果一个正确的进程收到消息,则组中所有正确成员都终将收到该消息 * 用B-multicast实现可靠组播算法 每个消息被发给每个进程|g|次 满足有效性,可靠的通信保证完整性, B-deliver(m) 保证协定 * 过程:进程P, 组g 初始化: Received:={}; 发送, 进程P R-Multicast (m): 进程P,B-Multicast(g,m); 接受: 进程Q B-deliver(m) 时,其中g=group(m) if m ∈ Received; then Received:= Received∪{m}; if (P≠Q) then P,B-Multicast(g,m) ; end if R-deliver (m); end if 基于IP组播实现可靠组播 每个进程有一个唯一的消息顺序数Sp 每个进程记载一组消息顺序数(Sp,Sq………) 进程P,R-Multicast (m)时, Sp =Sp+1,所有send上携带Sgp,并分别携带确认q,Rgq 进程V接收m,如S= Rgp +1, 则R-deliver(m) ,并且接收后Rgp +1; 进程V接收m,如S ≤ Rgp ,则丢掉此消息 进程V接收m,如S Rgp +1,则表明漏掉了进程P的某些个消息,保留m到队列,发送重发的确认 * 有序组播 FIFO排序:一个进程的Multicast(g,m)在Multicast(g,m’)前面,则每个正确传递m’的进程将在m’前传递m 因果排序:如果Multicast(g,m) - Multicast(g,m’) ,则每个正确传递m’的进程将在m’前传递m 全排序:如果一个正确传递m’的进程在m’前传递m,那么其他正确传递m’的进程将在m’前传递m * 性质 因果排序隐含FIFO排序 全排序不一定是因果排序或FIFO排序 全排序消息在不同进程中是顺序一样的前提下允许消息随机排序 有序组播不一定隐含可靠组播 正确进程p传递消息m然后传递m‘,q传递m,不一定传递m’ *
文档评论(0)