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
Elixir/OTPを使った分散アプリケーション
Search
kanmo
May 12, 2017
Technology
4
2.2k
Elixir/OTPを使った分散アプリケーション
#cm_osaka クラスメソッド大阪勉強会のスライド
kanmo
May 12, 2017
Tweet
Share
More Decks by kanmo
See All by kanmo
Keep Phoenix App Productivity
kanmo
2
1.1k
ExAws
kanmo
1
510
Real Time Web Application with Elixir and Phoenix
kanmo
1
1.4k
Elixir 次に来る大物Web言語の可能性
kanmo
8
2.8k
Other Decks in Technology
See All in Technology
クライアントサイドでよく使われる Debounce処理 をサーバサイドで3回実装した話
yoshiori
1
140
Automated Promptingを目指すその前に / Before we can aim for Automated Prompting
rkaga
0
100
2024-10-30-reInventStandby_StudyGroup_Intro
shinichirokawano
1
590
Shift-from-React-to-Vue
calm1205
1
1.2k
Emacs x Nostr
hakkadaikon
1
150
AIを駆使したゲーム開発戦略: 新設AI組織の取り組み / sge-ai-strategy
cyberagentdevelopers
PRO
1
130
サイバーエージェントにおける生成AIのリスキリング施策の取り組み / cyber-ai-reskilling
cyberagentdevelopers
PRO
2
180
30万人が利用するチャットをFirebase Realtime DatabaseからActionCableへ移行する方法
ryosk7
5
320
WINTICKETアプリで実現した高可用性と高速リリースを支えるエコシステム / winticket-eco-system
cyberagentdevelopers
PRO
1
190
ガチ勢によるPipeCD運用大全〜滑らかなCI/CDを添えて〜 / ai-pipecd-encyclopedia
cyberagentdevelopers
PRO
3
190
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
160
急成長中のWINTICKETにおける品質と開発スピードと向き合ったQA戦略と今後の展望 / winticket-autify
cyberagentdevelopers
PRO
1
160
Featured
See All Featured
The Language of Interfaces
destraynor
154
24k
Writing Fast Ruby
sferik
626
61k
Making the Leap to Tech Lead
cromwellryan
132
8.9k
The Cult of Friendly URLs
andyhume
78
6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Designing for Performance
lara
604
68k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Being A Developer After 40
akosma
86
590k
GraphQLとの向き合い方2022年版
quramy
43
13k
The Invisible Side of Design
smashingmag
297
50k
Transcript
&MJYJS051Λͬͨ ࢄΞϓϦέʔγϣϯ Ϋϥεϝιου େࡕษڧձ 2017/05/12
w "LJIJEF,BO !LBONP@BL w ීஈϞόΠϧΞϓϦαʔϏε෦ͱ͍͏ͱ͜ΖͰαʔ όαΠυͷ͓ࣄΛ͍ͯ͠·͢ʢ3VCZɺ/PEFͳ Ͳ ɻ͋ͱΠϯϑϥগ͠ʢ"84ʣ
ຊεϥΠυͷ༰ʹ͍ͭͯ w ຊεϥΠυʹग़ͯ͘Δ&MJYJSͷΞϓϦέʔγϣϯɺα ϯϓϧίʔυຊ൪ڥͰͷӡ༻ܦݧ͋Γ·ͤΜ
ΞδΣϯμ w &MJYJS&SMBOHͷհ w ࢄγεςϜΛߏங͢ΔͨΊʹඞཁʹͳΔػೳʹͭ ͍ͯ w ϊʔυؒͷϝοηʔδ௨৴ʢඇಉظʣ w ϓϩηεͷࢹɺ࠶ىಈઓུ
w ΫϥελϦϯάʢ'BJMPWFS5BLFPWFSʣ
&MJYJS w &SMBOH7.্Ͱಈ͘ಈతͳؔܕݴޠ w োੑɺฒߦੑɺࢄॲཧੑೳʹ༏ΕΔ &MJYJS &SMBOH7. ϥΠϒϥϦʢ051ʣ
ࢄγεςϜ w ࠷ۙͷγεςϜଟ͔Εগͳ͔ΕࢄγεςϜ w ҰͷαʔόͷॲཧೳྗͩͱݶքʢϜʔΞͷ๏ଇ ͷݶքʣ w ৫ߏ͕ཁҼͷ߹͋Δ w ࢄγεςϜΛ࡞Δ্ͰඞཁʹͳΔೳྗ
εέʔϥϏϦςΟ ϑΥʔϧττϨϥϯε
εέʔϥϏϦςΟ w ଟ͘ͷΠϕϯτΛॲཧ͢ΔͨΊʹ্ཱ͕ͪΓͷૣ͍ ϓϩηε͕ඞཁ w ϓϩηεͷΓସ͑ૣ͘Ͱ͖ΔΑ͏ʹ͢Δ w ҰͰੑೳ͕ग़ͤͳ͍ͷͰෳͷαʔόͰॲཧΛ ͢Δ w
ϓϩηεಉ࢜Ͱϝοηʔδ௨৴Λ͢Δඞཁ͕͋Δ
εέʔϥϏϦςΟͷଓ͖ w ϓϩηεΛܰ͘͢Δ w Ϋϥογϡͨ͠ϓϩηεʹӨڹΛड͚ͳ͍Α͏ʹ͢ Δ ˠڞ༗ϝϞϦΫϥογϡ͢Δͱ෮چͮ͠Β͍ͷͰ ϝοηʔδύογϯάΛ͏͜ͱʹͳͬͨ
ϑΥʔϧττϨϥϯε w োى͖Δͷͱߟ͑Δ w ͙ͷͰͳ͘ɺى͖ͨ࣌ʹ͏·͘ରॲͰ͖ΔΑ ͏ʹ͢Δ w σʔλ͕͓͔͘͠ͳͬͨΒ෮چΛఘΊͯϓϩηεΛ LJMM͢Δ w
ͦͷͨΊʹϓϩηε͕ଞͷϓϩηεΛࢹ͢ΔΤ ϥʔॲཧػߏඞཁʹͳΔ
ϑΥʔϧττϨϥϯεଓ͖ w ࢄγεςϜͰϝοηʔδૹ৴ઌ͕Ϋϥογϡ͢ Δ͜ͱߟྀ͢Δඞཁ͕͋Δ w ϦϞʔτؔݺͼग़͠Λ҆શʹߦ͏ͨΊʹɺඇಉظ ϝοηʔδύογϯάΛ͏ w ૹ৴ઌͷঢ়ଶʹӨڹ͞Εͨ͘ͳ͍
͜ΕΒΛ࣮ݱ͢Δ͜ͱ͕&SBMOH ։ൃͷతͩͬͨ
&SMBOH7. w &SMBOHϦΞϧλΠϜɺࢄɺฒߦγεςϜͷߏங ʹ༏Ε͍ͯΔݴޠɺϥϯλΠϜ w "DUPS.PEFM w োੑೳ w ෛՙࢄ
"DUPS.PEFM w ଞͷϓϩηεͱσʔλΛڞ༗͢Δ߹NFTTBHF QBTTJOH σʔλίϐʔ͞ΕΔͷͰϝϞϦڞ༗ͷ Έ͕ෆཁ w ϓϩηε୯ҐͰ($ɺϑϧ($ൃੜ͠ͳ͍
োੑ w 4IBSFE/PUIJOHͳϝϞϦϞσϧ w ͋Δϓϩηε͕Ϋϥογϡͯ͠ଞͷϓϩηεʹ Өڹ͠ͳ͍ w φΠϯφΠϯ ͷ৴པੑ
ෛՙࢄ w &SMBOH7.͕ෛՙࢄͷ໘Λݟͯ͘ΕΔ w ͷ্ͱίΞϓϩηοα͕ઢܗʹεέʔϧ ͢Δ w εέδϡʔϥͱͯ͠ίΞຖʹεϨουΛىಈ͢Δ
w ͦΕͧΕ࣮ߦΩϡʔΛ࣋ͭ w λεΫ͕ଟ͍߹ଞͷΩϡʔ ʹҠ͞ΕΔ ෛՙࢄͷଓ͖
ฒߦॲཧ w ϓϩηεʢ"DUPSʣඇৗʹ͍ܰʢϫʔυ w άϦʔϯεϨουͳͷͰ04ͷίϯςΩετεΠο νແ͠ w ωοτϫʔΫαʔόͷ߹ɺҰͭͷϦΫΤετʹҰ ͭͷܰྔϓϩηεΛׂΓͯΔɹ
ϝοηʔδ௨৴
ϓϩηεੜ # ϓϩηεΛىಈ pid = spawn(ModuleName, :loop, [])
ϝοηʔδૹ৴ send(pid, {self, “Hello Actor”})
ϝοηʔδड৴ # ϝοηʔδड৴ॲཧ defmodule Receiver do def loop do receive
do {_, msg} -> IO.puts(msg <> “!!!”) end loop end end
-PDBUJPO5SBOTQBSFODZ w ಉҰϊʔυ্Ͱͷϝοηʔδ௨৴ͱಉ͡Α͏ʹผϊʔ υͷϓϩηεͱϝοηʔδ௨৴Λߦ͏͜ͱ͕Ͱ͖Δ w ΫϥελͷϓϩηεωοτϫʔΫʹಁաత w Ϋϥελͷϊʔυʹଓ͢ΔͱɺΫϥελͷશ ϊʔυʹࣗಈతʹଓ͢Δ
Ϋϥελͷશϊʔυʹଓ Node A Node B Node C Node D Node
A Node B Node C Node D
5BTLBTZOD5BTLBXBJU # ผϓϩηεͰ࣮ࢪ͢ΔؔΛఆٛ func = fn -> Worker.start(url) end 1..10000
|> Enum.map(fn _ -> Task.async(func) end) # ఆٛͨؔ͠Λ ͢ |> Enum.map(&Task.await(&1)) # ݁ՌΛड͚औΔ w ผϓϩηεͰॲཧΛͯͦ͠ͷ݁ՌΛͪड͚Δίʔ υΛ؆୯ʹॻ͚Δ ඇಉظͷฒߦॲཧ
5BTLBTZOD5BTLBXBJU # ผϓϩηεͰ࣮ࢪ͢ΔؔΛఆٛ func = fn -> Worker.start(url) end 1..10000
|> Enum.map(fn _ -> Task.async(func) end) # ఆٛͨؔ͠Λ ͢ |> Enum.map(&Task.await(&1)) # ݁ՌΛड͚औΔ w ผϓϩηεͰॲཧΛͯͦ͠ͷ݁ՌΛͪड͚Δίʔ υΛ؆୯ʹॻ͚Δ ඇಉظͷฒߦॲཧ
5BTLBTZOD5BTLBXBJU # ผϓϩηεͰ࣮ࢪ͢ΔؔΛఆٛ func = fn -> Worker.start(url) end 1..10000
|> Enum.map(fn _ -> Task.async(func) end) # ఆٛͨؔ͠Λ ͢ |> Enum.map(&Task.await(&1)) # ݁ՌΛड͚औΔ w ผϓϩηεͰॲཧΛͯͦ͠ͷ݁ՌΛͪड͚Δίʔ υΛ؆୯ʹॻ͚Δ ඇಉظͷฒߦॲཧ
5BTLBTZOD5BTLBXBJU # ผϓϩηεͰ࣮ࢪ͢ΔؔΛఆٛ func = fn -> Worker.start(url) end 1..10000
|> Enum.map(fn _ -> Task.async(func) end) # ఆٛͨؔ͠Λ ͢ |> Enum.map(&Task.await(&1)) # ݁ՌΛड͚औΔ w ผϓϩηεͰॲཧΛͯͦ͠ͷ݁ՌΛͪड͚Δίʔ υΛ؆୯ʹॻ͚Δ ඇಉظͷฒߦॲཧ
σϞ w ϚελʔͱεϨʔϒͰͦΕͧΕϓϩηεΛੜ w BTZODBXBJUͰॲཧɺ݁ՌΛड͚औͬͯग़ྗ master slave Node B Node
A
ϓϩηεͷࢹ ˍ࠶ىಈઓུ
-FUJU$SBTI w &SMBOHͷΤϥʔॲཧͷํ w ϓϩηεΛࢹ͓͍ͯͯ͠ɺϓϩηε͕ࢮΜͩΒ࠶ ىಈ͘͠ύϥϝʔλมߋͯ͠ϦτϥΠ w ෮چॲཧΤϥʔΛىͨ͜͠ϓϩηεͰͳ͘ɺ ࢹ͍ͯ͠Δϓϩηε͕ߦ͏
ϓϩηεࢹ w ࢄγεςϜͰϓϩηε͕ఀࢭͨ࣌͠ʹݕ͢Δ Έ͕ඞཁ w 1SPDFTTMJOLͱ1SPDFTTNPOJUPS͕༻ҙ͞Ε͍ͯΔ w MJOLϓϩηεఀࢭͱͱʹґଘؔͷ͋Δϓϩ ηεશͯఀࢭ͢Δ w
NPOJUPSϓϩηεఀࢭΛݕ͚ͩ͢Δ
051
w ࢄɺฒߦϓϩάϥϛϯάΛࢧԉ͢Δ'8ɺ։ൃ ڥ w ϦϯΫɺϞχλʔͳͲΛͬͯࣗͰฒྻΞϓϦέʔ γϣϯΛॻ͔ͳͯ͘051ϑϨʔϜϫʔΫʹ༻ҙ͞ Ε͍ͯΔ w ࢄϓϩάϥϛϯάͷͨΊͷϏϔΠϏΞ ύλʔϯ
͕༻ҙ͞Ε͍ͯΔ
4VQFSWJTPS
Supervisor Worker Worker Worker w TVQFSWJTPSɿϓϩηεΛࢹ͢Δɺϓϩηε͕ࢮΜͩ߹࠶ى ಈ͢Δ w XPSLFSɿ࣮ࡍͷॲཧΛߦ͏ϓϩηεɻޭ͢Δ͔ࣦഊ͢Δ͔Θ ͔Βͳ͍ͷͰ৴༻͠ͳ͍ˠTVQFSWJTPS͕ࢹ͢Δ
࠶ىಈઓུ w ࢹରϓϩηεʹ࠶ىಈઓུΛઃఆ͢Δ w POF@GPS@POF w POF@GPS@BMM w SFTU@GPS@POF w
TJNQMF@POF@GPS@POF
ྫ w ֎෦"1*ݺͼग़͠ϫʔΧʔͷϓʔϧΞϓϦέʔγϣϯΛ࡞Δ w ͜ͷΞϓϦέʔγϣϯΫϥΠΞϯτΞϓϦέʔγϣϯʹ ݺͼग़͞ΕΔͱɺཧ͍ͯ͠ΔϫʔΧʔͷࢀরΛ͢ w ϫʔΧʔ͕Ϋϥογϡͨ͜͠ͱΛݕͨ͠Β࠶ىಈ͢Δ w ϫʔΧʔͷىಈΛཧ͢Δ
w ϫʔΧͷॲཧͷ݁Ռঢ়ଶͱͯ͠อ࣋͢Δඞཁ͕͋Δʢ֎ ෦"1*ݺͼग़͠ͷ݁Ռʣ
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker Worker supervise supervise
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker Worker supervise supervise ❌
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker supervise supervise ❌
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker supervise supervise
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker supervise supervise ઃఆʹै͍ ࢠϓϩηεΛ࠶ىಈ
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker Worker supervise supervise ઃఆʹै͍
ࢠϓϩηεΛ࠶ىಈ
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker Worker supervise supervise
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker Worker supervise supervise ֎෦API
୯७ͳ4VQFSWJTJPO5SFFͷྫ Supervisor Server WorkerSupervisor Worker Worker Worker supervise supervise ֎෦API
ݺͼग़݁͠ՌΛอଘ͢Δ
ͦΕͧΕͷϓϩηεͷׂ w 8PSLFSɿޭ͢Δ͔ࣦഊ͢Δ͔Θ͔Βͳ͍ॲཧΛ ߦ͏ w 8PSLFS4VQFSWJTPSɿ8PSLFSΛࢹ w 4FSWFSɿঢ়ଶΛཧ͢Δ w 4VQFSWJTPSɿ4FSWFSͱ8PSLFS4VQFSWJTPSΛࢹ
͢Δ
ࢹઃఆ opts = [strategy: :one_for_all, max_restarts: 5, max_seconds: 5] supervise(children,
opts) w POF@GPS@BMMͳͷͰϓϩηε͕Ϋϥογϡ͢Δͱଞͷϓϩ ηεશͯ࠶ىಈ͢Δ w ඵҎʹճ࠶ىಈ͢ΔͱΞϓϦέʔγϣϯ͕ఀࢭ͢Δ
8PSLFSͷ͕૿͑ͨ߹Ͳ͏͢Δʁ w ݺͼग़͢֎෦"1*͕ෳʹͳͬͨ w ͦͷ"1*͝ͱʹଓ͢ΔϫʔΧʔͷΛཧ͍ͨ͠ w 8PSLFSΛάϧʔϓ͚͠ɺͦͷάϧʔϓ͚ͩ 8PSLFS4VQFSWJTPSΛ༻ҙ͢Δ
มߋҊ Server Worker Worker Worker Worker Worker Worker Supervisor SubSupervisor
WorkerSupervisor WorkerSupervisor
มߋҊ Server Worker Worker Worker Worker Worker Worker
มߋҊ Server Worker Worker Worker Worker Worker Worker ෳͷ"1*ݺͼग़͠Λ͢Δ શϫʔΧʔঢ়ଶΛཧ͢ΔͷͰ
ϘτϧωοΫʹͳΔ
มߋҊ Server Supervisor Worker Worker Worker Worker Worker Worker SubSupervisor
WorkerSupervisor WorkerSupervisor
มߋҊ Server Supervisor Worker Worker Worker Worker Worker Worker SubSupervisor
WorkerSupervisor WorkerSupervisor ❌
มߋҊ Server Supervisor ❌
มߋҊ Server Supervisor ❌ 4FSWFS͕410' Ϋϥογϡ͢ΔͱશͯͷϫʔΧʔ Ϋϥογϡ͢Δ
มߋҊ Server Supervisor 4FSWFS͕410' Ϋϥογϡ͢ΔͱશͯͷϫʔΧʔ Ϋϥογϡ͢Δ
w ͯ͢ͷϫʔΧʔͷϝοηʔδΛҰͭͷ4FSWFSϓϩ ηε͕ड͚औΔ͜ͱʹͳΔ w 8PSLFS4VQFSWJTPSͷ͕૿͑Δͱ4FSWFSͷϝʔϧ ϘοΫε͕ҲΕΔةݥ͕͋Δ w 4FSWFS͕410'ʹͳΔ
w ϫʔΧʔͷঢ়ଶΛཧ͢Δ4FSWFSϓϩηεϫʔ Χʔϓʔϧʢݺͼग़͠ઌͷ֎෦"1*ʣ͝ͱʹ༻ҙ͢ Δ
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor PoolServer WorkerSupervisor PoolServer WorkerSupervisor
Worker Worker Worker Worker Worker Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor PoolServer WorkerSupervisor PoolServer ֎෦αΠτ"ͷϫʔΧʔ
ͷঢ়ଶΛཧ͢Δ WorkerSupervisor Worker Worker Worker Worker Worker Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor PoolServer WorkerSupervisor PoolServer ֎෦αΠτ"ͷϫʔΧʔ
ͷঢ়ଶΛཧ͢Δ ֎෦αΠτ #ͷϫʔΧʔͷঢ়ଶΛཧ ཧ͢Δ WorkerSupervisor Worker Worker Worker Worker Worker Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor PoolServer WorkerSupervisor PoolServer ֎෦αΠτ
#ͷϫʔΧʔͷঢ়ଶΛཧ ཧ͢Δ WorkerSupervisor Worker Worker Worker Worker Worker Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor PoolServer WorkerSupervisor PoolServer WorkerSupervisor
Worker Worker Worker Worker Worker Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor PoolServer WorkerSupervisor PoolServer WorkerSupervisor
Worker Worker Worker Worker Worker Worker ❌
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor PoolServer WorkerSupervisor PoolServer WorkerSupervisor
Worker Worker Worker Worker Worker Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor WorkerSupervisor PoolServer WorkerSupervisor Worker
Worker Worker Worker Worker Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor WorkerSupervisor PoolServer Worker Worker
Worker
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor WorkerSupervisor PoolServer Worker Worker
Worker ผͷϓʔϧͷϫʔΧʔ ʹӨڹ͠ͳ͍
Supervisor Server SubSupervisor PoolSupervisor PoolSupervisor WorkerSupervisor PoolServer Worker Worker
Worker
มߋͨ͠ͱ͜Ζ w ঢ়ଶཧΛ͢Δ1PPM4FSWFSϓϩηε ࠓ·Ͱͷ 4FSWFS ΛϫʔΧʔϓʔϧʢ֎෦"1*ʣ͝ͱʹՃ w 4VC4VQFSWJTPS͕ϫʔΧʔϓʔϧ͝ͱʹଘࡏ͢Δ 1PPM4VQFSWJTPSΛࢹ͢Δ
'BJMPWFS5BLFPWFS
ىಈ͢ΔϊʔυΛΓସ͑Δ Node A Application Node B Node C
ىಈ͢ΔϊʔυΛΓସ͑Δ Application Node B Node C
ىಈ͢ΔϊʔυΛΓସ͑Δ Node B Node C
ىಈ͢ΔϊʔυΛΓସ͑Δ Node B Node C Application
ىಈ͢ΔϊʔυΛΓସ͑Δ Node C Application
ىಈ͢ΔϊʔυΛΓସ͑Δ Node C
ىಈ͢ΔϊʔυΛΓସ͑Δ Node C Application
ىಈ͢ΔϊʔυΛΓସ͑Δ Node A Node C Application
ىಈ͢ΔϊʔυΛΓସ͑Δ Node A Node C
ىಈ͢ΔϊʔυΛΓସ͑Δ Node A Node C Application
w 'BJMPWFSɿΫϥελͷϊʔυ͕ఀࢭͨ͠߹ʹΞ ϓϦέʔγϣϯ͕ผͷϊʔυͰىಈ͢Δ w 5BLFPWFSɿΞϓϦέʔγϣϯ͕ݱࡏىಈ͍ͯ͠Δ ϊʔυΑΓߴ͍༏ઌΛ࣋ͭϊʔυ͕͋Δ߹ɺݱ ࡏىಈ͍ͯ͠ΔϊʔυͰΞϓϦέʔγϣϯΛఀࢭ͞ ͤߴ͍༏ઌͷϊʔυͰىಈ͢͜͠ͱ
DMVTUFSͷઃఆྫ [{kernel, [{distributed, [{sample, 5000, ['
[email protected]
', {'
[email protected]
', '
[email protected]
'}]}]}, {sync_nodes_mandatory, ['
[email protected]
',
'
[email protected]
']}, {sync_nodes_timeout, 30000} ]}]. w EJTUSJCVUFEDMVTUFSΛߏ͢Δϊʔυ܈ɻ༏ઌBɺCɺDͷॱ w TZOD@OPEFT@NBOEBUPSZɿ͜͜ʹઃఆͨ͠શͯͷϊʔυ͕ىಈ͢Δ·ͰΞϓϦέʔ γϣϯΛϩοΫ͢Δ w TZOD@OPEFT@UJNFPVUɿ͜ͷ࣌ؒ·Ͱʹࢦఆͨ͠ϊʔυ͕ىಈ͠ͳ͚Εҟৗऴ ྃ͢Δ
σϞ w Bϊʔυ͕ఀࢭ͢ΔͱCϊʔυͰΞϓϦέʔγϣϯ ͕ىಈ͢Δʢ'BJMPWFSʣ w Bϊʔυ͕ఀࢭঢ়ଶ͔Βىಈঢ়ଶʹΔͱɺΞϓϦ έʔγϣϯ͕BϊʔυͰىಈ͢͠ʢ5BLFPWFSʣ
·ͱΊ w &MJYJSʹࢄΞϓϦέʔγϣϯʹඞཁͳػೳ͕༻ ҙ͞Ε͍ͯΔʢ051ɺ7.ʣ w ࢄΞϓϦέʔγϣϯΛ࡞Δ্Ͱͭ·͖͍ͮ͢ϙ Πϯτ͕͢Ͱʹ051ʹϥΠϒϥϦͱͯ͠༻ҙ͞Εͯ ͍ͯɺ։ൃऀΛࢧԉͯ͘͠ΕΔ