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
初心者に Vue.js を 教えるには
tsukuha
5
390
日経電子版におけるリアルタイムレコメンドシステム開発の事例紹介/nikkei-realtime-recommender-system
yng87
1
500
わたしとトラックポイント / TrackPoint tips
masahirokawahara
1
240
グローバル展開を見据えたサービスにおける機械翻訳プラクティス / dp-ai-translating
cyberagentdevelopers
PRO
1
150
【技術書典17】OpenFOAM(自宅で極める流体解析)2次元円柱まわりの流れ
kamakiri1225
0
210
VPC間の接続方法を整理してみた #自治体クラウド勉強会
non97
1
840
AWS CDKでデータリストアの運用、どのように設計する?~Aurora・EFSの実践事例を紹介~/aws-cdk-data-restore-aurora-efs
mhrtech
4
650
ABEMA のコンテンツ制作を最適化!生成 AI x クラウド映像編集システム / abema-ai-editor
cyberagentdevelopers
PRO
1
180
Automated Promptingを目指すその前に / Before we can aim for Automated Prompting
rkaga
0
110
プロダクトエンジニアが活躍する環境を作りたくて 事業責任者になった話 ~プロダクトエンジニアの行き着く先~
gimupop
1
480
とあるユーザー企業におけるリスクベースで考えるセキュリティ業務のお話し
4su_para
3
320
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.3k
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Building Applications with DynamoDB
mza
90
6.1k
Practical Orchestrator
shlominoach
186
10k
Into the Great Unknown - MozCon
thekraken
31
1.5k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Fireside Chat
paigeccino
32
3k
Building Your Own Lightsaber
phodgson
102
6k
Ruby is Unlike a Banana
tanoku
96
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
The Cost Of JavaScript in 2023
addyosmani
45
6.6k
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ʹϥΠϒϥϦͱͯ͠༻ҙ͞Εͯ ͍ͯɺ։ൃऀΛࢧԉͯ͘͠ΕΔ