distributed systems - brown universitycs.brown.edu/courses/cs138/s19/lectures/day6_2019.pdf ·...

44
Distributed Systems Day 6: Distributed Hash Tables [Part 3]

Upload: others

Post on 15-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

DistributedSystemsDay6:DistributedHashTables [Part3]

Page 2: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

Agenda

• Tapestry• Lookups(routing)inTapestry• AddingaNode• Deleting anode• Dealingwithfailures

Page 3: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

TapestryNode

• ObjectStore• Localkey-value• I.e.,keyswherethisnodeis“Root”

• Route—Table• Atableofneighbors

• Backpointers• Alistofnodes(whohavethisnodeasintheirrouteTable)

RouteTableBackpointers

Objectstore(key,valuestore)

Page 4: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

BackPointers

RouteTableBackPointers

Objectstore(key,valuestore)

IfNodeA isinNodeB’s RouteTableThenNodeB isinNodeA’s Backpointers

RouteTableBackPointers

Objectstore(key,valuestore)

NodeA NodeB

Backpointers areusefulduring:*GracefulExit*Addinganewnode

Page 5: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

RouteTable

• RouteTableisBbyB• EachRowidentifies aprefix• EachColumnisasubset oftheprefix

• Eachcellisanode• Anodemayshowupinmultiple cell• Therearemultipleoptions

• 2303and2111arebothvalid• Pick `best’’option

• Best==Closestnode.

XXXX3XXX33XX331X

00331

———

11332311133113311

22302

—33203312

333123312

——

RouteTableforNode:3312

RouteTableBackPointers

Objectstore(key,value store)

Page 6: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

0 1 2 3

RowdeterminesprefixlengthColdeterminesdigit

RouteTableforNode:3312

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

X X X0

Page 7: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

00331

1 2 3

RowdeterminesprefixlengthColdeterminesdigit

RouteTableforNode:33123312 2302

31111332

31200121

0331

1331

1001

3311

3320

X X X0

2130

3122

Page 8: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

00331

11332

2 3

RowdeterminesprefixlengthColdeterminesdigit

RouteTableforNode:33123312 2302

31111332

31200121

0331

1331

1001

3311

3320

1332 1331

1001

X X X1

2130

3122

Page 9: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

00331

11332

22302

3

RowdeterminesprefixlengthColdeterminesdigit

RouteTableforNode:33123312 2302

31111332

31200121

0331

1331

1001

3311

3320

X X X2

2130

3122

Page 10: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

00331

11332

22302

33312

RowdeterminesprefixlengthColdeterminesdigit

RouteTableforNode:33123312 2302

31111332

31200121

0331

1331

1001

3311

3320

X X X3

2130

3122

Page 11: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

00331

11332

22302

33312

RowdeterminesprefixlengthColdeterminesdigit

RouteTableforNode:33123312 2302

31111332

31200121

0331

1331

1001

3311

3320

0 X X3

2130

3122

Page 12: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

00331

113323111

22302

33312

RowdeterminesprefixlengthColdeterminesdigit

RouteTableforNode:33123312 2302

31111332

31200121

0331

1331

1001

3311

3320

1 X X3

2130

3122

Page 13: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX331X

00331

———

11332311133113311

22302

—33203312

333123312

——

RouteTableforNode:33123312 2302

31111332

31200121

0331

1331

1001

3311

3320

2130

3122

Page 14: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX332X

00121

——

3320

1100131203311

22130

—3320

333113320

——

RouteTableforNode:3320

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

RouteTableforNode:3312

2=Prefix(3312,3320)

Page 15: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

Tapestry:IDLookup

Page 16: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

HowtoRoute?UsingPrefixLookup

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

lookup:3122

3XXX31XX

312X

Page 17: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

165

RoutingAlgorithm

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

lookup:3122

3XXX

XXXX2XXX21XX213X

00331

—--

2130

113322130

----

22302

—----

3331223022130

RouteTableforNode:2130

//executedateachnodeinroutetodestination

NextHop(targetHash,step){nextDigit=digit(targetHash,step)

return(table[step,nextDigit])}

//executedateachnodeinroutetodestination

NextHop(targetHash,step){nextDigit=digit(targetHash,step)

return(table[step,nextDigit])}

NextDigit=3

Table[0,3]

3122.at(0)

Page 18: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

166

RoutingAlgorithm//executedateachnodeinrouteto

destination

NextHop(targetHash,step){nextDigit=digit(targetHash,step)

return(table[step,nextDigit])}

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

lookup:3122

3XXX31XX

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

RouteTableforNode:3312

NextDigit=1

Table[1,1]

3122.at(1)

Page 19: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

167

RoutingAlgorithm

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

lookup:3122

3XXX31XX

312X

3122

//executedateachnodeinroutetodestination

NextHop(targetHash,step){nextDigit=digit(targetHash,step)

return(table[step,nextDigit])}

NextDigit=2

Table[2,2]

NextDigit=2

Table[3,2]

3122.at(2)3122.at(3)

Page 20: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

WhatHappensifYouaremissinganEntry:SurrogateRouting

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

lookup:3021

3XXX

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

RouteTableforNode:3312

????

Page 21: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

171

How?

• Ifnonexthopexists,trythenextlargerdigit,modbase• eachneighbor-tablerowmusthaveatleastoneentry

• why?• ifanytwoneighbor-tablerows(ofdifferentnodes)sharethesameprefix,theymustagreeonwhichentriesarenull• why?

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

????

Page 22: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

172

How?

• Ifnonexthopexists,trythenextlargerdigit,modbase• eachneighbor-tablerowmusthaveatleastoneentry

• why?• ifanytwoneighbor-tablerows(ofdifferentnodes)sharethesameprefix,theymustagreeonwhichentriesarenull• why?

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

????

Page 23: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX332X

00121

——

3320

1100131203311

22130

—3320

333113320

——

RouteTableforNode:3320

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

RouteTableforNode:3312

2=Prefix(3312,3320)

XXXX3XXX31XX312X

00121

——

3120

1133231223111

---

22302

—31223122

333123311

——

RouteTableforNode:3122 1 =Prefix(3320,3122)

Page 24: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX332X

00121

——

3320

1100131203311

22130

—3320

333113320

——

RouteTableforNode:3320

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

RouteTableforNode:3312

XXXX3XXX31XX312X

00121

——

3120

1133231223111

---

22302

—31223122

333123311

——

RouteTableforNode:3122 1 =Prefix(3320,3122)

Page 25: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

3122

0121

1xxx

1332

0xxx

2302 3312

2xxx 3xxx

----

31xx

3122

30xx

---- 3311

32xx 33xx

---

311x

3111

310x

3122 ----

312x 313x

3120

3121

---

3120

3122 ---

3122 3123

3320

0121

1xxx

1332

0xxx

2302 3312

2xxx 3xxx

----

31xx

3122

30xx

---- 3311

32xx 33xx

---

331x

3311

330x

3320 ----

332x 333x

3320

3321

---

3320

--- ---

3322 3323

XXXX3XXX33XX332X

00121

——

3320

1133231223311

22302

—3320

333123311

——

RouteTableforNode:3320

XXXX3XXX31XX312X

00121

——

3120

1133231223111

---

22302

—31223122

333123311

——

RouteTableforNode:3122

Page 26: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

SurrogateRoutingfor3021

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

3021

3xxx3xxx 30xx?

30xx?

31xx

31xx

312x312x

3121?31223121?

3122

Page 27: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

Tapestry:DeletingANode

Page 28: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

WhatNeedstobeDoneduringDeletion?

• TwoversionsofNodeDelete• Graceful:nodewilling leaves

• Candoclean-up• Ungraceful:nodecrashes

• Noopportunity todocleanup

RouteTableBackPointers

Local<K,V> NodeA

• LocalK,Vwilldisappearà mustinformownerstorepublish

• I’minotherpeople’sroutingtableàmusttellthemI’mleaving

Page 29: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

WhatNeedstobeDoneduringDeletion?

• TwoversionsofNodeDelete• Graceful:nodewilling leaves

• Candoclean-up• Ungraceful:nodecrashes

• Noopportunity todocleanup

RouteTableBackPointers

Local<K,V>

RouteTableBackPointers

Local<K,V>

RouteTableBackPointers

Local<K,V>

NodeA

NodeBNodeC

RemoteRoutingTable:usebackpointersLocalK/V:Informclienttorepublish

RemoteroutingTable:NodeswilldetectfailureLocalK/V:Clientwillrepublishaftertimeout!!

Page 30: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

Tapestry:AddingANode

Page 31: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

AddingANewNode

• Step1:FindRootforServerID

• Step2:MovesubsetofobjectsfromRoottoNode

• Step3:MakeNoderoutingtable

• Step4:UpdateRoutingTableforothernodes

RouteTableBackPointers

Objectstore(key,valuestore)

Page 32: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX332X

00121

——

3320

1100131203311

22130

—3320

333113320

——

RouteTableforNode:3320

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

RouteTableforNode:3312

XXXX3XXX31XX312X

00121

——

3120

1100131203111

22130

—31203122

333113320

——

RouteTableforNode:3122

AddingNode3121• Step1:findRoot

Page 33: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

MakeNewNode’sRoutingTable

• Nodesateachstageoflookshareprefix• Youcanbuildanewroutingtableby:

• Option1:Takingsubsetofroutingtables ateachstep• Option2:Takeback-pointers --- foreachbackpointer askforbackpointers

31222130 31113xxx

3123?

AddingNode3121• Step1:findRoot• Step2:Makeroutetablefor3121

3120

Option1

Givemeentriesinrow0

Givemeentriesinrow1

Givemeentriesinrow2

Givemeentriesinrow3

3123RouteTable

Page 34: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

XXXX3XXX33XX332X

00121

——

3320

1100131203311

22130

—3320

333113320

——

RouteTableforNode:3320

XXXX3XXX33XX331X

00331

———

11332311133123311

22302

—33203312

333123312

——

RouteTableforNode:3312

2=Prefix(3312,3320)

XXXX3XXX31XX312X

00121

——

3120

1133231223111

---

22302

—31223122

333123311

——

RouteTableforNode:3122 1 =Prefix(3320,3122)

Page 35: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

MakeNewNode’sRoutingTable

• Nodesateachstageoflookshareprefix• Youcanbuildanewroutingtableby:

• Option1:Takingsubsetofroutingtables ateachstep• Option2:Takeback-pointers ---

3122Back-

pointersBack-

pointers

3xxx

3121?

AddingNode3121• Step1:findRoot• Step2:Makeroutetablefor3121

Back-pointers

Option2

Givemepointeroverlap0

Givemepointersoverlap1

Givemepointersoverlap2

Givemepointersoverlap3

3121RouteTable

Step1:Askrootforbackpointerswithoverlapp=prefixlen(newNodeID,RootID)Step2:foreachbackpointers• Askforit’sbackpointerswithoverlapp—Step3:repeatstep2untilp=0

Page 36: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

• Everynodein3121Routingtable• Send`hello’message• Theyshouldaddyoutotheirbackpointer

AddingNode3123• Step1:findRoot• Step2:Makeroutetablefor3123• Step2.1:updatebackpointers

RouteTableBackPointers

Objectstore(localKV)

RouteTableBackPointers

Objectstore(localKV)

3121 Nodein3121RoutingTable

Page 37: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

• Problem:newnodecanfillinemptyslotinafewroutingtables

• Solutions• Option1:sendamessage toeverynode• Option2:sendamessage to‘need-to-know’nodes

• i.e.,nodes thatweknow haveanyemptyslotwherethenewnode’s IDgoes

AddingNode3121• Step1:findRoot• Step2:Makeroutetablefor3121• Step2.1:updatebackpointers• Step3:update `needtoknownodes’’

Page 38: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

SurrogateRoutingfor3021

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

3021

3xxx3xxx 30xx?

30xx?

31xx

31xx

312x312x

3121?31223121?

3122

Anynodewith30XXinitsroutingtable isaneedtoknownode

Page 39: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

SurrogateRoutingfor3021

2130

3122

3312 2302

31111332

31200121

0331

1331

1001

3311

3320

3021

3xxx3xxx 30xx?

30xx?

31xx

31xx

312x312x

3121?31223121?

3122

Anynodewith30XXinitsroutingtable isaneedtoknownode

SurrogateRootcontactsnodes

Page 40: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

Updatingneedtoknownodes

Root

3121?

Neighbors

SendtoNewNodetoneighborswithp=prefix(root,NewNode)

SendtoNewNodetoneighborswithprefixp--

3***

Note: inthisexample,since p=1(3***),

Page 41: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

Tapestry:Optimizations

Page 42: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

ImplicationsofNodeFailure

• Problem:whenanodecrashes,allobjectsstoredonnodearelost• Naïvesolution:clientsrepublishobjectsperiodically

• I.e.,You(asaclient)needtorepublishyourfacebook pictures.• Drawback1:clients needtostoreandrepublish• Drawback2:objectsareunavailable untilclientrepublishes

• Whataresomealternativesolutions?

• ``salt’’thehashandpublishseveralcopiesoftheobject• Recoverfromfailurethroughredundancy

Page 43: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

LatencyOptimization:EntrySelection

• Problem:multipleoptionsforeachroutingtableentry• Howdoyouselectone?

• Shortestdistance• Benefit: lowerslookuplatency

XXXX3XXX33XX331X

0331———

1332311133123311

2302—

33203312

33123312

——

Options:• 3312• 3320• 3311• 3312• 3111

Page 44: Distributed Systems - Brown Universitycs.brown.edu/courses/cs138/s19/lectures/Day6_2019.pdf · 2019-02-13 · 1 6 5 Routing Algorithm 2130 3122 3312 2302 3111 1332 0121 3120 0331

DistributedHashTableRecap

• Consistenthash(Chash)• Benefitofconsistenthashingovertraditional keyallocation• Howtomapkeystoservers

• Chord(practicaluseofChash)• Terms:Successor, routingtable (finger table),• Building aroutingtable• Performing look-ups

• Tapestry• Terms: rootnode,surrogatenode,backpointers, publishing• Building routingtable• Performing lookup(regular routing, surrogaterouting)• Adding/deleting anode(``need-to-know’’)• Optimizations (``salting’’,entryselection)

k1 v1

k2 v2

k3 v3

k4 v4

k5 v5

k0 v0

Hash table

k4 v4

k5 v5

RouteTableBackPointers

Local<K,V>

32ff

7fc5

9d5e

0d61f623

3a3e

8006

8 b 8 7

7 1 b 1

5 2 6 9

a a 2 e

a 2 d 4

8 fa a

9 d ca

dfcf

c1d9