Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
First step of “Chord”
Search
Yoshiaki Yoshida
September 23, 2016
Technology
0
750
First step of “Chord”
First step of “Chord”
Yoshiaki Yoshida
September 23, 2016
Tweet
Share
More Decks by Yoshiaki Yoshida
See All by Yoshiaki Yoshida
技術ブロガーを育てる!ブログメンタリングで何を教えているのか / Passion for Blog Mentoring
kakakakakku
8
35k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.4k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
5.5k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
6.4k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
8.7k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
1.9k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
42
45k
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
kakakakakku
0
12k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.2k
Other Decks in Technology
See All in Technology
どう買う?Azure
kuniteru
1
190
Cloud Deploy と仲良くなりたい
phaya72
1
100
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
730
任意コード実行の原理
ffri
0
170
SREsのためのSRE定着ガイド
netmarkjp
10
1.6k
HoneycombとOpenTelemetryでオブザーバビリティに入門してみる
sumiren
2
150
検証からプロダクトへ: シームレスなLLM開発の ためのしくみ作り
nunukim
1
170
戦略的DDDを実践するための跳躍力 / OOC 2024
pictiny
6
3.9k
関数型DDDの理論と実践:「決定を遅らせる」を先につくり、 ビジネスの機動力と価値をあげる
knih
2
480
サービスメッシュ環境における OpenTelemetry 活用 / OpenTelemetry in Service Mesh
k6s4i53rx
2
840
業務で使えるかもしれない…!?GitHub Actions の Tips 集 / CI/CD Test Night #7
ponkio_o
PRO
24
7k
Autify Company Deck
autifyhq
1
30k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.6k
What the flash - Photography Introduction
edds
64
11k
4 Signs Your Business is Dying
shpigford
174
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Fireside Chat
paigeccino
19
2.6k
Building Your Own Lightsaber
phodgson
97
5.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
111
35k
Product Roadmaps are Hard
iamctodd
43
9.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
WebSockets: Embracing the real-time Web
robhawkes
59
6.9k
GitHub's CSS Performance
jonrohan
1023
450k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
1.9k
Transcript
First step of “Chord” 2016-09-23 ࣾษڧձ @kakakakakku
Cloud Computing Concepts, Part 1 by
࠷ۙ Coursera Ͱ ཤमͯ͠ΔߨٛͰֶΜͩ “Chord” ΛβοΫϦͱհ͠·͢
What is “Chord” ?
None
(ƅшƅ) ŴƅŜŖƃ ?
εέʔϥϏϦςΟͷ͋Δ P2P ୳ࡧΞϧΰϦζϜʢҙ༁ʣ → ൃද2001
[Related Algorithms] Tapestry Pastry Kademlia ʘ ࠓհ͠ͳ͍͚Ͳଞʹ͋Δ ʗ
[Related Implementation] Cassandra Dynamo Riak Voldemort ʘ ϛυϧΣΞΛΠϝʔδ͢Δͱۙײ༙͘ ʗ
ʘ Dynamo ͷจ·ͨผͷػձʹհ͠·͢ ʗ
P2P Λྨ͢Δͱ...
Unstructured Overlay Structured Overlay Chord Napster / Gnutella
Goal of “Chord”
େྔͷΩʔΛͲ͏ࢄͤ͞Δ ? େྔͷΩʔΛͲ͏ޮతʹ୳ࡧͤ͞Δ ? ϊʔυͷ૿ݮʹͲ͏ରԠ͢Δ ?
“Chord” = Consistent Hashing + Finger Table
(ƅшƅ) Űō?
Consistent Hashing ղઆ
None
ҰݴͰද͢ͱ Ωʔͷ࠶ஔͷӨڹΛݮͨ͠ ޮతͳϋογϡ๏ʢҙ༁ʣ
Bad Example ʘ ࠷ॳʹμϝͳྫΛݟͯΈ·͠ΐ͏ ʗ
3 Nodes 4 Keys ΩϨΠʹ ࢄͨ͠ ??? ୯७ʹ mod ͰΩʔΛϊʔυʹஔ͢Δͱ...
͠1 ނোͨ͠߹ ΦϨϯδҎ֎ શͯͷΩʔΛ࠶ஔ ͢Δඞཁ͕͋Δ
Consistent Hashing ొ
ϊʔυͱΩʔΛϋογϡԽͯ͠ ԾϦϯά্ʹஔ͢Δ ※ԾͷҙຯࠓճׂѪ͠·͢...
֤Ωʔ͔Βݟͯ ࣌ܭճΓʹ1൪ۙͨ͠ϊʔυʹ ΩʔΛஔ͢Δͱ͍͏ߟ͑ํ ʢͦͷϊʔυ Successor ͱݺͿʣ
Ϧϯάۭؒ ஔ ஔ ஔ
Ϧϯάۭؒ ނোͰ࠶ஔ͕ඞཁͳΩʔ ʹݮ͞ΕΔ ஔ ࠶ஔ ஔ
Αͬͯ ϊʔυՃʗނোʢҙਤతͳݮগʣ ʹରͯ͠ ہॴతͳӨڹʹ͑ΒΕΔ
Finger Table ղઆ
Chord ͷಛతͳΈ ! ҰݴͰද͢ͱγϣʔτΧοτతͳ ?
Bad Example ʘ ࠷ॳʹμϝͳྫΛݟͯΈ·͠ΐ͏ ʗ
୳ࡧ͢Δͱ͖ʹ key ͕͋Δ ୳ࡧΛϦΫΤετ ͢Δϊʔυ
ϊʔυΛॱ൪ʹḷͬͯ͠·͏ͱ ઢܗ୳ࡧʹͳͬͯ͠·͏… ʘ Oh, No! ʗ
Finger Table ొ
ҙͷϊʔυʹରͯ͠ ࢦؔతʹ୳ࡧՄೳͳ ϩέʔγϣϯʢҙ༁ʣΛఆΊͯ ଟஈ֊ʹ୳ࡧͤ͞Δ
͜ͷྫͩͱ m=3 ͰޮՌ͕ແͦ͞͏ʹݟ͑Δ͚Ͳ... Finger Table
ઢܗ୳ࡧΛճආͰ͖ΔͨΊ ۭؒͷεέʔϦϯάʹରͯ͠ ୳ࡧ࣌ؒେ͖͘ࠨӈ͞Εͳ͘ͳΔ ʘ Good! ʗ
“Chord” = Consistent Hashing + Finger Table ʘ βοΫϦͱཧղͯ͠Β͑ͨ ?
ʗ
࣮ࡍͷ “Chord” Ͱ ϊʔυΛ SHA-1(ip, port) Ͱஔͯ͠ ΩʔΛ SHA-1(key) Ͱஔ͢Δ
※SHA-1 ͳΒ 160 bit ͷۭؒͰදݱͰ͖Δ
·ͱΊ
ʑͬͯΔٕज़ ੈքதͷεΰΠਓ͕ͨͪߟ͑ͨ ΞϧΰϦζϜʹࢧ͑ΒΕ͍ͯΔʂ
ٕज़Λͨͩ͏͚ͩͰͳ͘ ཁૉٕज़Λཧղ͢Δ͜ͱॏཁʂ
To be continued …