Riakで何ができるのか?SoftLayer上で動かすと何がさらに嬉しいのか?という基本的な話から、Riakを構成する基本的な技術を解説します。
http://softlayer.connpass.com/event/6864/
Why Riak? Why SoftLayer?2014/7/25 SoftLayerษڧձ #2 @kuenishi
View Slide
ࣗݾհ•UENISHI Kota @ kuenishi •github, twitter, … •Erlangྺ5ɺࢄγεςϜྺ6 •࠷ۙ Riak CS ͷ։ൃ
Riak is Կ•ʮNoSQLσʔλϕʔεʯ •ErlangͰॻ͔Ε͍ͯΔΒ͍͠ •…ͱ͍ΘΕ͍ͯΔ͕ৄ͍͠ޙ΄Ͳ
What?
Yay!!
1Ҏ্લ͔Β ͑ͯ·ͨ͠
Why Riak?
Riak͍υίϩ•Մ༻ੑ͕େࣄͳ໘ •εέʔϧΞοϓɾμϯͳͲӡ༻ •ϑΣΠϧΦʔόʔ is େม •ωοτϫʔΫ͕ΕͨΒ •ϊʔυՃɾআͷίετ
σʔλϕʔεͷ Մ༻ੑʹର͢ΔڴҖ•ϋʔυΣΞނোʢωοτϫʔΫʣʹΑΔϑΣΠϧΦʔόʔ •ΞοϓάϨʔυɺϝϯςφϯε •աෛՙ •όοΫΞοϓ
ϑΣΠϧΦʔόʔ1. ϚελʔͷނোΛݕग़ʢ>10s secondsʣ 2. εϨʔϒʹΓସ͑ʢ> ??ʣ 3. ϚελʔΛम෮ (>hours) 4. ϚελʔʹΓ͠ (> ??)͏͠Ζ͕Shared DiskͩΖ͏͕ɺShared NothingͩΖ͏͕ɺ DBϓϩηεͷϑΟΤϧΦʔόʔதΞΫηεͰ͖ͳ͍
ωοτϫʔΫނো•ಛผͳΛ͠ͳ͍ݶΓɺϚϧνϚελʢSplit Brainʣঢ়ଶʹͳͬͯσʔλ͕ͣΕͯ͠·͏→म෮ෆೳ •ӡ༻Λͯ͠ͲͪΒ͔ΛϚελʹͯ͠ɺϚελͰͳ͍ํͷωοτϫʔΫͰɺσʔλϕʔε͕͑ͳ͘ͳΔ??
ΞοϓάϨʔυ•σʔλϕʔεͷΞοϓάϨʔυϚΠφʔόʔδϣϯͰ͋ͬͯେม •Ͳ͜ΛͲ͏ࢭΊΔɺͲ͏ىಈ͢Δ1.↑2.↑
աෛՙ•جຊํɿ ෛՙΛԼ͛ΔBUSY!!!
όοΫΞοϓ•ࢭΊΕΔͱͷָ͘͢͝ͳΜ͚ͩͲ…1.→2.→
With Riak:
Quorum ϨϓϦέʔγϣϯ•NݸͷϊʔυʹσʔλΛෳ •ॻࠐ࣌ W ݸͷAck͕͋ΕΑ͍ •ʢ௨ৗɺNحʣ •ಡΈग़࣌͠ R ݸͷAck͕͋ΕΑ͍ • R + W > N ͱͳ͍ͬͯΕΑ͍σϑΥϧτ: (R, W, N) = (2, 2, 3) ͻͱΓ͘Β͍յΕ͍ͯͯWriteՄೳ
Consistent Hashing• 160-bit Ωʔۭؒ • ۭؒΛ͢Δ • ύʔςΟγϣϯϊʔυ͕ݸผཧ • ϨϓϦΧNݸͷύʔςΟγϣϯʹίϐʔ͞ΕΔOPEFOPEFOPEFOPEFhash(“meetups/spamham”)N=3
Ұ࣌ނোͷͱ͖• Ϧϯά্ͷ࣍ͷύʔςΟγϣϯʹͱΓ͋͑ͣॻ͖ࠐΜͰίϐʔΛ3ͭ࡞͓ͬͯ͘ • ͋ͱͰ෮چͨ͠ͱ͖ʹίϐʔΛฦ͢OPEFOPEFOPEFOPEFhash(“meetups/spamham”)N=3
ωοτϫʔΫނোͰ•ωοτϫʔΫஅ͕ى͖͍ͯͯͱΓ͋͑ͣॻ͖ࠐΈΛڐ͢Server2Server1 Server3PUT V=42PUT V=0Server4෮چͨ͠Βॻ͖྆͢ํ͓࣋ͬͯ͘
Write-write Conflict͕ ى͖ͨΒʁ•҉ʹ্ॻ͖ͯ͠͠·Θͳ͍ͨΊͷΈ͕͋Δ •ώϯτ: Siblings & Vector ClocksServer2Server1 Server3PUT V=42PUT V=0V=?
ιϑτΣΞͷ ΞοϓάϨʔυ•ྡಉ࢜ͷόʔδϣϯͰͷແఀࢭɾϩʔϦϯάΞοϓάϨʔυͷಈ࡞อূ1.3.2 1.3.2 1.3.2 1.3.2 1.3.2 1.3.2 1.3.21.4.10 1.4.10 1.4.10 1.4.10 1.4.10 1.4.10 1.4.10
ϋʔυΣΞͷ ΞοϓάϨʔυ•ͲͪΒແఀࢭͰͰ͖Δ •ظతʹੑೳΛ্͍͛ͨͱ͖ •ϊʔυަͰεέʔϧΞοϓ •Ϧιʔεͷར༻ޮ͕Α͍ •ظతʹੑೳΛ্͍͛ͨͱ͖ •ϊʔυՃͰεέʔϧΞτ •͙͢ʹՃͯ͠ΦϯϥΠϯʹͳΕΔաෛՙʹͳΓͦ͏ͳλΠϛϯάͰ…
Ϋϥελؒ ϨϓϦέʔγϣϯ
Why Cloud?
Մ༻ੑɺӡ༻ੑ•σʔλϕʔεͳͲͷϛυϧΣΞ͕͍͘Β༏Ε͍ͯͯҙຯ͕ͳ͍ •ϋʔυΣΞωοτϫʔΫ͕ਖ਼͘͠ઃܭɾӡ༻͞Ε͍ͯͳ͚ΕαʔϏεΛӡ༻Ͱ͖ͳ͍ݐɾిݯɾۭௐωοτϫʔΫαʔόʔHWϛυϧΣΞαʔϏε
͔ͩΒΫϥυ
Why SoftLayer?
ϕΞϝλϧαʔόʔ why?
ԾԽͷΦʔόʔϔουʁ
one of ࢄγεςϜͰେࣄͳ͜ͱis ނোͷ୯Ґ
ނোͷ୯Ґ•1ͭͷσΟεΫ •1ͭͷNIC •1ͭͷαʔόʔ •1ͭͷεΠονԾԽͯ͠ɺͻͱͭͷϚγϯ্ʹෳͷϊʔυ͕ೖ͍ͬͯΔͱɺͻͱͭͷϚγϯނো͕ଟॏނোʹݟ͑ͯ͠·͏
ނোͷ୯ҐϕΞϝλϧαʔόʔ ԾԽ͞ΕͨϚγϯOSRiakOSRiakOSRiakOSRiakOSRiakOSRiakOSRiakOSRiak
ଞʹ•1ͷϚγϯͷϦιʔεΛ༗Ͱ͖Δ •σΟεΫυϥΠϒͷѻ͍͕͍͠ •ڞ༗σΟεΫΛΓग़ͯ͠Ϛϯτͯ͠͏ελΠϧ •EphemeralσΟεΫ •RawσόΠεࢄετϨʔδʹͯ͠͠·͏ •SheepdogతͳͷͬͯλΠϔϯ
࣮ࡍɺੑೳҧ͏Bare Metal Virtual“Riak Performance Analysis: Bare Metal vs Virtual” July 16, 2013 http://blog.softlayer.com/2013/riak-performance-analysis-bare-metal-v-virtual
͔͠SoftLayerͳΒ…•WebϒϥβͰRiakΛҰൃσϓϩΠͰ͖ͯ͠·͏ •DCؒϨϓϦέʔγϣϯͷઃఆʢ͜Εׂ͕ͱ͍͠ʣ͠ͳ͍͍ͯ͘ •ΤϯλʔϓϥΠζ൛ɺBasho͔ΒϥΠηϯεΛങ͏ඞཁ͢Βͳ͍
·ͱΊ•αʔϏεͷՄ༻ੑɺӡ༻ੑϑϧελοΫͰߟ͑Δ͖ •RiakࢄγεςϜͷ͍͠Λղ͍ͯ͘ΕΔ •DC~NW~OSͷ͍͠SoftLayerͰ •RiakͷΫϥελؒϨϓϦέʔγϣϯͰσʔληϯλʔΛލ͝͏
Questions?@BashoJapan [email protected] http://basho.co.jp/riak http://github.com/basho/riak