åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã§ãŽææ€–ã¨å̌æ‚Ē



Roman Grebennikovã¯ã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽæ§‹į¯‰ãŽč¤‡é›‘ã•ãĢついãĻčĒŦ明しãĻいぞす。 これは、 Highload ++ 2016ぎãƒŦポãƒŧトです。

ãŋãĒさん、こんãĢãĄã¯ã€ã‚°ãƒŦãƒ™ãƒŗãƒ‹ã‚ŗãƒ•ãƒģロãƒŧãƒžãƒŗã§ã™ã€‚ Findifyで働いãĻいぞす。 ã‚ĒãƒŗãƒŠã‚¤ãƒŗã‚šãƒˆã‚ĸを検į´ĸしぞす。 しかし、äŧščŠąã¯ãã‚ŒãĢついãĻではありぞせん。 Findifyã§ã¯ã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’æ‰ąãŖãĻいぞす。

åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã¨ã¯äŊ•ですかīŧŸ



゚ナイドから、「恐怖と憎しãŋ」はITã§ã‚ˆãã‚ã‚‹ã“ã¨ã§ã‚ã‚Šã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã¯ã‚ãžã‚Šä¸€čˆŦįš„ã§ã¯ãĒいことは明らかです。 ãžãšã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã¨ã¯äŊ•か、ãĒぜそぎようãĒį—›ãŋがあるぎか​​、ãĒぜこぎãƒŦポãƒŧトがåŋ…čρãĒãŽã‹ã‚’į†č§Ŗã—ã‚ˆã†ã¨ã—ãžã™ã€‚

おこかで動äŊœã™ã‚‹äŊ•らかぎã‚ĸプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗãŒã‚ã‚‹ã¨æƒŗåƒã—ãĻください。 ã‚ĩãƒŧバãƒŧ側であるとäģŽåŽšã—ãžã™ãŒã€é€šå¸¸ãŽã‚ĸプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã¨ã¯į•°ãĒり、äŊ•らかぎ内部įŠļæ…‹ã‚’æŒãŖãĻいぞす。 ãŸã¨ãˆã°ã€ã‚˛ãƒŧムがある場合、内部įŠļ態は小さãĒį”ˇãŒčĩ°ã‚‹ä¸–į•ŒãĒおです。 遅かれ旊かれ、あãĒãŸã¯æˆé•ˇã—ã€ã‚ãĒたぎ内部įŠļæ…‹ã¯č†¨åŧĩし、変化し、1つぎã‚ĩãƒŧバãƒŧãĢ収ぞるぎをやめぞす。



ã“ãŽå†™įœŸã§ã¯ã€ããžãŽãƒ—ãƒŧã•ã‚“ãŒįŠ´ãĢåŧ•ãŖã‹ã‹ãŖãĻいぞした。

æˆé•ˇã—å§‹ã‚ã€åŒã˜ã‚ĩãƒŧバãƒŧãĢ収ぞらãĒくãĒãŖãŸå ´åˆã¯ã€äŊ•かをするåŋ…čĻãŒã‚ã‚Šãžã™ã€‚

いくつかぎã‚Ēãƒ—ã‚ˇãƒ§ãƒŗãŒã‚ã‚Šãžã™ã€‚

よりåŧˇåŠ›ãĒã‚ĩãƒŧバãƒŧをäŊŋį”¨ã§ããžã™ãŒã€ã™ã§ãĢ最速ぎã‚ĩãƒŧバãƒŧでäŊœæĨ­ã—ãĻいる可čƒŊæ€§ãŒã‚ã‚‹ãŸã‚ã€čĄŒãæ­ĸぞりぎパ゚ãĢãĒる可čƒŊ性がありぞす。

最遊化することはできぞすが、明įĸēãĢすることはできぞせん。すずãĻをクãƒĒックしãĻ加速するぎは2å€å›°é›Ŗã§ã™ã€‚

あãĒたは非常ãĢ不厉厚ãĒ道ãĢįĢ‹ã¤ã“ã¨ãŒã§ããžã™-åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’äŊœæˆã—ぞす。

こぎトナックは不厉厚で怖いです。

ä슿—ĨãŠčŠąã—ã™ã‚‹ã“ã¨


ãžãšã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãĢついãĻčĒŦ明しぞす。 少しぎ抟器、それが重čĻã§ã‚ã‚‹į†į”ąã€åŽŒå…¨æ€§ã¨ã¯äŊ•か、こぎ厌全性をįĩ„ãŋåˆã‚ã›ã‚‹æ–šæŗ•ã€ãƒ‡ãƒŧã‚ŋã‚’å¤ąãŖãŸã‚Šã€å°‘ã—ã ã‘å¤ąã‚ãĒã„åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’č¨­č¨ˆã™ã‚‹ãŸã‚ãŽã‚ĸプロãƒŧãƒã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’įĸēčĒã™ã‚‹ãŸã‚ãŽãƒ„ãƒŧãƒĢすずãĻがデãƒŧã‚ŋでå„ĒれãĻいるか、ãģとんおすずãĻがå„ĒれãĻいぞす。

1ã¤ãŽį†čĢ–ã¯é€€åąˆãĒãŽã§ã€ã“ãŽå•éĄŒã¨å°‘ã—ãŽįˇ´įŋ’ãĢついãĻå°‘ã—ãŠčŠąã—ãžã™ã€‚ こぎナップトップをäŊŋį”¨ã—ãĻ、į‹Ŧč‡Ēぎ小čĻæ¨Ąã§ã‚ˇãƒŗãƒ—ãƒĢãĒåˆ†æ•Ŗãƒ‡ãƒŧã‚ŋベãƒŧ゚をäŊœæˆã—ぞす。 原際ãĢはデãƒŧã‚ŋベãƒŧ゚ではãĒく、キãƒŧ値゚トãƒŦãƒŧジではãĒく、値゚トãƒŦãƒŧジがありぞす。 æŦĄãĢ、åŊŧåĨŗãŒãƒ‡ãƒŧã‚ŋを2回äģĨä¸Šã€į‰šãĢã˛ãŠã„ãƒãƒŧã‚ēã§å¤ąã‚ãĒいことをč¨ŧ明しようとしぞす。

æŦĄã¯ã€ã€Œãã‚Œã¨ã¨ã‚‚ãĢį”Ÿãã‚‹æ–šæŗ•ã€ã¨ã„ã†å°ã•ãĒ哞å­Ļです。

åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã¯ãŠã“ã‹é ãã§æŠŸčƒŊã™ã‚‹ã‚‚ãŽã§ã‚ã‚Šã€į§ãŸãĄã¯ã“ã“ãĢåē§ãŖãĻいると思いぞす。 ã‚ĩãƒŧバãƒŧである場合もあれば、äē’いãĢ通äŋĄã™ã‚‹ãƒĸバイãƒĢã‚ĸプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã§ã‚ã‚‹å ´åˆã‚‚ã‚ã‚Šã€äŊ•らかぎ内部įŠļæ…‹ã‚’æŒãŖãĻいぞす。 å‹é”ã¨ãƒ†ã‚­ã‚šãƒˆãƒĄãƒƒã‚ģãƒŧジを送äŋĄã—ãĻいる場合、あãĒãŸã‚‚åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽä¸€éƒ¨ã§ã‚ã‚Šã€ä¸€čˆŦįš„ãĒæĄäģļがあり、それãĢ同意しようとしãĻいぞす。 一čˆŦãĢã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã¯ã„ãã¤ã‹ãŽéƒ¨åˆ†ã§æ§‹æˆã•ã‚Œã‚‹ã‚¸ãƒ§ãƒŧクであり、これらぎ部分はäē’いãĢ通äŋĄã—ぞす。 しかし、遅åģļとエナãƒŧで通äŋĄã™ã‚‹ã¨ã„うäē‹åޟãĢより、すずãĻãŒč¤‡é›‘ãĢãĒりぞす。 これはä狿…‹ã‚’非常ãĢ複雑ãĢしぞす。

äēēį”Ÿã‹ã‚‰ãŽå°ã•ãĒ䞋。

į§ãŸãĄã¯ã‹ã¤ãĻã‚¤ãƒŗã‚ŋãƒŧネットをã‚ĩãƒŧãƒ•ã‚Ŗãƒŗã™ã‚‹Web゚パイダãƒŧã‚’æ›¸ãã€ã‚ã‚‰ã‚†ã‚‹į¨ŽéĄžãŽį•°ãĒるペãƒŧジをダã‚Ļãƒŗãƒ­ãƒŧドしぞした。 åŊŧãĢã¯é•ˇã„čĒ˛éĄŒãŒã‚ã‚Šã€ãã“ãĢすずãĻã‚’įŠãŋ上げぞした。 キãƒĨãƒŧãĢはいくつかぎåŸēæœŦįš„ãĒ操äŊœãŒã‚りぞす。 これは、キãƒĨãƒŧから取りå‡ēすもぎ、キãƒĨãƒŧãĢå…Ĩれるもぎです。 ぞた、キãƒĨãƒŧãĢ3į•Ēį›ŽãŽæ“äŊœãŒã‚りぞした。キãƒĨãƒŧãĢã‚ĒブジェクトがあるかおうかをįĸēčĒã—ã€åŒã˜ã‚‚ãŽã‚’2回å…ĨれãĒいようãĢしぞす。



å•éĄŒã¯ã€čĄŒãŒéžå¸¸ãĢå¤§ããã€ãƒĄãƒĸãƒĒãĢ収ぞらãĒいことでした。 į§ãŸãĄã¯č€ƒãˆãžã—ãŸīŧšäŊ•がそんãĒãĢ複雑ãĒぎですかīŧŸ į§ãŸãĄã¯čŗĸく、HighLoadãĢčĄŒããžã™ã€‚ ã—ãŸãŒãŖãĻ、こぎキãƒĨãƒŧã‚’į´°ã‹ãåˆ†å‰˛ã—ãĻ、åˆĨぎã‚ĩãƒŧバãƒŧãĢロãƒŧãƒĢしãĻãŋぞしょう。 各ã‚ĩãƒŧバãƒŧはį‹Ŧč‡ĒぎキãƒĨãƒŧをå‡Ļį†ã—ãžã™ã€‚ はい、キãƒĨãƒŧから最初ぎčĻį´ ã‚’å–åž—ã§ããĒã„ã¨ã„ã†æ„å‘ŗã§ã€å°‘ã—æ•´åˆæ€§ãŒå¤ąã‚ã‚Œãžã™ãŒã€ãģとんお最初ぎčĻį´ ã‚’å–åž—ã§ããžã™ã€‚ ã‚ˇãƒŖãƒŧãƒ‰ã‚ąãƒŧ゚を選んで、それから取りå‡ēしãĻ、すずãĻが順čĒŋです。 つぞり、キãƒĨãƒŧから取垗する場合、ãģとんおすずãĻãŒæ­Ŗå¸¸ã§ã‚ã‚Šã€ãƒ­ã‚¸ãƒƒã‚¯ã¯ã‚‚ã†å°‘ã—č¤‡é›‘ãĢãĒãŖãĻいぞす。 キãƒĨãƒŧãĢå…Ĩã‚Œã‚‹ãŽã‚‚į°Ąå˜ã§ã™ã€‚ãŠãŽã‚ˇãƒŖãƒŧドをå…ĨれるかをčĒŋずãĻå…Ĩれぞす。 キãƒĨãƒŧがあるかおうかもįĸēčĒã—ãĻãã ã•ã„ã€‚å•éĄŒã‚‚ã‚ã‚Šãžã›ã‚“ã€‚ ã¯ã„ã€ãƒ“ã‚¸ãƒã‚šãƒ­ã‚¸ãƒƒã‚¯ã¯ã‚‚ã†å°‘ã—č¤‡é›‘ãĢãĒりぞしたが、少ãĒくとも重čĻã§ã¯ãĒくãĒãŖãĻおり、ここãĢã¯čĄ€ãŒæĩã‚ŒãĻいãĒいようです。

おぎようãĒå•éĄŒãŒã‚ã‚Šãžã™ã‹


äŊ•らかぎネットワãƒŧã‚¯ã‚¤ãƒŗã‚ŋãƒŠã‚¯ã‚ˇãƒ§ãƒŗã‚’čŋŊåŠ ã—ã€ã‚ŗãƒŗãƒãƒŧãƒãƒŗãƒˆãŒåĸ—ãˆã‚‹ã¨ã€ã‚ˇã‚šãƒ†ãƒ ãŽäŋĄé ŧ性がäŊŽä¸‹ã™ã‚‹ã“ã¨ã‚’į†č§Ŗã—ãĻいぞす。 äŋĄé ŧ性がäŊŽã„と、間違いがį™ēį”Ÿã—ãžã™ã€‚ ã‚Ŋフトã‚Ļェã‚ĸとハ​​ãƒŧドã‚Ļェã‚ĸぎ場合、すずãĻが明įĸēです。 鉄をäŊŋį”¨ã™ã‚‹ã¨ã€ã‚Ŋフトã‚Ļェã‚ĸをäŊŋį”¨ã—ãĻã‚ĩãƒŧバãƒŧをより新しいもぎãĢすることができぞす-金曜æ—ĨãĢé…”ãŖãĻåą•é–‹ã—ãĒいでください。 そしãĻ、ネットワãƒŧクでは、そぎようãĒことはあãĒたがそれをおうするかãĢé–ĸäŋ‚ãĒãåŖŠã‚Œãžã™ã€‚ MicrosoftãĢは、Windows AzureãŽã‚šã‚¤ãƒƒãƒãŽį¨ŽéĄžãĢåŸēãĨいたネットワãƒŧクハãƒŧドã‚Ļェã‚ĸéšœåŽŗįĩąč¨ˆãĢé–ĸするå„Ēã‚ŒãŸč¨˜äē‹ãŒã‚りぞす。 ロãƒŧãƒ‰ãƒãƒŠãƒŗã‚ĩãƒŧポãƒŧトが嚴間を通じãĻうãĒるįĸēįŽ‡ã¯į´„17īŧ…です。 つぞり、拒åĻした場合ãĢäŊ•をすずきかを提䞛しãĒいと、遅かれ旊かれあãĒたはčĒ°ã‹č‰¯ã„äēēを丸willãŋするでしょう。

ネットワãƒŧクでį™ēį”Ÿã™ã‚‹æœ€ã‚‚ä¸€čˆŦįš„ãĒå•éĄŒã¯ã€NETSPLITです。 ネットワãƒŧクが半分ãĢå´ŠåŖŠã—ãŸã¨ãã€ãã‚Œã¯įĩļãˆãšå´ŠåŖŠã—ãŸã‹ã€ãƒ‘ã‚ąãƒƒãƒˆæå¤ąãŒã‚ã‚Šãžã™ã€‚ こぎįĩæžœã€ãã‚Œã¯ãƒãƒŠãƒãƒŠãĢãĒるか、バナバナãĢãĒりぞせんでした。

ネットワãƒŧクãĢå•éĄŒãŒã‚ã‚‹å ´åˆã€ã‚ˇãƒŖãƒŧãƒ‡ã‚Ŗãƒŗã‚°ãŽã‚­ãƒĨãƒŧはおうãĒりぞすかīŧŸ

キãƒĨãƒŧからäŊ•かを取垗する場合、キãƒĨãƒŧから最初ぎčĻį´ ã‚’å–åž—ã™ã‚‹æē–備ができãĻã„ã‚‹å ´åˆã¯ã€åˆŠį”¨å¯čƒŊãĒã‚ˇãƒŖãƒŧドから取垗することができぞす。

キãƒĨãƒŧãĢã‚ŗãƒŗãƒãƒŧãƒãƒŗãƒˆãŒã‚ã‚‹ã‹ãŠã†ã‹ã‚’įĸēčĒã™ã‚‹åŋ…čĻãŒã‚ã‚‹å ´åˆã€äŊŋį”¨ã§ããĒã„ã‚ˇãƒŖãƒŧドãĢį§ģ動するåŋ…čĻãŒã‚ã‚‹å ´åˆã¯äŊ•もできãĒいというäē‹åޟãĢより、すずãĻãŒč¤‡é›‘ãĢãĒりぞす。

しかし、キãƒĨãƒŧãĢäŊ•かをå…Ĩれるåŋ…čĻãŒã‚ã‚‹ã¨ä狿…‹ã¯č¤‡é›‘ãĢãĒã‚Šã€ã‚ˇãƒŖãƒŧãƒ‰ã¯åˆŠį”¨ã§ããžã›ã‚“ã€‚ ããŽį ´į‰‡ã¯ãŠã“ã‹é ããĢあるぎで、それをįŊŽãå ´æ‰€ã¯ã‚りぞせん。 ãã‚Œã‚’å¤ąã†ã‹ã€ãŠã“ã‹ãĢåģᅵŸã—ãĻそれからäŊ•かをするäģĨ外ãĢäŊ•ã‚‚æŽ‹ãŖãĻいぞせん。 ã‚ˇã‚šãƒ†ãƒ ãŽč¨­č¨ˆãĢå¤ąæ•—ã‚’å…ĨれãĒã‹ãŖãŸã‹ã‚‰ã§ã™ã€‚



ãŠã˜ã•ã‚“ã¯å†™įœŸã§æ‚˛ã—ã„ã€‚ åŊŧã¯ã‚ˇã‚šãƒ†ãƒ ãŽč¨­č¨ˆãĢå¤ąæ•—ã‚’ã—ãĒã‹ãŖãŸã‹ã‚‰ã§ã™ã€‚ į§ãŸãĄã¯čŗĸく、非常ãĢčŗĸãã€ã“ãŽå•éĄŒãĢ寞å‡Ļã™ã‚‹ãŸã‚ãŽå¤šããŽį•°ãĒる選択č‚ĸã‚’č€ƒãˆå‡ēしたäģ–ぎ叔įˆļがいることはįĸēかです。



æŦĄãĢ、CAPåŽšį†ãŒã‚ˇãƒŧãƒŗãĢ襨į¤ēされぞす。

CAPåŽšį†ã¯ã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽč¨­č¨ˆãŽåŸēį¤Žã§ã™ã€‚ ã“ã‚Œã¯æ­ŖåŧãĢã¯åŽšį†ã§ã¯ãĒく、įĩŒé¨“å‰‡ã§ã‚ã‚‹åŽšį†ã§ã™ãŒã€čĒ°ã‚‚ãŒåŽšį†ã¨å‘ŧんでいぞす。

æŦĄãŽã‚ˆã†ãĢčžã“ãˆãžã™ã€‚ åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’äŊœæˆã™ã‚‹3ã¤ãŽæŸąãŒã‚ã‚Šãžã™ã€‚ ã“ã‚Œã¯ã€æ•´åˆæ€§ã€å¯į”¨æ€§ã€ãŠã‚ˆãŗãƒãƒƒãƒˆãƒ¯ãƒŧã‚¯ãŽå•éĄŒãĢå¯žã™ã‚‹č€æ€§ã§ã™ã€‚ クジナは3匚いぞすが、2匚を選ãļことができぞす。 2つだけでãĒく、ãģとんお2つです。 これãĢついãĻは垌でčĒŦ明しぞす。

順åē-整合性、ã‚ĸクã‚ģã‚ˇãƒ“ãƒĒãƒ†ã‚Ŗã€æŒįļšå¯čƒŊ性とはäŊ•ですか。 ã“ã‚Œã¯ä¸€į¨ŽãŽåŽšį†ã§ã‚ã‚Šã€æ­ŖåŧãĒčĒŦ明がåŋ…čĻã§ã™ã€‚

在åēĢįŠļæŗ


ã“ã‚Œã¯å¯į”¨æ€§ã§ã‚ã‚Šã€įļ™įļšįš„ãĒå¯į”¨æ€§ã‚’æ„å‘ŗã—ãžã™ã€‚ ã‚ˇã‚šãƒ†ãƒ ã¸ãŽå„ãƒĒã‚¯ã‚¨ã‚šãƒˆã€į”ŸããĻいるノãƒŧãƒ‰ã¸ãŽã‚ˇã‚šãƒ†ãƒ ã¸ãŽãƒĒクエ゚トはすずãĻæ­Ŗå¸¸ãĢå‡Ļį†ã•ã‚ŒãĒければãĒりぞせん。 つぞり、ãƒĒクエ゚トぎ一部を垌でåģᅵŸã™ã‚‹ã‹ã€äŊ•かがうぞくいかãĒã‹ãŖãŸãŸã‚ãĢéŒ˛éŸŗã‚’å´æ–šãĢåģᅵŸã—た場合、これは一č˛Ģ性ぎãĒã„å¯į”¨æ€§ã§ã™ã€‚ すずãĻぎノãƒŧドがčĻæą‚ãĢåŋœį­”しãĒい場合、ぞたはすずãĻぎノãƒŧドがすずãĻぎčĻæą‚ãĢåŋœį­”しãĒい場合、これはCAPåŽšį†ãŽčĻŗį‚šã‹ã‚‰ã‚‚ä¸€č˛Ģ性ぎãĒã„å¯į”¨æ€§ã§ã™ã€‚

これがあãĒたãĢį­”ãˆãŸã‚‰īŧš



ã“ã‚Œã‚‚å¯å¤‰å¯į”¨æ€§ã§ã™ã€‚

čĒ åŽŸã•


æŦĄãŽé …į›Žã¯æ•´åˆæ€§ã§ã™ã€‚ 整合性ぎčĻŗį‚šã‹ã‚‰ã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãĢは非常ãĢå¤šããŽį•°ãĒるã‚ŋã‚¤ãƒ—ãŽæ•´åˆæ€§ãŒã‚ã‚‹ã¨č¨€ãˆãžã™ã€‚



ãã‚Œã‚‰ãŽį´„50がありぞす。 CAPåŽšį†ãĢあるぎはおれですかīŧŸ

CAPåŽšį†ã¯æœ€ã‚‚åŽŗæ ŧãĒã‚ŋイプです。 ᎚åŊĸ化可čƒŊ性がå‘ŧãŗå‡ēされぞす。

æ•´åˆæ€§ã€įˇšåŊĸ化可čƒŊ性。 とãĻã‚‚ã‚ˇãƒŗãƒ—ãƒĢãĢčžã“ãˆãžã™ãŒã€ããŽä¸‹ãĢは大きãĒåŊąéŸŋがありぞす。 操äŊœAぎ垌ãĢ操äŊœBが開始された場合、BはAぎįĩ‚わりぞたはより新しいįŠļæ…‹ã§ã‚ˇã‚šãƒ†ãƒ ã‚’čĻ‹ã‚‹ã¯ãšã§ã™ã€‚ つぞり、Aが厌äē†ã™ã‚‹ã¨ã€æŦĄãŽæ“äŊœã§ã¯Aぎ前ãĢäŊ•がčĩˇã“ãŖãŸãŽã‹ã‚’čĻ‹ã‚‹ã“ã¨ãŒã§ããžã›ã‚“ã€‚ã™ãšãĻがčĢ–į†įš„ã§ã€č¤‡é›‘ãĒことはäŊ•ã‚‚ãĒいようです。 č¨€ã„æ›ãˆã‚‹ã¨ã€ã€Œã‚ˇãƒŧã‚ąãƒŗã‚ˇãƒŖãƒĢ操äŊœãĢは一č˛ĢしたåąĨ歴がありぞす。」

æŦĄãĢ、これらぎ゚トãƒŧãƒĒãƒŧãĢついãĻčŠŗã—ãčĒŦ明しぞす。



äŊ•らかぎãƒŦジ゚ã‚ŋãŒã‚ã‚‹ã¨æƒŗåƒã—ãĻください。 ã“ã‚Œã¯į§ãŸãĄãŒčĒ­ã‚€ã“ã¨ãŒã§ãã‚‹ã‚‚ãŽã§ã‚ã‚Šã€äģĨ前ãĢそこãĢ書いたもぎだけです。 å¤‰æ•°ãŽãŸã‚ãŽãŸã ä¸€ã¤ãŽįŠ´ã€‚ ãƒĒãƒŧダãƒŧとナイã‚ŋãƒŧは1äēēです。 そこですずãĻをčĒ­ãŋæ›¸ãã—ãžã™ãŒã€č¤‡é›‘ãĒことはäŊ•もありぞせん。 čĒ­č€…ã¨äŊœåŽļãŒč¤‡æ•°ã„ã‚‹ã¨ã—ãĻも、それãģãŠč¤‡é›‘ãĒことはありぞせん。



ã—ã‹ã—ã€ã‚šãƒŠã‚¤ãƒ‰ã‹ã‚‰åŽŸéš›ãŽä¸–į•ŒãĢį§ģ動するとすぐãĢ、ネットワãƒŧクぎ遅åģļãŒã‚ã‚‹ãŸã‚ã€ã“ãŽå›ŗã¯å°‘ã—į•°ãĒãŖãĻčĻ‹ãˆãžã™ã€‚ æ­ŖįĸēãĒ時期はわかりぞせん。 éŒ˛éŸŗã¯wとw1ãŽé–“ã§čĄŒã‚ã‚Œã€æ­ŖįĸēãĢおこでčĩˇã“ãŖãŸã‹ã¯ã‚ã‹ã‚Šãžã›ã‚“ã€‚ æ¸Ŧ厚値も同じです。 ãŸã¨ãˆã°ã€æ­´å˛ãŽčĻŗį‚šã‹ã‚‰ã€ã“ãŽã‚ˆã†ãĒå˜į´”ãĒ3つぎ゚トãƒŧãƒĒãƒŧã‚’æ›¸ãį•™ã‚ã‚‹ã“ã¨ãŒã§ããžã™ã€‚



最初ãĢaをčĒ­ã‚“ã§ã‹ã‚‰ã€bを書いãĻから、bをčĒ­ãŋãžã™ã€‚å†™įœŸãŽã‚ˆã†ãĢã¯ãŖãã‚Šã¨ã€‚ 原則としãĻ、åˆĨぎ゚トãƒŧãƒĒãƒŧが可čƒŊです。aをčĒ­ã‚“ã ã¨ãã€aをもう一åēĻčĒ­ã‚“ã§ã‹ã‚‰ã€bを書きぞしたīŧˆå†™įœŸãŽã‚ˆã†ãĢすずãĻがある場合īŧ‰ã€‚

įŦŦä¸‰čŠąã€‚ aをčĒ­ã‚“ã åžŒã€įǁį„ļbをčĒ­ã‚“ã§ã‹ã‚‰bã‚’æ›¸ã„ãŸå ´åˆã€ãã‚Œã¯ãã‚Œã¨įŸ›į›žã—ãžã™ã€‚ ᎚åŊĸ化可čƒŊ性ぎčĻŗį‚šã‹ã‚‰ã€ã“ãŽã‚ˆã†ãĒ゚トãƒŧãƒĒãƒŧã¯įˇšåŊĸ化できぞせんが、CAPåŽšį†ã§ã¯ã€įŸ›į›žã—ãĒい゚トãƒŧãƒĒãƒŧが少ãĒくとも1つ存在するåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ ããŽåžŒã€ã‚ˇã‚šãƒ†ãƒ ã¯įˇšåŊĸ化可čƒŊです。 いくつかあるかもしれぞせん。

持įļšå¯čƒŊ性


æœ€åžŒãŽé …į›Žã¯ã€æ–‡å­—Pです。パãƒŧãƒ†ã‚Ŗã‚ˇãƒ§ãƒŗãŽč¨ąåŽšį¯„å›˛ã¯ã€ãƒ­ã‚ˇã‚ĸčĒžã§ã¯ã€Œãƒãƒƒãƒˆãƒ¯ãƒŧクぎ停æ­ĸãĢ寞するæŠĩæŠ—ã€ã¨č¨€ãˆãžã™ã€‚ æŦĄãŽã‚ˆã†ãĢãĒりぞす。



数台ぎã‚ĩãƒŧバãƒŧがあり、掘削抟が旊朝ここãĢ運čģĸã—ã€ãã‚Œã‚‰ãŽé–“ãŽé…įˇšã‚’åˆ‡æ–­ã—ãŸã¨æƒŗåƒã—ãĻください。 クナ゚ã‚ŋãƒŧが半分ãĢバナバナãĢãĒãŖãŸå ´åˆã€2つぎã‚Ēãƒ—ã‚ˇãƒ§ãƒŗãŒã‚ã‚Šãžã™ã€‚ æœ€åˆãŽæ–šæŗ•īŧšå¤§ãã„æ–šãŽåŠåˆ†ãŒį”Ÿå­˜ã—ã€å°ã•ã„æ–šãŒč„ąčŊしぞす。 å°ã•ã„æ–šãŒč„ąčŊしãĻいるため、ã‚ĸクã‚ģã‚ˇãƒ“ãƒĒãƒ†ã‚ŖãŒå¤ąã‚ã‚ŒãĻいぞす。 しかし、大きãĒã‚‚ãŽã¯į”ŸããĻいぞす。 しかし、åŊŧã‚‰ã¯åŽŒå…¨æ€§ã‚’å¤ąã„ãžã›ã‚“ã§ã—ãŸã€‚ ä¸Ąæ–šã¨ã‚‚æŠŸčƒŊã—ãžã™ã€‚į§ãŸãĄã¯ã‚ãĄã“ãĄã§č¨˜éŒ˛ã‚’å—ã‘å…Ĩれ、すずãĻを受けå…Ĩれぞす。すずãĻã¯å•éĄŒã‚ã‚Šãžã›ã‚“ã€‚ そうしãĻはじめãĻ、ワイヤがはんだäģ˜ã‘されると、1ã¤ãŽã‚ˇã‚šãƒ†ãƒ ãŒã‚ã‚Šã€2ã¤ãŽã‚ˇã‚šãƒ†ãƒ ãŒã‚ã‚Šã€ãã‚Œã‚‰ã¯č‡Ēåˆ†ãŸãĄãŽį”Ÿæ´ģを送ることがわかりぞす。

CAPåŽšį†ãŽčĻŗį‚šã‹ã‚‰ã€ã‚ˇã‚šãƒ†ãƒ ãŽč¨­č¨ˆãĢは3つぎã‚ĸプロãƒŧチがありぞす。 これらは、3つぎ2つぎįĩ„ãŋ合わせãĢ䞝存するCP / AP / ACã‚ˇã‚šãƒ†ãƒ ã§ã™ã€‚

ACã‚ˇã‚šãƒ†ãƒ ãĢå•éĄŒãŒã‚ã‚Šãžã™ã€‚ 一斚で、åŊŧã‚‰ã¯į§ãŸãĄãŒéĢ˜å¯į”¨æ€§ã¨æ•´åˆæ€§ã‚’æŒãŖãĻいることをäŋč¨ŧしぞす。 ネットワãƒŧã‚¯ãŒåŖŠã‚Œã‚‹ãžã§ã€ã™ãšãĻがクãƒŧãƒĢです。 ぞた、これはé ģįšãĢį™ēį”Ÿã™ã‚‹ãŸã‚ã€åŽŸéš›ãĢはACã‚ˇã‚šãƒ†ãƒ ã‚’äŊŋį”¨ã§ããžã™ãŒã€ACã‚ˇã‚šãƒ†ãƒ ã‚’äŊŋį”¨ã™ã‚‹ã¨ããĢį”Ÿã˜ã‚‹åĻĨå”į‚šã‚’į†č§Ŗã—ãĻいる場合ãĢ限りぞす。

įžåŽŸãŽä¸–į•ŒãĢは2ã¤ãŽæ–šæŗ•ãŒã‚ã‚Šãžã™ã€‚ æ•´åˆæ€§ã‚’ã‚ˇãƒ•ãƒˆã—ãĻã‚ĸクã‚ģã‚ˇãƒ“ãƒĒãƒ†ã‚Ŗã‚’å¤ąã†ã‹ã€ã‚ĸクã‚ģã‚ˇãƒ“ãƒĒãƒ†ã‚ŖãĢã‚ˇãƒ•ãƒˆã—ãĻã‚‚æ•´åˆæ€§ã‚’å¤ąã†ã“ã¨ãŒã§ããžã™ã€‚ 3į•Ēį›Žã¯ã‚ã‚Šãžã›ã‚“ã€‚

原際ãĢは、さぞざぞãĒCP / AP / ACã‚ˇã‚šãƒ†ãƒ ã‚’åŽŸčŖ…ã™ã‚‹å¤šããŽã‚ĸãƒĢゴãƒĒã‚ēムがありぞす。 2フェãƒŧã‚ēã‚ŗãƒŸãƒƒãƒˆã€Paxos、クりãƒŧãƒŠãƒ ãŠã‚ˆãŗããŽäģ–ãŽã„ã‹ã ã€ã‚´ã‚ˇãƒƒãƒ—ãŠã‚ˆãŗããŽäģ–ぎã‚ĸãƒĢゴãƒĒã‚ēムヒãƒŧプ。

æŦĄãĢã€ãã‚Œã‚‰ãŽã„ãã¤ã‹ã‚’åŽŸčŖ…ã—ãĻ、äŊ•がčĩˇã“るかをįĸēčĒã—ãžã™ã€‚ あãĒãŸã¯č¨€ã†ã“ã¨ãŒã§ããžã™īŧšã€Œ10分がįĩŒéŽã—ãŸã€į§ãŸãĄãŽé ­ã¯ã™ã§ãĢįˆ†į™ēã—ã€į§ãŸãĄã¯ãĄã‚‡ã†ãŠåˆ°į€ã—ãžã—ãŸã€‚ã€ ã—ãŸãŒãŖãĻã€į§ãŸãĄã¯åŽŸéš›ãĢäŊ•かをしようとしぞす。

原際ãĢčĄŒã†ã“ã¨


å˜į´”ãĒマ゚ã‚ŋãƒŧ/゚ãƒŦãƒŧãƒ–åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’äŊœæˆã—ぞす。 こぎためãĢ、Scala、DockerをäŊŋį”¨ã—ã€ã™ãšãĻをパックしぞす。 非同期/同期ãƒŦプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã‚’å‚™ãˆãŸãƒžã‚šã‚ŋãƒŧ/゚ãƒŦãƒŧãƒ–åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŒã§ããžã™ã€‚ æŦĄãĢ、Jepsenを取垗し、原際ãĢすずãĻãŒæ­Ŗã—ã„ã‹é–“é•ãŖãĻいるかをį¤ēしぞす。 Jepsenã‚’åŽŸčĄŒã—ãŸåžŒã€įĩæžœã‚’čĒŦ明しãĻãŋぞしょう。 ジェプã‚ģãƒŗã¨ã¯äŊ•ですかīŧŸ 少し垌でčĒŦ明しぞすが、おそらくあãĒãŸãŽå¤šãã¯čžã„ãŸã“ã¨ãŒã‚ã‚‹ã§ã—ã‚‡ã†ãŒã€į›Žã§čĻ‹ãŸã“ã¨ã¯ã‚ã‚Šãžã›ã‚“ã€‚

マ゚ã‚ŋãƒŧ゚ãƒŦãƒŧブ 一čˆŦįš„ãĢ、それはåŸēæœŦįš„ãĒもぎぎようãĢčĻ‹ãˆãžã™ã€‚ クナイã‚ĸãƒŗãƒˆã¯ã€ãƒžã‚šã‚ŋãƒŧãĢ書きčžŧãŋčĻæą‚ã‚’é€äŋĄã—ぞす。 マ゚ã‚ŋãƒŧã¯ãƒ‡ã‚Ŗã‚šã‚¯ãĢ書きčžŧãŋぞす。 マ゚ã‚ŋãƒŧは、同期ぞたは非同期ですずãĻを゚ãƒŦãƒŧブãĢåˆ†æ•Ŗã—ãžã™ã€‚ ãƒŦã‚ŗãƒŧドとしãĻæ•Ŗåœ¨ã™ã‚‹å‰ã€ãžãŸã¯åžŒãĢ、クナイã‚ĸãƒŗãƒˆãĢåŒæœŸįš„ãžãŸã¯éžåŒæœŸįš„ãĢåŋœį­”しぞす。

CAPãŽåŽšį†ãŽčĻŗį‚šã‹ã‚‰ã€į‰Šäē‹ãŒãŠãŽã‚ˆã†ãĢ整合性、ã‚ĸクã‚ģ゚可čƒŊ性ãĒおを備えãĻã„ã‚‹ã‹ã‚’į†č§Ŗã—ã‚ˆã†ã¨ã—ãžã™ã€‚

äŊ•かčŠĻしãĻãŋぞしょう。



ここãĢは小さãĒワãƒŧクピãƒŧ゚がありぞすぎで、ã‚Ģナã‚Ēã‚ąã§ã‚‚ãŖã¨æ›¸ããžã™ã€‚ äģ–ぎã‚ĩãƒŧバãƒŧã¨é€ŖæēするぎãĢåŊšįĢ‹ã¤2つぎ抟čƒŊがありぞす。 ã¤ãžã‚Šã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽãƒŽãƒŧド間で通äŋĄã™ã‚‹æœ€ã‚‚į°Ąå˜ãĒæ–šæŗ•ã¨ã—ãĻHTTPをäŊŋį”¨ã—ãžã™ã€‚ おうしãĻīŧŸ

2つぎ抟čƒŊがありぞす。 こぎノãƒŧドãĢこれらぎデãƒŧã‚ŋを書きčžŧãŋぞすīŧš



こぎノãƒŧドからデãƒŧã‚ŋをčĒ­ãŋ取り、これをすずãĻéžåŒæœŸįš„ãĢåŽŸčĄŒã™ã‚‹åˆĨぎé–ĸ数īŧš



ぞた、Responseã‚’č§Ŗæžã™ã‚‹äžŋ刊ãĒ抟čƒŊ。 åŋœį­”を受け取り、文字列をčŋ”しぞす。



複雑ãĒことはäŊ•もありぞせん。

ãžãšã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽå˜į´”ãĒã‚ĩãƒŧバãƒŧをäŊœæˆã—ぞす。



ぞず、ここãĢåŽŋéĄŒãŒã‚ã‚Šãžã™ã€‚ ã‚ˇã‚šãƒ†ãƒ å†…ãŽãƒ‡ãƒŧã‚ŋ、ここでは原際ぎデãƒŧã‚ŋベãƒŧ゚ではãĒくナイブデãƒĸがあるため、įĩąč¨ˆå…¨äŊ“ã‚’1つぎ変数ãĢæ ŧį´ã—ãžã™ã€‚



ã—ãŸãŒãŖãĻã€å˜į´”ãĢ文字列をäŋå­˜ã—ã€č¤‡čŖŊãĒãŠã‚’čĄŒã„ãžã™ã€‚ さぞざぞãĒäžŋ刊ãĒジョãƒŧã‚¯ãŒã‚ã‚Šãžã™ã€‚ãŸã¨ãˆã°ã€å¤‰æ•°į’°åĸƒHOSTNAMEからぎčĒ­ãŋ取り、čŋ‘éšŖãŽãƒŽãƒŧドãĒおです。



ここでは、2つぎ抟čƒŊぎプナグをäŊœæˆã—ぞす。



åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‹ã‚‰ãŽčĒ­ãŋå–ã‚Šã¨åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‹ã‚‰ãŽæ›¸ãčžŧãŋ。 ã‚‚ãĄã‚ã‚“ã€äģŠã¯åŽŸčŖ…ã—ãžã›ã‚“ãŒã€å…ˆãĢ進ãŋぞす。

ここでバナナイã‚Ģをčĩˇå‹•しぞす。



すずãĻが非常ãĢį°Ąå˜ã§ã™ã€‚ ãžã åŽŸčŖ…ã•ã‚ŒãĻいãĒいãƒĢãƒŧトé–ĸ数がありぞすが、それはäŊ•かをしぞす。 äŊŋį”¨ã™ã‚‹æŽ‹ã‚ŠãŽãƒĢãƒŧトãĢついãĻčĒŦ明しぞす。



これをすずãĻ8000į•Ēį›ŽãŽãƒãƒŧトで取垗しぞす。



おぎようãĒãƒĢãƒŧトがありぞすかīŧŸ 2つぎãƒĢãƒŧトがありぞす。 最初はdbです。



こぎãƒĢãƒŧトは、デãƒŧã‚ŋベãƒŧ゚クナイã‚ĸãƒŗãƒˆå‘ã‘ã§ã™ã€‚ į§ãŸãĄã¯åŊŧと協力しãĻおり、åŊŧåĨŗã¯å†…部でäŊ•かをしãĻいぞす。

そこãĢį€ã„ãŸã‚‰ã€ãžã åŽŸčŖ…ã—ãĻいãĒã„é­”æŗ•ãŽé–ĸ数readをå‘ŧãŗå‡ēしぞす。



そこãĢデãƒŧã‚ŋを投į¨ŋする場合、書きčžŧãŋé–ĸ数をå‘ŧãŗå‡ēしぞす。 複雑ãĒことはäŊ•ã‚‚ãĒいようです。



これãĢ加えãĻ、ロãƒŧã‚ĢãƒĢとå‘ŧばれるåˆĨぎãƒĢãƒŧトがありぞす。



ãã‚Œã¯į§ãŸãĄãŽãŸã‚ã§ã¯ãĒãã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽãƒĄãƒŗãƒãƒŧã§ã‚ã‚‹į•°ãĒるノãƒŧドがäē’いãĢ通äŋĄã§ãã‚‹ã‚ˆã†ãĢäŊœã‚‰ã‚Œãžã—た。 äģ–ぎäēēはそこãĢ書かれたもぎをčĒ­ã‚€ã“ã¨ãŒã§ããžã—ãŸã€‚

そこãĢ到達したら、マジック変数値をčĒ­ãŋ取りぞす。



そこãĢ投į¨ŋする場合、そこãĢ投į¨ŋした内厚をこぎ変数ãĢ書きčžŧãŋぞす。



複雑ãĒことはäŊ•もありぞせん。 Scalaから小さãĒč„ŗãŒįˆ†į™ēするかもしれぞせんが、大丈å¤Ģです。

ã‚ĩãƒŧバãƒŧをäŊœæˆã—ぞした。 MasterSlaveぎロジックをäŊœæˆã—ぞす。 æŦĄãĢ、MasterSlaveãŒåŽŸčŖ…ã™ã‚‹åˆĨぎクナ゚をäŊœæˆã—ぞす。 原際、非同期MasterSlaveからぎčĒ­ãŋ取りは、そこãĢある変数ãĢ書きčžŧぞれたもぎぎロãƒŧã‚ĢãƒĢčĒ­ãŋ取りãĢすぎぞせん。



éŒ˛éŸŗã¯ã‚‚ã†å°‘ã—č¤‡é›‘ã§ã™ã€‚



į§ãŸãĄã¯æœ€åˆãĢč‡Ē分č‡ĒčēĢãĢæ‰‹į´™ã‚’æ›¸ããžã™ã€‚



æŦĄãĢ、所有しãĻいるすずãĻぎ゚ãƒŦãƒŧブをčĒŋずãĻ、すずãĻぎ゚ãƒŦãƒŧブãĢ書きčžŧãŋぞす。



ただし、こぎé–ĸ数ãĢは抟čƒŊがあり、Futureをčŋ”しぞす。



ここでは、゚ãƒŦãƒŧブへぎすずãĻぎ書きčžŧãŋčĻæą‚ã‚’éžåŒæœŸãĢãŧかし、クナイã‚ĸãƒŗãƒˆãĢæŦĄãŽã‚ˆã†ãĢč¨€ã„ãžã™ã€‚ã€Œã™ãšãĻã¯å•éĄŒã‚ã‚Šãžã›ã‚“ã€‚č¨˜éŒ˛ã—ãžã—ãŸã€‚ã•ã‚‰ãĢ先ãĢé€˛ã‚€ã“ã¨ãŒã§ããžã™ã€‚ã€ čŊã¨ã—įŠ´ã‚’äŧ´ã†å¯čƒŊæ€§ãŽã‚ã‚‹å…¸åž‹įš„ãĒ非同期ãƒŦプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã¯ã€äģŠã§ã¯ã™ãšãĻčĻ‹ã‚‹ã“ã¨ãŒã§ããžã™ã€‚

これをすずãĻã‚ŗãƒŗãƒ‘ã‚¤ãƒĢしãĻãŋぞしょう。 これはScalaです。åŊŧåĨŗã¯é•ˇã„é–“ã‚„ãŖãĻいぞす。 一čˆŦãĢã€ã‚ŗãƒŗãƒ‘ã‚¤ãƒĢするåŋ…čĻãŒã‚ã‚‹ã¨ãƒĒハãƒŧã‚ĩãƒĢしぞした。 ã‚ŗãƒŗãƒ‘ã‚¤ãƒĢ済ãŋ。

æŦĄãĢすること


書きぞしたが、すずãĻã‚’åŽŸčĄŒã™ã‚‹åŋ…čĻãŒã‚ã‚Šã€ãƒŠãƒƒãƒ—ãƒˆãƒƒãƒ—ãŒ1台ありぞす。 ã—ã‹ã—ã€į§ãŸãĄã¯åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’äŊœãŖãĻいぞす。 単一ノãƒŧãƒ‰ãŽåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã¯ã€åŽŒå…¨ãĢåˆ†æ•Ŗã•ã‚ŒãŸã‚ˇã‚šãƒ†ãƒ ã§ã¯ã‚ã‚Šãžã›ã‚“ã€‚ ã—ãŸãŒãŖãĻ、DockerをäŊŋį”¨ã—ãžã™ã€‚



Dockerはã‚ĸプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã‚’ã‚ŗãƒŗãƒ†ãƒŠåŒ–ã™ã‚‹ãŸã‚ãŽã‚ˇã‚šãƒ†ãƒ ã§ã‚ã‚Šã€ãŠãã‚‰ãčĒ°ã‚‚ãŒčžã„ãŸã“ã¨ãŒã‚ã‚‹ã§ã—ã‚‡ã†ã€‚ すずãĻがæœŦį•Ēį’°åĸƒã§äŊŋį”¨ã•ã‚ŒãĻいるとは限りぞせん。 äŊŋį”¨ã—ãĻãŋぞす。 これは、すずãĻã‚’į°Ąį´ åŒ–ã™ã‚‹ãŸã‚ãŽčģŊいäģŽæƒŗåŒ–ã‚ˇã‚šãƒ†ãƒ ã§ã™ã€‚ DockerãĢã¯čąŠå¯ŒãĒã‚¨ã‚ŗã‚ˇã‚šãƒ†ãƒ ãŒã‚ã‚Šã€ã“ãŽã‚¨ã‚ŗã‚ˇã‚šãƒ†ãƒ ãŽã™ãšãĻをäŊŋį”¨ã™ã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šãžã›ã‚“ã€‚ ただし、1ã¤ãŽã‚ŗãƒŗãƒ†ãƒŠãƒŧだけでãĒく、グãƒĢãƒŧプを一åēĻãĢčĩˇå‹•するåŋ…čĻãŒã‚ã‚‹ãŸã‚ã€Docker ComposeをäŊŋį”¨ã—ãĻそれらを一åēĻãĢロãƒŧãƒĢバックしぞす。

å˜į´”ãĒDockerfileがありぞすが、それは非常ãĢå˜į´”ã§ã¯ã‚ã‚Šãžã›ã‚“ã€‚



æŦĄãĢ、Javaã‚’ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢするDockerfileがSSHã‚’ãƒ—ãƒƒã‚ˇãƒĨしぞす。 ãĒぜåŋ…čρãĒぎか尋ねãĒいでください。 ã‚ĸプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗãŒã™ãšãĻをčĩˇå‹•しぞす。

そしãĻ、5つぎノãƒŧドすずãĻã‚’č¨˜čŋ°ã™ã‚‹Composeãƒ•ã‚Ąã‚¤ãƒĢがありぞす。



ここãĢいくつかぎノãƒŧドぎčĒŦ明がありぞす。 äģŠã™ãįĩąåˆã‚’čŠĻãŋぞす。 こぎためぎ゚クãƒĒプトがありぞす。



åą•é–‹ä¸­ãĢč‰˛ã‚’å¤‰æ›´ã—ãžã™ã€‚



これで、Dockerã‚ŗãƒŗãƒ†ãƒŠãŒäŊœæˆã•れぞす。 これでčĩˇå‹•しぞす。 5つぎノãƒŧドすずãĻがčĩˇå‹•しぞした。



äģŠã€į§ãŸãĄã¯åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŒį”ŸããĻいることをæ”ģæ’ƒã™ã‚‹ãŽã‚’åž…ãŖãĻいぞす。 少し時間がかかりぞす、それはJavaです。 MasterSlaveがčĩˇå‹•ã—ãŸã¨č¨€ãŖãĻいぞす。



これãĢ加えãĻã€ã“ãŽåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‹ã‚‰äŊ•かをčĒ­ãŋå–ã‚‹ã“ã¨ãŒã§ãã‚‹ã‚ˇãƒŗãƒ—ãƒĢãĒ゚クãƒĒプトがすずãĻありぞす。

ノãƒŧドn1ãĢあるもぎをčĻ‹ãĻãŋぞしょう。



そこãĢ0が書きčžŧぞれぞす。

čĒ°ãŒãƒžã‚šã‚ŋãƒŧであり、čĒ°ãŒã‚šãƒŦãƒŧブであるかãĢ寞するäŋč­ˇãŒãĒã‹ãŖãŸãŽã§ã€n1は常ãĢマ゚ã‚ŋãƒŧであるというäŋĄåŋĩã‚’æŒãŖãĻいぞす。 すずãĻã‚’å˜į´”åŒ–ã™ã‚‹ãŸã‚ãĢ、常ãĢ書きčžŧãŋぞす。

こぎマ゚ã‚ŋãƒŧでäŊ•かを書いãĻãŋぞしょう。

n1 1をįŊŽã

ãƒĻニットがそこãĢč¨˜éŒ˛ã•ã‚Œãžã—ãŸã€‚ ここでログãĢあるもぎをčĻ‹ãĻãŋぞしょう。



ここãĢãƒŦã‚ŗãƒŧドãĢ小さãĒもぎがあり、すずãĻぎ゚ãƒŦãƒŧブãĢ寞しãĻこぎãƒŦã‚ŗãƒŧãƒ‰ã‚’åą•é–‹ã—ãžã—ãŸã€‚ã“ã“ãĢč¨˜éŒ˛ã•ã‚Œãžã—ãŸã€‚



ノãƒŧドn3ãĢį§ģ動しãĻ、そこãĢあるもぎをįĸēčĒã™ã‚‹ã“ã¨ã‚‚ã§ããžã™ã€‚



æ›¸ãį•™ã‚ãŸã‚ˇãƒŗã‚°ãƒĢがありぞす。

į§ãŸãĄã¯ãƒœãƒŧãƒŠã‚šã‚’åž—ã‚‹ã“ã¨ãŒã§ããžã™ã€į§ãŸãĄã¯č†ãŽä¸ŠãĢåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’æ›¸ããžã—ãŸã€ãã‚Œã¯ã†ãžãã„ããžã™ã€‚ しかし、それはうぞくいきぞした。

äģŠã€į§ãŸãĄã¯åŊŧåĨŗã‚’į—…æ°—ãĢしようとしぞす。 åŊŧåĨŗã‚’į—…æ°—ãĢするためãĢ、Jepsenとå‘ŧばれるこぎようãĒフãƒŦãƒŧムワãƒŧクをäŊŋį”¨ã—ãžã™ã€‚ Jepsenã¯ã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’ãƒ†ã‚šãƒˆã™ã‚‹ãŸã‚ãŽæœ€åˆãŽãƒ•ãƒŦãƒŧムワãƒŧクですが、1つ垎åĻ™ãĒį‚šãŒã‚ã‚Šãžã™ã€‚Clojureで書かれãĻいぞす。 ClojureはįŸĨらãĒいLispです。 これは、æ—ĸ存ぎデãƒŧã‚ŋベãƒŧ゚、キãƒĨãƒŧãĒおぎæ—ĸčŖŊぎテ゚トぎã‚ģットです。 いつでもč‡Ē分で書くことができぞす。さらãĢ、エキゞチックãĒもぎを除き、おそらくすずãĻぎデãƒŧã‚ŋベãƒŧ゚で、čĻ‹ã¤ã‹ãŖãŸå•éĄŒãĢé–ĸã™ã‚‹č¨˜äē‹ãŒãŸãã•んありぞす。おそらく、ZooKeeperとRethinkDBだけがそれを取垗できぞせんでした。åŊŧらはそれを手ãĢå…Ĩれたが、äģ–ぎäēēと比ずãĻ少しだけ。あãĒたはそれãĢついãĻčĒ­ã‚€ã“ã¨ãŒã§ããžã™ã€‚

Jepsenぎäģ•įĩ„ãŋ


ネットワãƒŧクエナãƒŧã‚’ã‚ˇãƒŸãƒĨãƒŦãƒŧãƒˆã—ã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã§ãƒŠãƒŗãƒ€ãƒ æ“äŊœã‚’į”Ÿæˆã—ãžã™ã€‚ æŦĄãĢ、これらぎ操äŊœãŒåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã¨å‚į…§å‹•äŊœã€ã“ãŽåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽãƒĸデãƒĢãĢéŠį”¨ã•ã‚ŒãŸæ–šæŗ•ã€ãŠã‚ˆãŗã“ã‚ŒãĢå•éĄŒãŒã‚ã‚‹ã‹ãŠã†ã‹ã‚’čĒŋずぞす。

JepsenãŒå•éĄŒã‚’čĻ‹ã¤ã‘ãŸå ´åˆīŧš



ここで冗čĢ‡ã‚’č¨€ã„ãŸã‹ãŖãŸã€‚

JepsenがäŊ•ã‚‰ã‹ãŽå•éĄŒã‚’į™ēčĻ‹ã—ãŸå ´åˆã€åŊŧはあãĒãŸãŽåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽåäž‹ã‚’čĻ‹ã¤ã‘ãžã—ãŸã€‚ しかし、ジェプã‚ģãƒŗãƒ†ã‚šãƒˆã¯æœŦčŗĒįš„ãĢįĸēįŽ‡čĢ–įš„ã§ã‚ã‚‹ãŸã‚ã€äŊ•ã‚‚čĻ‹ã¤ã‹ã‚‰ãĒã‹ãŖãŸå ´åˆã€ååˆ†ãĢčĻ‹æ „ãˆãŒã‚ˆããĒã‹ãŖãŸå¯čƒŊ性がありぞす。 しかし、åŊŧがよく検į´ĸすれば、åŊŧはäŊ•かをčĻ‹ã¤ã‘ã‚‹ã§ã—ã‚‡ã†ã€‚ たとえば、RethinkDBぎ場合、ãƒĒãƒĒãƒŧã‚šãŽį´„2é€ąé–“å‰ãĢãƒ†ã‚šãƒˆã‚’åŽŸčĄŒã—ã€å¤šå°‘ãĒりとも抟čƒŊすることをč¨ŧ明しぞした。

ここでは2é€ąé–“ãƒ†ã‚šãƒˆã‚’åŽŸčĄŒã—ãžã›ã‚“ã€‚5į§’ã‹ã‹ã‚Šãžã™ã€‚ Jepsenテ゚トぎã‚ŋ゚クは、マ゚ã‚ŋãƒŧへぎ書きčžŧãŋ、MasterSlaveからぎčĒ­ãŋå–ã‚Šã€į‰Šäē‹ãŽæ•´åˆæ€§ã¨ã€ãƒžã‚šã‚ŋãƒŧ/゚ãƒŦãƒŧãƒ–č¤‡čŖŊã‚’æ­Ŗã—ãč¨˜čŋ°ã—ãŸã‹ãŠã†ã‹ã‚’į†č§Ŗã™ã‚‹ã“ã¨ã§ã™ã€‚

Jepsenテ゚トは、いくつかぎ重čρãĒ部分で構成されãĻいぞす。



åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãĢéŠį”¨ã™ã‚‹ãƒŠãƒŗãƒ€ãƒ æ“äŊœã‚’į”Ÿæˆã™ã‚‹ã‚¸ã‚§ãƒãƒŦãƒŧã‚ŋãƒŧがありぞす。 åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ č‡ĒäŊ“。そこからčĩˇå‹•しぞした。 Dockerでも、原際ぎ鉄ぎã‚ĩãƒŧバãƒŧでもかぞいぞせん。 ãžãŸã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽå‹•äŊœã‚’č¨˜čŋ°ã™ã‚‹å‚į…§ãƒĸデãƒĢがありぞす。 į§ãŸãĄãŽå ´åˆã€ã“ã‚Œã¯ãƒŦジ゚ã‚ŋであり、そこãĢ書いたもぎです。これをčĒ­ã‚€åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ 複雑ãĒことはäŊ•もありぞせん。 JepsenãĢはあらゆる場合ãĢ膍大ãĒ数ぎãƒĸデãƒĢがありぞすが、ãƒŦジ゚ã‚ŋとCheckerぎãŋをäŊŋį”¨ã—ãžã™ã€‚ã“ã‚Œã¯ã€ãƒĸデãƒĢとぎ寞åŋœãĢついãĻåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãĢéŠį”¨ã•ã‚ŒãŸæ“äŊœãŽåąĨ歴ぎ寞åŋœã‚’チェックしぞす。

å•éĄŒã¯ã€JepsenがClojureで書かれãĻおり、テ゚トもClojureで書かれるåŋ…čĻãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ それらをäģ–ぎäŊ•かãĢ書くことができれば、それはクãƒŧãƒĢだろう。 しかし、トナブãƒĢ、トナブãƒĢ。 Clojureは、常ãĢãƒĒã‚šãƒˆãŒã‚ã‚‹č¨€čĒžã§ã™ã€‚ たとえば、2つぎ数字をčŋŊ加する場合は、最初ぎčĻį´ ãŒčŋŊ加されたãƒĒ゚トをäŊœæˆã—、æŦĄãĢ2つぎ数字をčŋŊ加しãĻ、最垌ãĢ3つぎ数字を取垗しぞす。



å‘ŧãŗå‡ēしé–ĸ数をdefnというåˆĨぎé–ĸ数ãĢč¨­åŽšã—ã€æœ€åˆãŽåŧ•数はé–ĸ数ぎ名前、åŧ•数はé–ĸ数、é–ĸ数ぎæœŦäŊ“ぎ順ãĢãĒã‚‹ã¨č¨€ã†ã“ã¨ãŒã§ããžã™ã€‚ åŊŧåĨŗã‚’こぎようãĢå‘ŧãļと、åŊŧåĨŗã¯ã€Œãƒãƒ­ãƒŧ、ハイロãƒŧドīŧã€ã¨č¨€ã†ã§ã—ょう。 これは初åŋƒč€…向けぎこぎようãĒClojureã‚ŗãƒŧ゚です。

こぎClojureã‚ŗãƒŧ゚はæŦĄãŽã‚ˆã†ãĢčĻ‹ãˆã‚‹ã¨č¨€ãˆãžã™ã€‚



そしãĻäģŠã€ãã‚Œã¯é–“違いãĒãåŗå´ãŽã‚‚ãŽãĢãĒりぞす。 原際、はい。 ただし、Clojureã¯å°‘ã—å…ˇäŊ“įš„ã§ã‚ã‚‹ãŸã‚ã€ãƒ•ãƒŦãƒŧムでäŊ•がčĩˇã“るかを少ãĒくとも大ぞかãĢį†č§Ŗã™ã‚Œã°ååˆ†ã§ã™ã€‚

だから、ジェプã‚ģãƒŗã€‚ 最初ãĢ、テ゚トãĢついãĻčĒŦ明しぞす。



こぎフットクロ゚は、åˇĻã‹ã‚‰åŗã€ä¸Šã‹ã‚‰ä¸‹ãĢčĒ­ã‚€ãŽã¯æ­Ŗã—ãã‚ã‚Šãžã›ã‚“ã€‚ãã‚Œã¯ã€Lispであるため、内側と外側からčĒ­ã‚€æ–šãŒč‰¯ã„ã‹ã‚‰ã§ã™ã€‚ テ゚トぎčĒŦ明をčŋ”すé–ĸæ•°ãŒã‚ã‚Šãžã™ãŒã€ãžã åŽŸčŖ…ã—ãĻいぞせん。 ã“ãŽãƒ†ã‚šãƒˆã‚’åŽŸčĄŒã™ã‚‹åˆĨぎé–ĸ数ãĢこぎčĒŦ明をčŋŊåŠ ã™ã‚‹ã¨ã€ãƒ‡ã‚ŖãƒŦクトãƒĒがčŋ”されぞす。 ã“ãŽãƒ‡ã‚ŖãƒŦクトãƒĒで、įĩæžœã‚­ãƒŧをäŊŋį”¨ã—ãĻäŊ•ã‹ã‚’é¸æŠžã—ã€ã“ãŽãƒ‡ã‚ŖãƒŦクトãƒĒãĢvalidというキãƒŧがあるかおうかをįĸēčĒã—ãžã™ã€‚ 存在する場合、テ゚トãĢ合æ ŧしぞす。 ClojureはこぎようãĢčĒ­ãŋぞす。 最初ãĢč„ŗã‚’į ´åŖŠã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ãŒã€ã™ãšãĻが明らかãĢãĒりぞす。

æŦĄãĢ、テ゚トãĢついãĻčĒŦ明しぞす。



ぞた、テ゚トはåŧ•数ぎãĒいé–ĸ数です。 åŊŧåĨŗã¯åˆĨãŽãƒ†ã‚šãƒˆã‚’æ‹Ąåŧĩã—ãžã™ãŒã€ãƒ†ã‚šãƒˆã¯ãžãŖãŸãčĄŒã‚ã‚Œãšã€ã„ãã¤ã‹ãŽãƒ†ã‚šãƒˆãŒčŋŊ加されぞす。 たとえば、JepsenはHTTPãĢついãĻäŊ•ã‚‚įŸĨらãĒいため、デãƒŧã‚ŋベãƒŧ゚とぎ通äŋĄãĢäŊŋį”¨ã™ã‚‹ã‚¯ãƒŠã‚¤ã‚ĸãƒŗãƒˆãŽåå‰ã€‚ チェッã‚Ģãƒŧ。ぞだäŊœæˆã—ãĻいぞせんが、äŊœæˆã—ぞす。 åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽæ¨™æē–としãĻäŊŋį”¨ã™ã‚‹ãƒĸデãƒĢ。 ジェネãƒŦãƒŧã‚ŋãƒŧã¯ã€ãƒŠãƒŗãƒ€ãƒ ãĒčĒ­ãŋå–ã‚ŠãŠã‚ˆãŗæ›¸ãčžŧãŋ操äŊœã‚’čĄŒã„ã€ãã‚Œã‚‰ãŽé–“ãĢ10ミãƒĒį§’ãŽé…åģļをæŒŋå…Ĩし、クナイã‚ĸãƒŗãƒˆã§ãã‚Œã‚‰ã‚’é–‹å§‹ã—ã€5į§’é–“ã™ãšãĻ開始しぞす。 さらãĢ、SSHでぎäŊœæĨ­ãŽãŸã‚ãĢありぞす。

æŦĄãĢ、čĒ­ãŋ取りと書きčžŧãŋãĢついãĻčĒŦ明しぞす。 これらも抟čƒŊです。 これはClojureであり、すずãĻぎ抟čƒŊがあり、äģ–ãĢはäŊ•もありぞせん。



クナイã‚ĸãƒŗãƒˆãĢついãĻもčĒŦ明しぞすが、最初はHTTPクナイã‚ĸãƒŗãƒˆã§ã™ã€‚



ここãĢは、HTTPへぎ書きčžŧãŋ、HTTPでぎčĒ­ãŋ取りぎためぎいくつかぎé–ĸ数がありぞす。 これがすずãĻčĄŒã‚ã‚Œã‚‹æ–šæŗ•ãĢついãĻはčĒŦ明しぞせん。 しかし原際ãĢは、200がčŋ”された場合、すずãĻã¯å•éĄŒã‚ã‚Šãžã›ã‚“ã€‚ 409がHTTP 409 Conflictīŧˆéžå¸¸ãĢäžŋ刊ãĒã‚ŗãƒŧドīŧ‰ã§ã‚る場合、äŊ•ã‹ãŒé–“é•ãŖãĻいぞす。 もう少しäŊŋį”¨ã—ãžã™ã€‚

さらãĢ、クナイã‚ĸãƒŗãƒˆãĢついãĻčĒŦ明しぞす。



ãžãŸã€ã“ã‚Œã‹ã‚‰č¨˜čŋ°ã™ã‚‹ãƒ›ã‚šãƒˆã‚’取垗し、クナイã‚ĸãƒŗãƒˆã¨å‘ŧã°ã‚Œã‚‹ã‚¤ãƒŗã‚ŋãƒŧフェãƒŧã‚šã‚’æ‹Ąåŧĩするé–ĸ数。 3つぎ抟čƒŊがありぞす。 č‡Ē分č‡ĒčēĢをčŋ”すã‚ģットã‚ĸップ。 クナイã‚ĸãƒŗãƒˆã‚’å‰Šé™¤ã™ã‚‹åŋ…čĻãŽãĒã„åˆ†č§Ŗã€å†…éƒ¨ãĢはäŊ•もありぞせん。 こぎポトãĢčģĸ送する操äŊœã‚’éŠį”¨ã™ã‚‹invoke。 ここでは5į§’ãŽã‚ŋイムã‚ĸã‚Ļトがありぞす。つぞり、5į§’äģĨ内ãĢåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŒæŠŸčƒŊしãĒã‹ãŖãŸå ´åˆã€æŠŸčƒŊしãĒã„ã¨č¨€ãˆãžã™ã€‚ こぎčĒ­ãŋ取りがある場合、HTTPčĒ­ãŋå–ã‚Šã‚’åŽŸčĄŒã—ã€GETčĻæą‚ã‚’čĄŒã„ãžã™ã€‚ ãƒŦã‚ŗãƒŧドぎ場合、HTTP書きčžŧãŋ、つぞりPOSTãƒĒã‚¯ã‚¨ã‚šãƒˆã‚’čĄŒã„ãžã™ã€‚ MasterSlaveがあり、Masterは1つしかãĒいため、ここで少し変更しぞす。Masterで常ãĢ書きčžŧãŋぞす。



最垌ãĢæŽ‹ãŖãŸã‚ĸイテムはCheckerです。 Jepsenå†…ã§įˇšåŊĸ化可čƒŊチェッã‚Ģãƒŧとå‘ŧばれるもぎをäŊŋį”¨ã§ããžã™ãŒã€č¸ã‚“ã ãŽã§äŊŋį”¨ã—ãžã›ã‚“ã€‚



おうしたらいいぎか分かりぞせん。 ã—ãŸãŒãŖãĻã€į§ã¯č‡Ē分č‡ĒčēĢを書きぞしたが、čŊãĄãžã›ã‚“ã€‚ 原際、åŊŧは同じもぎをäŊŋį”¨ã—ãžã™ãŒã€æœ€įĩ‚įš„ãĢはåŊŧが通常はčŊãĄã‚‹įžŽã—ã„į”ģåƒã‚’į”Ÿæˆã—ã‚ˆã†ã¨ã—ãžã›ã‚“ã€‚



ãƒĄã‚Ŧテ゚トをäŊœæˆã—ãžã—ãŸã€‚åŽŸčĄŒã—ãĻãŋぞしょう。



åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã€ãƒ†ã‚šãƒˆãŒã‚ã‚Šã€é–‹å§‹ã™ã‚‹ãŽã‚’åž…ãŖãĻいぞす。

leinはClojureぎこぎようãĒビãƒĢãƒ‰ã‚ˇã‚šãƒ†ãƒ ã§ã™ã€‚

さぞざぞãĒポト、さぞざぞãĒčĒ­ãŋ取り/書きčžŧãŋを書きčžŧãŋ始め、ログãĢã‚‚é­”æŗ•ãŒį™ēį”Ÿã—ãžã™-čĒ­ãŋ取り/書きčžŧãŋ、ãƒŦプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã€‚ 最垌ãĢã€ãã‚Œã¯ã€Œå¤ąæ•—ã€ã‚’å‘Šã’ãžã™ã€‚ ここでäŊ•かをåŋ˜ã‚Œãžã—た。 ᎚åŊĸ化できãĒい゚トãƒŧãƒĒãƒŧぎãƒĒ゚トがありぞすが、ここでは明らかãĢæˇˇäšąã—ãĻいぞす。

こぎįŠļæŗã‚’čĻ‹ãĻãŋぞしょう。



マ゚ã‚ŋãƒŧ/゚ãƒŦãƒŧブで非同期ãƒŦプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã‚’čĄŒã†ã¨ã€ã‚šãƒŦãƒŧブは常ãĢ遅れることをčĒ°ã‚‚ãŒįŸĨãŖãĻいぞす。 ᎚åŊĸ化可čƒŊ性ぎčĻŗį‚šã‹ã‚‰ã‚šãƒŦãƒŧブ遅åģļã¨ã¯ãŠã†ã„ã†æ„å‘ŗã§ã™ã‹īŧŸ ã¤ãžã‚Šã€ã“ã“ã§éŒ˛éŸŗãŒčĄŒã‚ã‚Œã€ã—ã°ã‚‰ãã—ãĻã‹ã‚‰éŒ˛éŸŗãŒč¤‡čŖŊされ、ここでčĒ­ãŋå–ã‚ŠãŒčĄŒã‚ã‚Œãžã—ãŸã€‚ そぎįĩæžœã€čĒ­ã‚€ãšãã§ã¯ãĒいもぎをčĒ­ãŋぞした。 BをčĒ­ã‚“ã§ã€AをčĒ­ãžãĒければãĒりぞせんでした。つぞり、操äŊœãŒįĩ‚äē†ã—たと思われる時間ãĢæˆģり、そこからäŊ•ã‚’čĒ­ã‚“ã§ã„ãŸãŽã‹ã‚’čĒ­ãŋぞした。 ãĒぜãĒら、すずãĻぎ゚ãƒŦãƒŧブがぞだãƒŦプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗãƒ•ãƒ­ãƒŧãĢčŋŊいついãĻいãĒいためです。 ã—ãŸãŒãŖãĻ、゚ãƒŦãƒŧブは常ãĢマ゚ã‚ŋãƒŧより遅れぞす。

あãĒたはįĸēかãĢこれはåšŧį¨šåœ’ã ã¨č¨€ã†ã§ã—ã‚‡ã†ã€å¤§äēēãŽæ–šæŗ•ã§ã™ãšãĻをしぞしょう。 同期ãƒŦプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã‚’æ›¸ããžã—ã‚‡ã†ã€į§ãŸãĄã¯čŗĸいです。 非同期とãģãŧ同じで、同期ぎãŋです。



åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãĢ書きčžŧむ1つぎé–ĸæ•°ã‚’å†åŽšįžŠã—ãžã™ã€‚ åŊŧåĨŗã¯äģŠã§ã¯čŗĸいやり斚でそれをしãĻいぞす。åŊŧåĨŗã¯ã™ãšãĻぎåĨ´éšˇãŒã€ŒOKã€ã¨č¨€ã†įžŦé–“ã‚’åž…ãĄãžã™ã€‚ そぎ時だけåŊŧåĨŗã¯ã€ã™ãšãĻãŒč¨˜éŒ˛ã•ã‚ŒãŸã¨č¨€ã„ãžã™ã€‚ åĨ´éšˇãŽä¸€äēēがåŊŧが「大丈å¤Ģ」ではãĒã„ã¨č¨€ãŖãŸã‚‰ã€ãã‚Œã¯ãƒˆãƒŠãƒ–ãƒĢがčĩˇã“ãŖãĻã€į§ãŸãĄã¯ãã“ãĢčĄŒã‹ãĒã„ã“ã¨ã‚’æ„å‘ŗã—ãžã™ã€‚

æŦĄãĢ、こぎすずãĻぎバナナイã‚Ģã‚’åŽŸčĄŒã—ãĻãŋãĻください。 おそらく、あãĒたはäģŠã€äŊ•らかぎã‚ģットã‚ĸップがあり、すずãĻがそれãģãŠč‰¯ã„ã‚‚ãŽã§ã¯ãĒいことを感じるでしょう。 25分がįĩŒéŽã™ã‚‹ã¨ã€į”ˇãŒã™ãšãĻをダã‚Ļãƒŗãƒ­ãƒŧドしãĻ抟čƒŊã—ãŸãŽã§ã€ã‚ŗãƒŗãƒ‘ã‚¤ãƒĢã•ã‚Œã‚‹ãžã§åž…ãĄãžã™ã€‚ äģŠã§ã¯ã™ãšãĻã‚’åŽé›†ã—ãžã™ã€‚å‹•įš„ãĒ言čĒžã§ã¯ãĒく、すずãĻがすぐãĢ抟čƒŊする場合、ここではすずãĻãŒé•ˇããĻč‹Ļį—›ã§ã™ã€‚ デプロイするぞですずãĻã‚’æ›¸ãį›´ã™ã‹ã€æ›¸ãã‹ã‚’č€ƒãˆã‚‹æ™‚é–“ãŒã‚ã‚Šãžã™ã€‚

マ゚ã‚ŋãƒŧ/゚ãƒŦãƒŧブぎ同期が開始されぞした。 すずãĻがうぞくいくことを期垅しãĻ、Jepsenテ゚トをもう一åēĻåŽŸčĄŒã—ãžã—ã‚‡ã†ã€‚ 同期ãƒŦプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗã‚’åŽŸčĄŒã—ãžã—ãŸãŒã€äŊ•がうぞくいかãĒã‹ãŖãŸãŽã§ã—ã‚‡ã†ã€‚ それは始ぞり、書き始めぞしたが、それãģお速くはありぞせん。 åŊŧã¯å†ãŗæ›¸ã„ãĻã€å†ãŗčĒ­ã‚“ã§ã€ãã“ã§äŊ•かがčĩˇã“ãŖãĻいる。 そぎįĩæžœã€å†ãŗäŊ•かæ‚Ēいことがčĩˇã“りぞす。



į§ãŸãĄã¯å†ãŗå¤ąæ•—ã—ãžã—ãŸã€‚ãã‚Œã¯ã€įˇšåŊĸ化可čƒŊæ€§ãŽį‚šã§įˇšåŊĸ化できãĒã„č†¨å¤§ãĒæ•°ãŽį‰ŠčĒžã‚’į§ãŸãĄãĢ与えぞした。

å•éĄŒã¯äŊ•ですかīŧŸ

į§ãŸãĄã¯ã™ãšãĻã‚’æ­Ŗã—ãã‚„ãŖãŸã¨æ€ãŖãŸã€‚ おういうわけか、すずãĻãŒã˛ãŠãåˆ¤æ˜Žã—ãžã—ãŸã€‚



å†™įœŸã¯ã€ã™ãšãĻがäģĨ前よりさらãĢæ‚Ē化しãĻいることをį¤ēしãĻいぞす。

こぎįŠļæŗã‚’æƒŗåƒã—ãĻください。



マ゚ã‚ŋãƒŧノãƒŧド1がありぞす。操äŊœBとCã‚’č¨˜éŒ˛ã—ã€ã“ã“ãĢCがあり、ここãĢ複čŖŊしぞした。 HTTPをäģ‹ã—ãĻすずãĻを非同期ãĢåŽŸčĄŒã—ãžã™ãŒã€ã“ã‚Œã¯é–“é•ãŖãĻいる可čƒŊ性がありぞす。 æŗ¨2ã§ã¯ã€į‰šåŽšãŽé †åēã§ã‚ĩã‚¤ãƒŗã‚ĸップしぞした。 しかし、ノãƒŧド3ã§ã¯ã€ãã‚Œã‚‰ã¯å°į„Ąã—ãĢãĒりぞしたが、čĒ¤ãŖãĻそれらを送äŋĄã—ぞした。 雑čnjãĒおがあることをåŋ˜ã‚ŒãĻいぞした。 ãã‚Œã‚‰ã¯éŠį”¨ã•ã‚Œã‚‹ãšãé †åēã§éŠį”¨ã•れぞせんでした。 そぎįĩæžœã€CぎäģŖã‚ã‚ŠãĢBが垗られぞしたが、ここではそれがäŊ•であるか明įĸēではありぞせん。 BぞたはCぎいずれか、CをčĒ­ã‚€åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ã—ãŸãŒãŖãĻ、これはこぎようãĒįŊåŽŗã§ã™ã€‚

マ゚ã‚ŋãƒŧ/゚ãƒŦãƒŧブCAPãŽåŽšį†ã¨æ•´åˆæ€§ãŽčĻŗį‚šã‹ã‚‰ã€č¤‡čŖŊã¯åŒæœŸč¤‡čŖŊかおうかãĢ䞝存しぞす。 非同期ぎ場合、゚ãƒŦãƒŧãƒ–ãŒé…ã„ãŸã‚ã€įˇšåŊĸ化が不可čƒŊであることは明らかです。 同期ぎčĻŗį‚šã‹ã‚‰ã€ãã‚Œã¯ã‚ãĒãŸãŒãŠã‚Œã ã‘æ›˛ãŒãŖãĻおり、すずãĻã‚’æ­Ŗã—ãåŽŸčŖ…ã™ã‚‹ã‹ãĢ䞝存しぞす。 運がよければ、いい。 į§ã¨åŒã˜ãĒら、それからæ‚Ēい。 ã‚ĸクã‚ģã‚ˇãƒ“ãƒĒãƒ†ã‚ŖãŽčĻŗį‚šã‹ã‚‰čĻ‹ã‚‹ã¨ã€å•éĄŒã¯į§ãŸãĄãŽåĨ´éšˇã§ã¯æ›¸ãã“とができず、čĒ­ã‚€ã“ã¨ã—ã‹ã§ããĒいということです。 éĢ˜å¯į”¨æ€§ãŽčĻŗį‚šã‹ã‚‰ã¯ã€į§ãŸãĄãĢ寄せられるすずãĻぎčĻæą‚ã‚’æē€ãŸã™ã“とはできぞせん。 čĒ­ã‚€ã“ã¨ã—ã‹ã§ããžã›ã‚“ã€‚ ã—ãŸãŒãŖãĻã€åˆŠį”¨ã§ããžã›ã‚“ã€‚

ã—ãŸãŒãŖãĻ、CAPåŽšį†ã¯éžå¸¸ãĢå…ˇäŊ“įš„ãĒもぎです。 åŽšįžŠã¯åŽŗå¯†ã§ã‚ã‚Šã€åŽŸéš›ãŽãƒ‡ãƒŧã‚ŋベãƒŧ゚ぎ内厚を常ãĢčĒŦ明するとは限らãĒいため、デãƒŧã‚ŋベãƒŧ゚ãĢ非常ãĢ慎重ãĢéŠį”¨ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ 1つぎãƒŦジ゚ã‚ŋã‚’č¨˜čŋ°ã™ã‚‹ãŸã‚ã€‚ すずãĻãŽãƒˆãƒŠãƒŗã‚ļã‚¯ã‚ˇãƒ§ãƒŗã¨äģ–ぎ操äŊœã‚’同じãƒŦジ゚ã‚ŋãƒŧãĢæ¸›ã‚‰ã™ã“ã¨ãŒã§ãã‚Œã°ã€ã“ã‚Œã¯č‰¯ã„ã“ã¨ã§ã™ã€‚ ã—ã‹ã—ã€é€šå¸¸ã“ã‚Œã¯é›Ŗã—ã„ã‹ã€ä¸å¯čƒŊです。 å¯į”¨æ€§ãã‚Œã¯ããŽã‚ˆã†ãĒå¯į”¨æ€§ã§ã™ãŒã€åž…ãĄæ™‚é–“ã¯äŊ•ã‚‚č¨€ã„ãžã›ã‚“ã€‚ åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽä¸€č˛Ģ性が非常ãĢå„ĒれãĻいるが、čĻæą‚ãĢ1æ—ĨãĢ1回åŋœį­”する場合、æœŦį•Ēį’°åĸƒã§äŊŋį”¨ã™ã‚‹ã“ã¨ã‚‚éžå¸¸ãĢå›°é›Ŗã§ã™ã€‚ CAPåŽšį†ã§ã¯č€ƒæ…Žã•ã‚ŒãĒいさぞざぞãĒåŽŸį”¨įš„ãĒ側éĸがありぞす。 同じパãƒŧãƒ†ã‚Ŗã‚ˇãƒ§ãƒŗãƒ‘ã‚ąãƒƒãƒˆãŽæå¤ąã€ã¤ãžã‚Šã€ä¸åŽ‰åŽšãĒネットワãƒŧクパãƒŧãƒ†ã‚Ŗã‚ˇãƒ§ãƒŗãŒã‚ã‚Šã€å¤‰æ•°ãŒã‚ã‚‹å ´åˆã€5į§’ã”ã¨ãĢã„ãã¤ã‹ãŽãƒ‘ã‚ąãƒƒãƒˆãŒå¤ąã‚ã‚Œãžã™ã€‚

ã—ãŸãŒãŖãĻ、個äēēįš„ãĒįĩŒé¨“ãĢよると、äēēã€…ãŒč„†åŧąãĒåŋƒã§åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’書き始めると、遅かれ旊かれįŸĨč­˜ãŒįĩæ™ļ化し、すずãĻãŽæžč‘‰æ–ãŒæ–°ã—ã„ãƒãƒŗãƒ—ã‚’åŸ‹ã‚ã€ãã‚Œã¯æ›˛įˇšå‚žæ–œã‚ŗãƒŗã‚ģãƒŗã‚ĩ゚ã‚ĸãƒĢゴãƒĒã‚ēムぎようãĢčĻ‹ãˆãžã™ã€‚ すずãĻぎノãƒŧドが一čˆŦįš„ãĒįŠļ態ãĢ同意しようとするが、こぎã‚ĸãƒĢゴãƒĒã‚ēムがæĨĩį̝ãĒ場合ãĢあぞりテ゚トされãĻいãĒい場合、それらはぞれであり、ãĒぜそれをåŋƒé…ã—ぞす。 しかし、一čˆŦįš„ãĒå ´åˆãŽã‚ŗãƒŗã‚ģãƒŗã‚ĩã‚šã¯ã€éšœåŽŗãŒį™ēį”Ÿã—ãŸå ´åˆãĢäŊ•らかぎåŊĸã§éšœåŽŗã‚’äš—ã‚Šåˆ‡ã‚‹å¯čƒŊ性があるという一čˆŦįš„ãĒæĄäģļãĢé–ĸする合意です。

そぎようãĒ例īŧš



åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãĢ書きčžŧむクナイã‚ĸãƒŗãƒˆãŒã‚ã‚Šã€ãã“ãĢは7つぎノãƒŧドがありぞす。 ここで投įĨ¨ã—ãĻいぞす。 ãģとんおぎノãƒŧドがすずãĻã‚’æ›¸ãį•™ã‚ãĻおくことãĢ同意した場合、すずãĻãŒæ­Ŗå¸¸ã§ã‚ã‚‹ã‚ˆã†ãĢčĻ‹ãˆãžã™ã€‚ čĒ­æ›¸ã§ã‚‚åŒã˜ã“ã¨ã€‚ 少数ぎノãƒŧドīŧˆ1-2-3īŧ‰ãŒčŊãĄãŸå ´åˆã€ãã‚Œã§å•éĄŒã‚ã‚Šãžã›ã‚“ã€‚ すずãĻãŒæ­Ŗå¸¸ã§ã‚ã‚‹ãŸã‚ã€ã‚ĸクã‚ģã‚ˇãƒ“ãƒĒãƒ†ã‚ŖãžãŸã¯æ•´åˆæ€§ã‚’å¤ąãŖãĻいぞせん。 å¤šæ•°æ´žãŒč„ąčŊした場合、ã‚ĸクã‚ģã‚ˇãƒ“ãƒĒãƒ†ã‚Ŗã¯å¤ąã‚ã‚Œãžã™ã€‚č¨˜éŒ˛ã§ããĒくãĒãŖãŸãŒã€æ•´åˆæ€§ã¯ãžã å¤ąã‚ã‚ŒãĻいãĒいためです。

č†ãŽä¸Šã§ãƒŠã‚¤ãƒ–ãƒ‡ãƒĸをしぞしょう。



厚čļŗæ•°ã‚’äŊœã‚ã†ã¨ã—ぞす。 ジェプã‚ģãƒŗã‚’ã‚‚ã†ä¸€åēĻ取垗しãĻ、取垗したもぎをčĒŦ明しãĻãŋぞしょう。

ここではすずãĻãŒã‚‚ã†å°‘ã—č¤‡é›‘ãĢãĒりぞす。ãĒぜãĒã‚‰ã€į§ãŸãĄã¯ã™ã§ãĢčŗĸいからです。 最初ãĢ、クりãƒŧナムぎã‚ĩイã‚ēã‚’č¨˜čŋ°ã™ã‚‹é–ĸ数をäŊœæˆã—ぞす。



3つぎノãƒŧドぎ場合、これらは2つ、5つぎノãƒŧドぎ場合、3つãĒおです。わずかãĒ過半数です。

æŦĄãĢ、マジックぎčĒ­ãŋå–ã‚ŠãŠã‚ˆãŗæ›¸ãčžŧãŋ抟čƒŊãĢついãĻčĒŦ明しぞす。



クりãƒŧナムをäŊŋį”¨ã—ãĻåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‹ã‚‰čĒ­ãŋ取る場合、HTTPをäģ‹ã—ãĻすずãĻぎノãƒŧドãĢそこãĢあるもぎを尋ねぞす。



æŦĄãĢ、クりãƒŧナムで抟čƒŊするé–ĸ数をå‘ŧãŗå‡ēしぞす。これはæŦĄãŽã‚ˆã†ãĢ記čŋ°ã—ぞす。



最垌ãĢ、æŦĄãŽã‚ˆã†ãĢ取垗するåŋ…čĻãŒã‚ã‚‹ã¨č¨€ã„ãžã™ã€‚



ãƒŦã‚ŗãƒŧドとãģãŧ同じ。 すずãĻぎノãƒŧドãĢ書きčžŧãŋぞす。書きčžŧぞれた内厚をįĸēčĒã—ãžã™ã€‚



クりãƒŧナムが集ぞるかおうかīŧš



æŦĄãĢ、ãƒĻãƒŧã‚ļãƒŧãĢ寞するäŊ•らかぎåŋœį­”ã‚’äŊœæˆã—ぞす。



厚čļŗæ•°ã§ãŠã†į”Ÿãã‚‹ã‹



これは少し標æē–įš„ãĒScalaです。 ã“ã“ã§ã¯ã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽã•ãžã–ãžãĒノãƒŧドからさぞざぞãĒã‚ĩãƒŧバãƒŧã‹ã‚‰åąŠã„ãŸä¸€é€ŖãŽå›žį­”ãŒã‚ã‚Šãžã™ã€‚ これは、たとえば0000ぎようãĢ、ãģとんお単ãĒã‚‹čĄŒãŽã‚ˇãƒŧã‚ąãƒŗã‚šã§ã™ã€‚



それらをč‡Ē分でグãƒĢãƒŧプ化しぞす。



おぎグãƒĢãƒŧプがäŧšã†é ģåēĻをčĒŋずぞすīŧš



äēēæ°—でä¸Ļずæ›ŋえīŧš



最もäēēæ°—ãŽã‚ã‚‹å›žį­”ã‚’å–ã‚Šä¸Šã’ãžã™ã€‚



すずãĻãŒæ­Ŗã—ã„ã‚ˆã†ã§ã™ã€‚

æŦĄã¯į­”えをåŊĸ成するé–ĸ数ですīŧš



åŊŧåĨŗã¯ScalaãĢついãĻも非常ãĢčĻį¯„įš„ã§ã‚ã‚Šã€äŊ•がčĩˇã“ãŖãĻいるぎか厌全ãĢは明らかではありぞせん。

最もäēēæ°—ãŽã‚ã‚‹å›žį­”ã¨æŠ•įĨ¨æ•°īŧš



そしãĻ、投įĨ¨æ•°ãŒį§ãŸãĄãŽåޚčļŗæ•°äģĨ上であるか、こぎ厚čļŗæ•°ãĢį­‰ã—ã„å ´åˆã€ã™ãšãĻが大丈å¤Ģã§ã™ã€į§ãŸãĄã¯æ›¸ãį•™ã‚ãžã—ãŸã€‚ æ­Ŗå¸¸ã§ã‚ã‚Šã€éŒ˛éŸŗãŒæˆåŠŸã—ã€åŽščļŗæ•°ãŒé›†ãžãŖãŸã¨č¨€ã„ぞす。



äŊ•がおかしいぎでしょうかīŧŸ

äŊ•ã‹ãŒæ­Ŗã—ããĒã„å ´åˆã€é­”æŗ•ãŽHTTP 409 Conflictã‚’č¨€ã„ãžã™ã€‚



äģŠã€į§ãŸãĄã¯ãã‚Œã‚’すずãĻå°į„Ąã—ãĢしようとしぞすīŧš



そしãĻã‚„ã‚Šį›´ã—ãĻください。

ã“ã“ã§ã€é­”æŗ•ãŽã‚šã‚¯ãƒĒプトをもう一åēĻčŠĻしぞす。 ノãƒŧドn2ãĢあるもぎをčĻ‹ãĻãŋぞしょう。



äģŠã€ãã‚Œã¯æ˛ˆéģ™ã—ãĻいる、そぎようãĒįž‘æƒŗįš„ãĒプロã‚ģ゚。 もうãģとんお。 åŊŧåĨŗãŒã‚ŋãƒƒãƒ—ã™ã‚‹ãŽã‚’åž…ãŖãĻいぞす。 ノックã‚ĸã‚Ļト。

ノãƒŧドn2ãĢあるもぎをčĻ‹ãĻãŋぞしょう。



0がありぞす。ここでäŊ•がčĩˇã“ãŖãŸã‹čĻ‹ãĻãŋぞしょう。



ロãƒŧã‚ĢãƒĢčĒ­ãŋ取り、5įĨ¨ã§0ぎčĒ­ãŋ取りがあり、通常はクãƒŧãƒĢです。 įœŸãŽåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã€‚

そこãĢäŊ•かを書きぞしょうīŧš



そこãĢ小さãĒもぎを書きぞした。 åŊŧåĨŗã¯ã‚ĩã‚¤ãƒŗã‚ĸップしぞしたīŧš



ここでは、こぎãƒĻニットをäģ–ぎノãƒŧドãĢåą•é–‹ã—ãžã—ãŸã€‚ ここãĢは、5įĨ¨ãŽåޚčļŗæ•°ãŒã‚りぞす。 すずãĻがうぞくいくようです。

ジェプã‚ģãƒŗãĢæˆģりぞす。 クりãƒŧナムがあるため、クりãƒŧナムãĢは多くぎマ゚ã‚ŋãƒŧをåĢめることができぞす。 一čˆŦãĢ、厚čļŗæ•°ãŽã‚ˆã†ãĒもぎはありぞせん。

クナイã‚ĸãƒŗãƒˆã§æžč‘‰æ–ã‚’å‰Šé™¤ã—ãžã™īŧš



そしãĻ、すずãĻを再čĩˇå‹•しãĻ、整合性テ゚トを再åēĻåŽŸčĄŒã—ãŸã¨ããĢクりãƒŧナムãĢäŊ•がčĩˇã“るかをįĸēčĒã—ãžã™ã€‚ ã‚ŗãƒŧドをæ‚Ēį”¨ã—ãŸå ´åˆã¯ã€ã™ãšãĻぎ力で。

それは書き始めぞした、多くぎすずãĻがここでčĩˇã“ãŖãĻいぞす。

最垌ãĢã€ãã‚Œã¯į§ãŸãĄãĢįœŸåŽŸã‚’å‘Šã’ãžã—ãŸīŧš



すずãĻがうぞくいくようです。 ã—ã‹ã—ã€į§ã¯ã“ã‚ŒãĢついãĻあãĒたãĢč¨€ãŖãŸã€ã‚¸ã‚§ãƒ—ã‚ģãƒŗã¯ãƒ†ã‚šãƒˆãŽããŽã‚ˆã†ãĒįĸēįŽ‡čĢ–įš„æ€§čŗĒである。 ã—ãŸãŒãŖãĻ、ここでは5į§’ã§ã¯ãĒく15をã‚ĒãƒŗãĢしぞす。



そしãĻ、äŋĄé ŧ性ぎためãĢ、こぎテ゚トを再åēĻåŽŸčĄŒã—ãĻください。 åŊŧãŒį§ãŸãĄãĢäģ–ぎäŊ•かをもたらすかもしれãĒいという希望で、バグぎį™ēčĻ‹ã¯įĸēįŽ‡įš„ã§ã™ã€‚ 非常ãĢčˆˆå‘ŗæˇąã„ãƒĒナック゚したプロã‚ģ゚。 äēŒåēĻį›ŽãŽčŠĻãŋã§ã€ãã‚ŒãŒį§ãŸãĄãŽãŸã‚ãĢäŊ•かをčĻ‹ã¤ã‘ã‚‹ã“ã¨ã‚’æœŸåž…ã—ãžã—ã‚‡ã†ã€‚ äģŠã€į§ãŸãĄã¯åޚčļŗæ•°ãŒãŠã“かでうãĒã‚ŠåŖ°ã‚’ä¸Šã’ã‚‹ã“ã¨ã‚’æœŸåž…ã—ãĻ、åŊŧåĨŗã‚’ã‚ˆã‚Šé•ˇã15᧒運čģĸしãĻいぞす。 もうãģとんお。 čĒ°ã‚‚ãŒåŊŧが教えãĻくれることをæĨŊしãŋãĢしãĻいぞす。 ãã‚Œã¯į§é”ãĢå¤ąæ•—ã‚’å‘Šã’ãŸīŧš



äŊ•を期垅しãĻいぞしたか。 ここでäŊ•ãŒå¤ąæ•—ã—ãžã—ãŸã‹īŧŸ

これらぎ2つぎé–ĸæ•°ã‚’į•°å¸¸ãĢčĻ‹ãĻãŋぞしょう。



ここでäŊ•ã‹ãŒé–“é•ãŖãĻいぞす。 ぞず、Scalaであるため、常ãĢäŊ•ã‹ãŒé–“é•ãŖãĻいる可čƒŊ性がありぞす。 įŦŦäēŒãĢ、ロジックãĢäŊ•ã‚‰ã‹ãŽå•éĄŒãŒã‚ã‚Šãžã™ã€‚

ã“ãŽä¸€é€ŖãŽã‚¨ãƒŗãƒˆãƒĒをčĻ‹ãĻãŋぞしょう。



2つぎクナイã‚ĸãƒŗãƒˆãŒã‚ã‚Šãžã™ã€‚ ここで操äŊœAã‚’č¨˜éŒ˛ã—ã€ãƒŽãƒŧドが「OKã€ã¨č¨€ãŖãĻã€æ›¸ãį•™ã‚ãĻ、ここãĢ厚čļŗæ•°ã‚’垗ぞした。 しかし、Aã‚’č¨˜éŒ˛ã—ãŸã“ã¨ã‚’ã‚¯ãƒŠã‚¤ã‚ĸãƒŗãƒˆãĢäŧãˆã‚‹ãžã§ã€ã“こではよりéĢ˜é€ŸãĒクナイã‚ĸãƒŗãƒˆãŒåŽŸčĄŒã•ã‚Œã€Bã‚’č¨˜éŒ˛ã™ã‚‹ã“ã¨ãŒã§ããžã—ãŸã€‚ãƒŽãƒŧドはクりãƒŧãƒŠãƒ ãŒä¸€įˇ’ãĢãĒãŖãŸã“ã¨ã‚’åŊŧãĢäŧãˆãžã—た。 こぎクナイã‚ĸãƒŗãƒˆãĢBã‚’č¨˜éŒ˛ã—ãŸã“ã¨ã‚’äŧãˆã€ã“れãĢAã‚’č¨˜éŒ˛ã—ãŸã¨č¨€ã„ãžã—ãŸã€‚ãã‚Œã‹ã‚‰äŊ•かをčĒ­ãŋぞした。ここでäŊ•ã‚’čĒ­ãŋぞしたかīŧŸ



æ™‚é–“ãŒįŸ­ã„ãŽã§ã€ã“ã“ã§BをčĒ­ã‚€ã“ã¨ã‚’ãŠå‹§ã‚ã—ãžã™ã€‚ã“ã‚Œã¯ã™ãšãĻ᎚åŊĸ化可čƒŊではありぞせん。 į§ãŸãĄã¯AをčĒ­ãžãĒければãĒらãĒã‹ãŖãŸãŽã§ã€ããŽã‚ˆã†ãĒįŠļæŗãŒã‚ã‚‹ãšãã§ã¯ãĒいぎで。 ã‚ˇã‚šãƒ†ãƒ å†…ãŽįĢļåˆã‚’č§Ŗæąēするåŋ…čĻãŒã‚ã‚‹ãŸã‚ã§ã™ã€‚

これを回éŋするためãĢ、RAFTぞたはPAXOSã‚ĸãƒĢゴãƒĒã‚ēムぎäŊœæˆč€…でãĒい限り、čģŠčŧĒを再į™ē明しãĻ厚čļŗæ•°ã‚’č‡Ēåˆ†ã§č¨˜čŋ°ã™ã‚‹åŋ…čĻã¯ã‚ã‚Šãžã›ã‚“ã€‚ こぎã‚ĸãƒĢゴãƒĒã‚ēãƒ ã¯ã€į§ãŸãĄå…¨å“ĄãŒé€šå¸¸ãŽåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’äŊœæˆã™ã‚‹ãŽãĢåŊšįĢ‹ãĄãžã™ã€‚

PAXOSīŧ†RAFTクりãƒŧナムã‚ĸãƒĢゴãƒĒã‚ēムはįŠļæ…‹ãƒžã‚ˇãƒŗã‚’č¨˜čŋ°ã—、įŠļæ…‹ãƒžã‚ˇãƒŗã¯įŠļæ…‹é–“ã‚’čĄŒãæĨしぞす。 ã“ã‚Œã‚‰ãŽéˇį§ģはすずãĻč¨˜éŒ˛ã•ã‚Œãžã™ã€‚



これらぎã‚ĸãƒĢゴãƒĒã‚ēムは、こぎログで操äŊœåˆæ„ãŽé †åēã‚’č¨˜čŋ°ã—ぞす。 ã‚Ļã‚Ŗã‚ļãƒŧドぎ選択、操äŊœãŽéŠį”¨ã€ã“ãŽã‚¸ãƒŖãƒŧナãƒĢをノãƒŧドでã‚Ŋãƒŧãƒˆã™ã‚‹æ–šæŗ•ãĢついãĻčĒŦ明しぞす。 しかし、すずãĻぎノãƒŧドãĢåŒã˜ã‚¸ãƒŖãƒŧナãƒĢãŒã‚ã‚‹å ´åˆã€ã“ãŽã‚¸ãƒŖãƒŧナãƒĢã‚’æœ€åˆã‹ã‚‰æœ€åžŒãžã§åŽŸčĄŒã™ã‚‹æœ‰é™įŠļæ…‹ãƒžã‚ˇãƒŗã¯ã€ã™ãšãĻぎノãƒŧドで同じįŠļ態ãĢãĒりぞす。 それはとãĻã‚‚č‰¯ã„ã‚ˆã†ã§ã™ã€‚

å•éĄŒã¯ã€PAXOSが非常ãĢč¤‡é›‘ã§ã‚ã‚‹ã“ã¨ã§ã™ã€‚ 数å­Ļč€…ãŽãŸã‚ãĢ数å­Ļ者ãĢã‚ˆãŖãĻ書かれãĻいぞす。 ãã‚Œã‚’åŽŸčŖ…ã—ã‚ˆã†ã¨ã™ã‚‹ã¨ã€PAXOSåŽŸčŖ…ãŽåˆĨぎバãƒĒエãƒŧã‚ˇãƒ§ãƒŗãŒã‚ã‚Šãžã™ãŒã€ããŽä¸­ãĢは多くぎバãƒĒエãƒŧã‚ˇãƒ§ãƒŗãŒã‚ã‚Šãžã™ãŒã€ããŽæ•°ã‚’č€ƒãˆã‚‹ãŽã¯æã‚ã—ã„ã“ã¨ã§ã™ã€‚ それは原際ãĢはäēē々ぎためではãĒく、フェãƒŧã‚ēãĢåˆ†å‰˛ã•ã‚ŒãĻいぞせん。 これは、数å­Ļįš„æ§‹é€ ã‚’č¨˜čŋ°ã™ã‚‹åˇ¨å¤§ãĒフットクロ゚です。 ã‚ˆãč€ƒãˆãĒければãĒりぞせん。 PAXOSとPAXOSåŽŸčŖ…ãŽã“ã‚Œã‚‰ã™ãšãĻぎバãƒĒエãƒŧã‚ˇãƒ§ãƒŗã¯ã€æœŦæ›¸ã§č¨˜čŋ°ã•れãĻいるもぎを、原į¨ŧ働でäŊŋį”¨ã§ãã‚‹åŽŸéš›ãŽåŽŸčŖ…ãĢ向けãĻおぎようãĢč€ƒãˆã‚‹ã‹ãĢついãĻぎもぎです。

ã“ã‚Œã‚’é˜˛ããŸã‚ãĢ、こぎようãĒRAFTã‚ĸãƒĢゴãƒĒã‚ēムがありぞす。 それはより新しく、すずãĻãŽå•éĄŒã‚’č€ƒæ…Žã—ã€å„Ēã‚ŒãŸã‚ŗãƒŗã‚ģãƒŗã‚ĩ゚ã‚ĸãƒĢゴãƒĒã‚ēãƒ ã‚’åŽŸčŖ…ã™ã‚‹ãŸã‚ãĢåŋ…čρãĒすずãĻぎ゚テップをčĒŦ明しãĻいぞす。 そこはすずãĻクãƒŧãƒĢです。 膍大ãĒæ•°ãŽį•°ãĒã‚‹åŽŸčŖ…ãŒã‚ã‚Šãžã™ã€‚



これはJavaå°‚į”¨ã§ã™ãŒã€PHPでもすずãĻãŽč¨€čĒžãŽåŽŸčŖ…ãŒã‚ã‚‹ã¨æ€ã„ãžã™ãŒã€į†į”ąã¯æ˜Žã‚‰ã‹ã§ã¯ã‚ã‚Šãžã›ã‚“ã€‚ こぎナイブナãƒĒをäŊŋį”¨ã—ãĻ、č‡Ē分でテ゚トしãĻãŋãĻください。 すずãĻãŒæ­Ŗã—ã„RAFTã‚’åŽŸčŖ…ã—ãĻいるわけではありぞせん。 į§ã¯akka-raftをäŊŋį”¨ã—ã‚ˆã†ã¨ã—ãžã—ãŸãŒã€ã“ã‚Œã¯å‹•äŊœã™ã‚‹ã‚ˆã†ãĢčĻ‹ãˆãžã™ãŒã€äŊ•ã‚‰ã‹ãŽį†į”ąã§Jepsenテ゚トãĢ合æ ŧしぞせんでした。

合意ã‚ĸãƒĢゴãƒĒã‚ēムは、MongoDBぎ3į•Ēį›ŽãŽãƒãƒŧã‚¸ãƒ§ãƒŗã§ã‚‚RAFTがį™ģ場した場所で多くäŊŋį”¨ã•ã‚ŒãĻいぞす。 Cassandraでは、PAXOSã¯ä¸€į”Ÿã‚‚ãŽã§ã—ãŸã€‚å¤šããŽãƒ‡ãƒŧã‚ŋベãƒŧ゚、キãƒĨãƒŧã‚ˇã‚šãƒ†ãƒ ã§ã¯ã€æˆį†ŸãĢé”ã™ã‚‹ã¨ã€é…ã‹ã‚Œæ—Šã‹ã‚Œã‚ŗãƒŗã‚ģãƒŗã‚ĩ゚ã‚ĸãƒĢゴãƒĒã‚ēãƒ ãŒįžã‚Œãžã™ã€‚

一čˆŦãĢã€åˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ã‚’äŊœæˆã™ã‚‹ã¨ãã€å¤šããŽæ–šæŗ•ãŒã‚ã‚‹ã“ã¨ã‚’į†č§Ŗã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ã“ã‚Œã‚‰ãŽãƒ‘ã‚šãŒå­˜åœ¨ã™ã‚‹ã“ã¨ã‚’įŸĨãŖãĻおくåŋ…čĻãŒã‚ã‚Šã€į‹Ŧč‡Ēぎパ゚をもう1ã¤åŽŸčĄŒã—ãĒいでください。パ゚を選択するときは、すずãĻぎパ゚が整合性、遅åģļã€å¸¯åŸŸåš…ã€ãŠã‚ˆãŗããŽäģ–ãŽį•°ãĒるもぎぎ間ぎåĻĨå”į‚šã§ã‚ã‚‹ã“ã¨ã‚’į†č§Ŗã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ã“ãŽåĻĨå”į‚šã‚’į†č§Ŗã—ã€ãã‚Œã‚’å¯žčąĄåˆ†é‡ŽãĢéŠį”¨ã§ãã‚Œã°ã€ã™ãšãĻãŒå•éĄŒã‚ã‚Šãžã›ã‚“ã€‚



これらぎã‚ĸプロãƒŧチぎおれがå„ĒれãĻã„ã‚‹ã‹ã¯č¨€ãˆãžã›ã‚“ã€‚ãã‚Œã¯ã™ãšãĻあãĒたæŦĄįŦŦです。それはすずãĻあãĒたぎビジネ゚ã‚ŋ゚クãĢ䞝存しぞす。これらは単ãĒるツãƒŧãƒĢです。


ãƒŦポãƒŧトīŧšåˆ†æ•Ŗã‚ˇã‚šãƒ†ãƒ ãŽææ€–とå̌æ‚Ē感。

Source: https://habr.com/ru/post/J322876/


All Articles