Replication and Group Communication
Management of Replicated Data FE Requests and replies C Replica C Service Clients Front ends managers RM FE RM Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
Replica Manager Manages a single copy of the data Interacts with other RMs Behave as state machines – Operations are atomic – Deterministic – Ensures behaviour can be reproduced at replicas May be dynamic or static
Sequence of Events Client Front End Request RM Request, idCoordination Execution AgreementResponse, id Response
Coordination Phase Reach agreement on – Whether to execute or not – Ordering FIFO Causal Total
Group Communication Messages send to all members of a group – Reliable – Either all receive message or none do – Ordered Group membership – Static – Fixed number of processes – Dynamic – Processes can leave and join Implementation – Network support (IP Multicast) – Sending multiple messages
Group Types Process vs Object groups Closed vs Open groups Overlapping vs Non-overlapping Synchronous vs Asynchronous
Reliability of Multicasts Integrity – Message received same as message send – No message is delivered twice Validity – Message send is eventually delivered Agreement – If delivered to one, it is delivered to all
Managing Group Membership Allow processes to be added and removed Detect failed/unreachable components Notify members of group changes Perform group address expansion – Processes may be part of multiple groups – Send message to group using group id
System Model Client Front End Request RM Request, id Response, id Response GM GC GM GC GM GC RM – Replication Manager GM – Group Manager GC – Group Communicator
Group Communicator Assumptions – Reliable one-to-one channels – Processes only fail by crashing To send a message: – RM calls multicast(g,m) in GC – GC may communicate with GM to get group members To receive a message: – GC receives message over network – Processes message – Calls deliver(m) in RM
Basic Multicast B-multicast(g,m): – For each p ∊ g, send (p,m) On receive(m) at p: – B-deliver(m) at p