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

Perl and Riak

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Perl and Riak

Avatar for Tatasuro Hisamori

Tatasuro Hisamori

September 21, 2013
Tweet

More Decks by Tatasuro Hisamori

Other Decks in Technology

Transcript

  1. •  性能   •  [Tokyo|Kyoto]  [Tyrant|Tycoon]  は高速   •  50ms

     or  die.  を支えるためには速度が必要   •  スケーラビリティ   •  クライアントサイドで分散内容決まる  =>  スケールしにくい   •  「10台じゃ足りない!!  11台目を追加しよう」が簡単にできない   •  運用   •  通常運用では高負荷な状況でも実績がある   •  データ検索したりできない(踏み込んだデータ活用に難有)   <5PLZPc,ZPUP><5ZSBOUc5ZDPPO>ͷ՝୊ Perl  and  Riak
  2. •  Perl   •  アプリケーションはほぼ全て  Perl   •  Perl  <-­‐>

     Riak  のやり取りを受け持つモジュールが必要   •  KVS   •  既存の  TT/KT  へのアクセスは  Cache::Memcached::Fast   •  Memcached  クライアントを使っている   •  運用   •  メトリクス収集  -­‐>  CloudForecast   •  監視  -­‐>  Nagios   'SFBL0VUͷγεςϜ Perl  and  Riak
  3. •  Riak  Client  for  Perl   •  Net::Riak,  Riak::Light,  Data::Riak,

     AnyEvent::Riak   •  REST  だけ  or  PurePerl  の Protobuf  サポート   •  残念ながら遅い   •  Memcached  クライアントとインターフェース互換がない   •  既存の処理に組み入れにくい   •  ないなら作るしかない   •  Riak::PBC  <-­‐  Protobuf  のオブジェクト   •  Riak::Lite::PBC  <-­‐  実際に Riak  とやり取りする  client   Perl  and  Riak 1FSMͱ3JBL
  4. •  その他のモジュールとの比較   •  https://gist.github.com/myfinder/5232845     •  結果  

    •  3000%  over  faster   •  現状  Perl  の世界では(たぶん)最速   •  memcached  like  interface   •  Cache::Memcached::Fast  使ってる人には使いやすい   Perl  and  Riak ࡞ͬͨNPEVMFͷੑೳ
  5. •  Test::riak   •  https://github.com/myfinder/p5-­‐test-­‐riak     •  動作  

    •  テスト実行時に、空きポートを  bind  して Riak  を起動   •  テスト終了時に、Riak  を終了してくれる     •  テスト重要   •  継続的に運用していくシステムにおいて”テストができる”こ とはマスト要件   Perl  and  Riak ୯ମςετϞδϡʔϧ
  6. •  Redirect  がつらい   •  haproxy  で分散しているので、redirectが起こりやすい   •  スループットが上がらない

        •  Set  が詰まるとつらい   •  Set  が詰まり始めると、worker  の  busy  率が上がる   •  書き込みの非同期化が必要   •  更に踏み込んだ対策が必要   •  ハードウェア  /  ソフトウェア 両面から   Perl  and  Riak ՝୊
  7. •  SSD  必須  &  RAM  もできるだけ多く   •  必然的にRandomAccessの多いKVSでHDDはNG  

      •  ネットワーク機器  /  構成を取る   •  内部通信が増えるので、耐えられる構成にする   Perl  and  Riak εϧʔϓοτ޲্ͷͨΊʹ
  8. •  キャッシュ層を設ける     •  hot  な  key  については memcached

     に任せる   •  データの  origin  を Riak  に持つ   •  -­‐>  実装済み   Perl  and  Riak εϧʔϓοτ޲্ͷͨΊʹ app Riak Riak Riak Riak Riak Riak app app Riak Riak memd haproxy
  9. •  hash  から  partition  を特定する   •  Riak  の持っている partition

     情報を  RPC  経由で取得   •  bucket  /  key  から  hash  を取得して、収容  partition  を特定   •  @itawasa++   •  partition  に所属するノードに直接getしに行く   •  Riak::Lite::PBC  でサポート予定   •  -­‐>  今後の課題 だった…   Perl  and  Riak εϧʔϓοτ޲্ͷͨΊʹ
  10. •  Memcached  interface  local  proxy   •  https://github.com/kuenishi/dicorn    

    •  Memcached  ProtocolでRiakとやりとりが出来る   •  こちらにcontributeしたほうが筋が良さそう   •  Cache::Memcached::Fast  がそのまま使える   Perl  and  Riak μΠίʔϯʁ
  11. •  ૉͷ··Ͱ͸NTPSEJFతʹݫ͠Ί •  ߏ੒ͷ޻෉͕ඞཁ •  ୠ͠εϧʔϓοτΛ্͛Δख͸͋Δ •  εέʔϥϏϦςΟͷ໰୊Λࠀ෰Ͱ͖ΔϝϦο τ͸େ͖͍ • 

    zαʔόΛ଍͚ͩ͢zʹӡ༻Λམͱ͠ࠐΊΔ •  ՝୊Λࠀ෰ͯ͠ɺΑΓ҆৺͔ͯͭ͑͠ΔΑ͏ʹ ͍͖͍ͯͨ͠͠ɺͦͷϊ΢ϋ΢Λڞ༗͍ͨ͠ ͜͜·Ͱͷ·ͱΊ