Post on 13-Jan-2016
transcript
Group Communication Service
by
Abhijeet Dharmapurikar
Jesse Greenwald
Sapna Gumidyala
Shashidhar Rampally
Varsha Mahadevan
IntroductionWhat is a Group Communication
Service?Why do we need a Group
Communication Service?Sample Applications
Data Replication Process Groups
Introduction (contd)Existing Group Communication
Services Java Groups Spread
Configurable protocol stack used by Java Groups
Scope for utilization of application specific information
Our Group Communication Service
Using application specific information Message Types Message Patterns
Finding best-fit protocol stack for the above application
Optimization of number of messages
Illustrative ExamplesTele-teaching ApplicationCard Game Application
Tele-Teaching Application<protocol> <roles> <role name="Student" min="1" max="n"/> <role name="Teacher" min="1" max="1"/> </roles> <message-types> <message-type name="Question"/> <message-type name="Answer"/> <message-type name="Formula"/> <message-type name="Doubt"/> <message-type name="TeacherAnswer"/> </message-types> . . .</protocol>
Tele-Teaching Application (contd)
<message-patterns> <pattern> <query type="Question" role="Teacher" receiver="Student" min="1" max="1"/> <response type="Answer" role="Student” receiver="Teacher" min="0" max="#Student" timeout="60s"/> </pattern> <pattern> <query type="Formula” min="1" max="1"/> <response type="Doubt" min="0" max="#Student" timeout="120s"/> </pattern> </message-patterns>
Card Game Application<protocol> <roles> <role name="Player1" min="1" max="1"/> <role name="Player2" min="1" max="1"/> <role name="Player3" min="1" max="1"/> <role name="Player4" min="1" max="1"/> </roles> <message-types> <message-type name="Play"/> </message-types> . . .</protocol>
Card Game Application (contd)
<message-patterns> <pattern> <message type="Play" role="Player1" min="1" max="1”
receiver="Player1,Player2,Player3,Player4"/> <message type="Play" role="Player2" min="1" max="1” receiver="Player1,Player2,Player3,Player4"/> <message type="Play" role="Player3" min="1" max="1” receiver="Player1,Player2,Player3,Player4"/> <message type="Play" role="Player4" min="1" max="1” receiver="Player1,Player2,Player3,Player4"/>
</pattern> </message-patterns>
Related ConceptsProactive MessagesReactive Messages
System Design
Application Protocol
Group Membership Protocol
Correlation Protocol
Ordering Protocol
Filtering Protocol
Event Service
Message Send Sequence Diagram
Clients
Group Manager
System Design
Application Protocol
Group Membership Protocol
Correlation Protocol
Ordering Protocol
Filtering Protocol
Event Service
CORBACommon Object Request Broker Arch.Object Management Group (OMG)
Defines IDL LanguageDefines the API for ORB
Object ServicesName ServiceEvent ServiceNotification ServiceTime ServiceTransaction ServicePersistent State Service
Event Service
Event Channel
Supplier Supplier Supplier
Consumer Consumer
Push Communication Model
I wish to decide when the data is to be sent
Just call my methodwhenever you have
data for me
Push Supplier Push ConsumerInitiative
DATA
Pull Communication Model
Just call my method whenever you want data
Pull SupplierInitiative
DATA
I wish to decide whento go for data
Pull Supplier
System Design
Application Protocol
Group Membership Protocol
Correlation Protocol
Ordering Protocol
Filtering Protocol
Event Service
Filtering ProtocolFilters based on
Message Type Destination
Operates in two modes JOIN_MODE ONLINE_MODE
Filtering Protocol cond..JOIN_MODE: Allows only JOIN_GROUP messages Allows only UpdatedView messages
ONLINE_MODE: Allows all the messages Allows all messages except the messages to which its not a destination.
System Design
Application Protocol
Group Membership Protocol
Correlation Protocol
Ordering Protocol
Filtering Protocol
Event Service
Message Formatstruct Message
{
long messageId;
long source;
long destination;
string message;
char messageType;
boolean isProactive;
};
struct SequenceMessage
{
long messageId;
long source;
long destination;
long sequenceId;
};
Ordering ProtocolSequencer based algorithm
Send broadcast message to all the members in the group and the sequencer
Sequencer assigns ids to these broadcast messages in a strictly increasing order
Member delivers the broadcast messages in the increasing order of sequencer ids
System Design
Application Protocol
Group Membership Protocol
Correlation Protocol
Ordering Protocol
Filtering Protocol
Event Service
Correlation ProtocolBuffered ordering of reactive messages
with respect to proactive messagesTele-Teaching Example
Question (proactive message) Answer (reactive message)
CorrelatorHandles relationship between
messagesCould be imagined as a smart tree-
structured bufferPatterns
X –Y5 - Z2
X
Y
Y
Y
Y
Y
z
z
z
z
z
z
z
z
z
z
System Design
Application Protocol
Group Membership Protocol
Correlation Protocol
Ordering Protocol
Filtering Protocol
Event Service
Group Membership RolesRoles for the membership protocol
Groups Administrator Group Manager Member
Related Concept View
Groups Administrative Class
Membership Message Formats
struct JoinGroup
{
long member;
};
struct LeaveGroup
{
long member;
};
struct UpdateView
{
long messageId;
long source;
viewSeq view;
};
Group Membership Protocol
GManager
NM M1 M2 M3
GM GM GM GM
Event Channel
JoinGroup UpdateView UpdateView UpdateView
Configurable Protocol Stack (1)
DownQueue
DownQueue
UpQueue
UpQueue
UpHandler DownHandler
UpHandler DownHandler
Protocol 1
Protocol 2
Configurable Protocol Stack (2)
Configurable Protocol Stack (3)
OptimizationsSave round trip to sequencer for
reactive messages Tele-Teaching example Card Game example
Selective build of required layers in the protocol stack
Group Communication IssuesOne channel per group conceptAtomicity of broadcast messagesOrdering of membership messages with
respect to broadcast messages Implicit notion of proactive membership
messagesSupport for uni-cast communication
ConclusionPossible extensions
Cross Group Communication Fault-Tolerance issues Group State Management
References
Lecture Notes http://www.cis.ksu.edu/~singh/CIS825/F02/c
is825.htmlJava Groups
http://www.cs.cornell.edu/Info/Projects/JavaGroupsNew/
Event Service Specification http://cgi.omg.org/docs/formal/01-03-01.pdf