Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elixir cluster

Elixir cluster

Yutaka Nishimura

September 05, 2016
Tweet

More Decks by Yutaka Nishimura

Other Decks in Technology

Transcript

  1. &MJYJSͰ
    ΫϥελϦϯά
    ϑΝϯίϛϡχέʔγϣϯζ
    ٕज़։ൃ෦੢ଜ

    View Slide

  2. ࣗݾ঺հ
    w ג
    ϑΝϯίϛϡχέʔγϣϯζ
    w ٕज़։ൃ෦
    w αʔόαΠυɺΠϯϑϥ
    w +BWB4DBMB
    w 3FETIJGU 5SFBTVSF%BUB "VSPSB 4QBSL
    w ࠷ۙɺ&MJYJS৮͍ͬͯ·͢ɻ

    View Slide

  3. &MJYJSͷಛ௃
    w ϓϥοτϑΥʔϜ
    w 4DBMBCJMMJUZεέʔϧ͠΍͢͞
    w 'BVMUUPMFSBODFରো֐ੑ
    w ݴޠ
    w 'VODUJPOBMQSPHSBNNJOHؔ਺ܕϓϩάϥϛϯά
    w &YUFOTJCJMJUZBOE%4-T֦ு͠΍͢͞ͱ%4-
    w πʔϧʢΤίγεςϜͱର࿩؀ڥʣ

    View Slide

  4. εέʔϧ͠΍͢͞
    w ਨ௚εέʔϧʢ7.ͷॲཧೳྗʣ
    w ܰྔϓϩηε
    w ਫฏεέʔϧʢෳ਺7.ͷ࿈ܞʣ
    w ϊʔυؒϓϩηε௨৴

    View Slide

  5. ϕʔε͸ʮϊʔυʯ
    w ϊʔυ͸#&".7.
    w #&".7.͸ɺ&SMBOH&MJYJSͷ࣮ߦ؀ڥ
    w 04ͷ֤छػೳΛ଱ো֐ੑΛߴΊͯಠࣗʹ࠶࣮૷ͯ͠Δ7.
    w ΫϥελϦϯάػೳΛݴޠ7.ϨϕϧͰඪ४αϙʔτ
    w ઀ଓͰ͖Δϊʔυ
    w ϩʔΧϧ-"/Πϯλʔωοτ
    w ϊʔυؒͰͰ͖Δ͜ͱ
    w ϩʔΧϧϊʔυͰͰ͖Δ͜ͱʢϓϩηεىಈɺॲཧ࣮ߦͳͲʣ͸΄΅Ͱ͖Δɻ
    w 4FSWFS$MJFOUΑΓ΋ɺ1FFS1FFSʹ͍ۙ

    View Slide

  6. ಈ࡞Πϝʔδ
    $MVTUFS
    #&".
    /PEF!MPDBMIPTU
    #&".
    /PEF!MPDBMIPTU
    -"/
    #&".
    /[email protected]
    )PTU
    #&".
    OPEF!YDPN
    8"/
    ϓϩηε"
    ϓϩηεىಈ
    ॲཧ࣮ߦ
    ࣮ߦ݁Ռฦૹ
    ̍
    ̎
    ̏
    ϓϩάϥϜ
    ϓϩηε#

    View Slide

  7. )FMMP8PSME
    w MPDBMIPTUͰىಈͨ͠ϊʔυؒͰ)FMMP8PSME
    % iex --sname one
    iex([email protected])1>
    % iex --sname two
    iex([email protected])1> Node.connect(:'[email protected]')
    true
    iex([email protected])2> Node.list
    [:[email protected]]
    iex([email protected])3> Node.spawn_link(Node.list |> hd,
    fn -> IO.puts ‘Hello World, in #{Node.self}' end)
    #PID<8477.68.0>
    Hello World, in [email protected]

    View Slide

  8. ϊʔυͰࢼ͢ʢ̍ʣ
    ϊʔυ઀ଓ͢Δ
    % iex --sname one --cookie cookie1
    iex([email protected])1>
    % iex --sname three --cookie cookie1
    iex([email protected]_b)1> Node.connect(:'[email protected]')
    true
    iex([email protected]_b)2> Node.connect(:'[email protected]')
    true
    iex([email protected]_b)3> Node.list
    [:[email protected], :[email protected]]
    % iex --sname two --cookie cookie1
    iex([email protected])1>

    View Slide

  9. ϊʔυͰࢼ͢ʢ̎ʣ
    ϓϩάϥϜΛఆٛ͢Δ
    % iex --sname one --cookie cookie1
    iex([email protected])1> defmodule Hello do
    ...([email protected])1> def hello(name) do
    ...([email protected])1> IO.puts 'Hello #{name}, in #{Node.self}.'
    ...([email protected])1> end
    ...([email protected])1> end
    iex([email protected])2> Hello.hello(‘foo’)
    Hello foo, in [email protected]
    % iex --sname two --cookie cookie1
    iex([email protected])1> defmodule Hello do … লུ
    iex([email protected])1> Hello.hello(‘foo’)
    Hello foo, in [email protected]
    % iex --sname three --cookie cookie1
    iex([email protected]_b)1> Hello.hello(‘foo’)
    ** (UndefinedFunctionError) undefined function Hello.hello/1

    View Slide

  10. ϊʔυͰࢼ͢ʢ̏ʣ
    ผϊʔυͷϓϩάϥϜΛ࣮ߦ
    % iex --sname three --cookie cookie1
    iex([email protected]_b)6> Hello.hello('bar')
    ** (UndefinedFunctionError) undefined function
    Hello.hello/1 (module Hello is not available)
    iex([email protected]_b)3> Node.list
    [:[email protected], :[email protected]]
    iex([email protected]_b)4> Node.list |> Enum.map(fn(node) ->
    ...([email protected]_b)4> Node.spawn_link(node, fn ->
    ...([email protected]_b)4> Hello.hello('bar') end)
    ...([email protected]_b)4> end)
    Hello bar, in [email protected]
    Hello bar, in [email protected]
    [#PID<8193.132.0>, #PID<9717.84.0>]

    View Slide

  11. &MJYJSͦΖͦΖͲ͏Ͱ͠ΐ͏ʁ
    w ଴๬ͷ&MJYJSຊ೔ຊޠ༁Ͱ·ͨ͠ʂ
    ϓϩάϥϛϯά&MJYJS

    %BWF5IPNBT ஶ

    ࡫ాߞҰ ຋༁

    ௗҪઇ ຋༁

    View Slide

  12. &MJYJSͦΖͦΖͲ͏Ͱ͠ΐ͏ʁ
    w ࣮͸ɺ$FOU04Ͱ΋ZVNͰࢼͤ·͢
    GFEPSBެࣜϦϙδτϦϗεςΟϯάɿDPQS
    $FOU04$FOU04
    &MJYJS
    &SMBOH
    w IUUQTDPQSGFEPSBJOGSBDMPVEPSHDPQSTZOJTIJFMJYJS

    View Slide