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
810
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
37k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.7k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
5.8k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
6.9k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
9.2k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
2.2k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
43
47k
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
kakakakakku
0
13k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.4k
Other Decks in Technology
See All in Technology
プロダクトのコードから見るGoによるデザインパターンの実践 #go_night_talk
bengo4com
1
2.6k
20251010_HCCJP_AdaptiveCloudUpdates
sdosamut
0
140
Simplifying Cloud Native app testing across environments with Dapr and Microcks
salaboy
0
180
Geospatialの世界最前線を探る [2025年版]
dayjournal
1
230
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
いまからでも遅くない!SSL/TLS証明書超入門(It's not too late to start! SSL/TLS Certificates: The Absolute Beginner's Guide)
norimuraz
0
260
[Codex Meetup Japan #1] Codex-Powered Mobile Apps Development
korodroid
2
950
能登半島地震において デジタルができたこと・できなかったこと
ditccsugii
0
250
そのWAFのブロック、どう活かす? サービスを守るための実践的多層防御と思考法 / WAF blocks defense decision
kaminashi
0
200
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
240
LLMプロダクトの信頼性を上げるには?LLM Observabilityによる、対話型音声AIアプリケーションの安定運用
ivry_presentationmaterials
0
270
Findy Team+ QAチーム これからのチャレンジ!
findy_eventslides
0
420
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
4 Signs Your Business is Dying
shpigford
185
22k
The World Runs on Bad Software
bkeepers
PRO
72
11k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
600
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How to train your dragon (web standard)
notwaldorf
97
6.3k
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 …