Middleware for Gossip Protocols Michael Chow and Robbert van Renesse - - PowerPoint PPT Presentation

middleware for gossip protocols
SMART_READER_LITE
LIVE PREVIEW

Middleware for Gossip Protocols Michael Chow and Robbert van Renesse - - PowerPoint PPT Presentation

Middleware for Gossip Protocols Michael Chow and Robbert van Renesse Cornell University Mo:va:on Gossip protocols are highly robust Problema:c when an error does occur E.g. Amazon S3 6 hours to fix an otherwise simple problem


slide-1
SLIDE 1

Middleware for Gossip Protocols

Michael Chow and Robbert van Renesse Cornell University

slide-2
SLIDE 2

Mo:va:on

  • Gossip protocols are highly robust
  • Problema:c when an error does occur

– E.g. Amazon S3 – 6 hours to fix an otherwise simple problem – Want to offer a way to fix such problems without having to take down the en:re system

slide-3
SLIDE 3

Contribu:ons

Design, implementa:on, and analysis of gossip middleware that supports rapid code upda:ng

slide-4
SLIDE 4

Talk Outline

  • Versions and Deployments
  • Architecture
  • Evalua:on
  • Conclusion and Future Work
slide-5
SLIDE 5

Talk Outline

  • Versions and Deployments
  • Architecture
  • Evalua:on
  • Conclusion and Future Work
slide-6
SLIDE 6

Versions and Deployments

  • Modules: Gossip applica:on instances
  • Each module assigned a Deployment Number

– Iden:fies origina:ng node and :me of deployment – Used to determine whether or not nodes are running the correct version of the applica:on – Does not correspond with code version

slide-7
SLIDE 7

Versions and Deployments

Code Version: v1 Code Deployment: d1 Code Version: v2 Code Deployment: d2 Code Version: v1 Code Deployment: d3

Code Update Roll Back Initial Deployment

slide-8
SLIDE 8

Talk Outline

  • Code Upda:ng
  • Architecture
  • Evalua:on
  • Conclusion and Future Work
slide-9
SLIDE 9

Architecture

Core Module1 Module2 Core Module1 Module3

slide-10
SLIDE 10

Core

  • Provides Module Management and Upda:ng
  • Core gossips deployment numbers and

corresponding code versions

  • Core itself cannot be updated this way
  • Challenge: keep core small
  • Approach: core leverages ongoing gossip

between modules

slide-11
SLIDE 11

Module Management

  • Core maintains a configura:on file that

contains:

– List of Modules and current versions (iden:fied by hash codes of the class files) – Deployment Number

  • Keeps track of which modules and

corresponding versions are currently running

  • Cores gossip Configura:on files
slide-12
SLIDE 12

Gossip Media:on

  • Core mediates gossip between modules
  • Two advantages
  • 1. Core piggybacks module deployment number on

exis:ng gossip traffic which keeps core simple

  • 2. Core uses HTTP to minimize problems with

firewalls

slide-13
SLIDE 13

Backup Gossip

  • Cores need to be able to update code even if

all modules have failed

  • Cores implement a rudimentary but robust

gossip protocol

– Sta:c list of rendezvous nodes – Intercepted membership hints from module gossip

slide-14
SLIDE 14

Core

Incoming Gossip Connections

Hints Table

Outgoing Gossip Connections To Modules From Modules

slide-15
SLIDE 15

Examples of gossip interac:ons

  • Normal case: core piggybacks deployment

numbers and checks for matched modules

  • Mismatched deployment numbers: core

ini:ates code update

  • Modules fail to gossip usefully: core gossips

configura:on informa:on

slide-16
SLIDE 16

Normal Case

Core

Module1 Deployment: d1

Core

Module1 Deployment: d1

Node A Node B

slide-17
SLIDE 17

Normal Case

Core

Module1 Deployment: d1

Core

Module1 Deployment: d1

Node A Node B

slide-18
SLIDE 18

Normal Case

Core

Module1 Deployment: d1

Core

Module1 Deployment: d1

Node A Node B

slide-19
SLIDE 19

Normal Case

Core

Module1 Deployment: d1

Core

Module1 Deployment: d1

Node A Node B

slide-20
SLIDE 20

Mismatched Deployment Numbers

Core

Module1 Deployment: d2

Core

Module1 Deployment: d1

Node A Node B

slide-21
SLIDE 21

Mismatched Deployment Numbers

Core

Module1 Deployment: d2

Core

Module1 Deployment: d1

Node A Node B

slide-22
SLIDE 22

Mismatched Deployment Numbers

Core

Module1 Deployment: d2

Core

Module1 Deployment: d1 Request code update

Node A Node B

slide-23
SLIDE 23

Mismatched Deployment Numbers

Core

Module1 Deployment: d2

Core

Module1 Deployment: d2

Node A Node B

slide-24
SLIDE 24

Mismatched Deployment Numbers

Core

Module1 Deployment: d2

Core

Module1 Deployment: d2

Node A Node B

slide-25
SLIDE 25

Failure to Gossip usefully

Core

Module1 Deployment: d3

Core

Module1 Deployment: d1

Node A Node B

Exchange configuration deployment number

slide-26
SLIDE 26

Failure to Gossip usefully

Core

Module1 Deployment: d3

Core

Module1 Deployment: d1

Node A Node B

Request code update

slide-27
SLIDE 27

Failure to Gossip usefully

Core

Module1 Deployment: d3

Core

Module1 Deployment: d3

Node A Node B

slide-28
SLIDE 28

Talk Outline

  • Code Upda:ng
  • Layered Architecture
  • Evalua:on
  • Conclusion and Future Work
slide-29
SLIDE 29

Evalua:on

  • Tested on 100 local instances with 10 serving

as rendezvous servers

  • Applica:on: A Simple Membership Protocol
slide-30
SLIDE 30

Evalua:on

  • How much overhead does the core add?
slide-31
SLIDE 31

Evalua:on

  • How long does it take to propagate code?
slide-32
SLIDE 32

Evalua:on

  • How long does it take to propagate code?

Rendezvous nodes loaded with code

slide-33
SLIDE 33

Evalua:on

  • How long does it take to propagate code?

Backup gossip in the background

slide-34
SLIDE 34

Evalua:on

  • How long does it take to propagate code?

Application gossip picks up

slide-35
SLIDE 35

Conclusion and Future Work

  • Can we make the core smaller?
  • Can the core be updated?
  • Security
  • NAT Traversal as a layered service
slide-36
SLIDE 36

Ques:ons?

slide-37
SLIDE 37

Module Management

  • Core provides the following public methods

for module upda:ng:

public String transferState() public void acceptState()

transferState() acceptState() Module1 Deployment: d1 Module1 Deployment: d2