⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme

📁 JGRoups源码
💻
字号:
		Probabilistic Broadcast for JavaGroups		======================================JavaGroups currently uses virtual synchrony (VS) in its main protocolsuite. VS is suited for tightly coupled, lockstep replication. Typicalexamples are clusters, replicated databases etc. Group size is 100max, and it is targeted to LANs rather than WANs.The problem with VS is that is has to enforce that all members havereceived all messages in a view before proceeding to the nextview. This is done by a FLUSH protocol, which ensures (byretransmission) that each member has seen all messages in the currentview. During the FLUSH protocol, all members are essentiallyblocked. Messages can be sent, but they will be sent only when theFLUSH protocol has terminated (in one of the subsequent view, not inthe current one). The FLUSH protocol itself may need to be restarted,e.g. in the case when a participating member fails during the FLUSH.When one node (or a link) in a VS group is slow, it will bring theperformance of the entire group down, as members proceed at the paceof the slowest members (at least during membershipchanges). (Otherwise, the likely result is just growing buffers andretransmissions, as messages waiting to be delivered are buffered).The bimodel multicast (or probabilistic broadcast) protocols (PBCAST)developed at Cornell try to solve this problem by providingprobabilistic reliability guarantees rather than hard ones. In anutshell, the probability of a very small number of members receivinga message is high and the probability of all members receiving it ishigh as well. The probability of some members receiving a message isvery small, because the 'epidemic' nature of PBCAST infects the groupexponentially, making sure every member receives a message, or none.PBCAST protocols therefore scale very well, both in terms of groupmember size as well as over WANs with intermittent link/nodefailures. By implementing a PBCAST protocol, JavaGroups can now beused in WAN settings. However, there are no hard reliabilityguarantees anymore, just probabilitic ones. Yes there are a number ofapplications, which don't need hard reliability, and can live withprobabilistic guarantees, for example replicated naming services andpublish-subscribe applications. In these settings, eventualconvergence of replicated state and low-cost of the protocol is moreimportant than lock-step replication.The JavaGroups API will not be changed at all. However, applicationswith a protocol stack configured to use PBCAST have to be aware thatviews are only an approximation of the membership, not a hardguarantee.The PBCAST protocol is located in the ./pbcast subdirectory of./Protocols. The major changes are:GMS---Unlike VS, the JavaGroups implementation of PBCAST does not per seguarantee that the set of messages delivered in a view V is the sameat all members. Therefore, applications cannot rely on the fact thatwhen they send a message in view V, it will be received by all currentnon-faulty members in V.Views are delivered at each receiver at a certain position in theincoming message stream. However, as PBCAST only provides FIFO (whichguarantees that messages from sender P are seen in the order sent byP), it is possible that messages sent by senders P and Q in view V1can be received in different views at each receiver. However, it ispossible to add total order by implementing a TOTAL protocol andadding it on top of a given protocol stack. This would thenessentially provide VS.Consider the following example: P send messages m1 and m2 in view V1(consisting of P, Q and R). While it sends the messages, a new memberS joins the group. Since there is no FLUSH protocol that ensures thatm1 and m2 are delivered in V1, the following could happen: m1 isdelivered to Q and R in V1. Message m2 is delivered to Q, but is lostto R (e.g. dropped by a lossy link). Now, the new view V2 is installedby Q (which is the coordinator). Now, m2 is retransmitted by P toR. Clearly, VS would drop m2 because it was sent in a previousview. However, PBCAST faces two choices: either accept the message anddeliver it or drop it as well. If we accept it, the FIFO propertiesfor P are upheld, if we drop it, the next message m3 from P will notbe delivered until m2 was seen by R. (Message IDs are not reset to 0because we have no total order over views beeing delivered at eachmember at the same location in the message stream, as shownabove). Therefore, we have to accept the message.This leads to the conclusion that views are not used as a demarcationbetween message sets, but rather as indication that the groupmembership has changed. Therefore, protocols in the PBCAST suite willonly use views to update their internal membership list, but nevermake the assumption that all members will see the view change at thesame logical location in their message streams.FLUSH-----Not used anymore, as we're not flushing messages when proceeding tothe next view.NAKACK------Not used anymore. Functionality will be covered by PBCAST. NAKACK madeassumptions about views and messages and can therefore not be used.VIEW_ENFORCER-------------Not used anymore. Messages sent in one view can be delivered inanother one, although this usually doesn't happen. But we cannot makeany assumptions about it.STATE_TRANSFER--------------Not used anymore. New protocol for state transfer, especially gearedtowards big states (transfer in multiple transfers). However,STATE_TRANSFER could still be used (a TOTAL protocol has to bepresent).QUEUE-----May be used by the new state transfer protocolSTABLE------Not used anymore. Functionality will be covered by PBCAST protocol.Refs----[1] http://www.cs.cornell.edu/Info/Projects/Spinglass/index.html

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -