SlideShare ist ein Scribd-Unternehmen logo
1 von 22
分散 Key/Value ストア Kai
事例紹介 ~ goo ホーム~


20
 0 9年 7月 2日
t-hashi @nttr. co j p
                 .



                        1
自己紹介
 橋本智哉 ( はしもと ともや )
 goo の仕事を始めたのは 2001 年
 主にシステムの設計とか環境構築を担
  当
 今まで関わったサービス
    ◦ goo ホーム・ブックマーク・あしあと ( 現
      )
    ◦ goo トップ ( 現 )
    ◦ goo ブログ
    ◦ goo 音楽・映画・ゲーム
    ◦ etc…                      2
本日の内容

 Kai について紹介
 goo での Kai 利用事例紹介
 goo で Erlang の適用を検討中
 まとめ




                         3
Kai の紹介
   分散型 Key/Value ストア

   Amazon Dynamo のオープンソース実装

   当然、 Erlang で書かれています




                               4
Kai の紹介
   memcached プロトコル互換
    ◦ get/set/stats/version/delete をサポート
   P2P アーキテクチャによるクラスタ
    ◦ マスターノードがいない
    ◦ ノードを増減設しても勝手に再配置

   Consistent Hashing


                                       5
Kai について
   本日の主催者井上さんらを中心に鋭意開
    発中
            http://kai.sf.net/

   井上さん・幾田さん・橋本で gihyo.jp
    に寄稿いたしました

    http://gihyo.jp/dev/feature/01/kai
                                         6
goo ホームについて

          サービス開始から 1.5
           年
           ◦ 2007 年1 0 月に開始
          オープンな SNS
           ◦ 招待状不要の登録制
           ◦ 未登録ユーザでも参照
             は可能

                              7
goo ホームについて
   OpenSocial v0.8.1 に対応
    ◦ ガジェットが使えます
   外部サービスを更新情報として取り込みま
    す
    ◦ goo 以外の多数のサービスにも対応
   デザインテンプレート
    ◦ 好みのデザインに着せ替えることができます



                             8
OpenSocial 対応
   OpenSocial v0.8.1 に対応
    ◦ 日本のサービスでここまでサポートするのは初
    ◦ デベロッパーの皆さんを募集中です




goo ホームサンドボックス    http://sandbox.home.goo.ne.jp/
                                                   9
外部サービスの取り込み
   goo 以外のサービスも積極的に取り込みま
    す
    ◦ スタート時点で29のサービスに対応
    ◦ 要望を聞きながらさらに追加予定




                            10
アクティビティストリーム

   更新情報を見やすく一覧表示
    ◦ 外部サービスの更新を表示
    ◦ ガジェットからも追加可能
    ◦ マイページでは友達の更新情報
     を表示
    ◦ プロフィールでは自分の更新情
     報のみを表示


                       11
goo ホームでの Kai の利用
   2009 年 5 月に商用サービスで利用開始
    ◦ たぶん Kai の商用環境初デビュー


   システムの一部に試験的に導入
    ◦ Activity のみを Kai に格納
    ◦ それ以外のデータは MySQL に格納




                             12
goo ホームでの Kai の利用
   3 ノードの最小構成
    ◦ dets を利用して HDD に格納
    ◦ Xeon 5148   @ 2.33GHz × 2
    ◦ 4GByte メモリ


   150 万件 /3GByte のデータを格納
    ◦ 今のところ大きなトラブルはなし


                                  13
goo ホームでの Kai の利用
   PHP 5.2 + PECL memcache 2.2.5 から利
    用
    ◦ PECL memcached ではない
      http://pecl.php.net/package/memcache


   memcached と組み合わせて使用
    ◦ Kai の出力は memcached にキャッシュ




                                             14
実運用を始めてみて
   ファイルディスクリプタ数の変更が漏れ
    た
    ◦ 運用を始めたとたん、ファイルがオープンで
      きなくてノードが落ちた
    ◦ 一定の負荷をかけないと見つからないので注
      意しましょう

    $ cat /etc/security/limits.conf

    t-hashi      soft nofile          49152
    t-hashi      hard nofile          49152
                                              15
実運用を始めてみて
   ノードの復帰手順をミスして問題発生
    ◦ Write/Write Conflict が大量発生してエラー
      頻発


   Write/Write Conflict
    ◦ 同じキーを持つデータがクラウド上の複数存
      在してしまう状態


                                   16
Write/Write Conflict はこうして
   起きた
                                ② 脱落していたこ
                                とに気付かず set す
                             A’ る
node5               node5
            A                            A
① 脱落
          node4                        node4




            node3                        node3
 node2               node2


           node1                        node1



                                                 17
Write/Write Conflict はこうして
   起きた


 ③ そのまま復帰さ
 せてしまった                ◦ この状態で A を get
               A
        A’               すると A と A’ が両
node5        node4
                         方とも返ってくる
                       ◦ memcached クライア
node2
               node3     ントによって見え
                         方が変わる
              node1

                                          18
課題
   Write/Write Conflict への対応
    ◦ アプリ側で対処したくても対応しているクラ
      イアントがない


   パッケージング
    ◦ apt とか rpm とか気の利いたことが手つかず




                                19
感想
   ノードの管理はそれなりに必要
    ◦ 死活監視だけでは不十分
    ◦ 仲間はずれがいないか常に見てあげる必要あ
      り


   それでも運用は簡単
    ◦ RDB に比べればチューニングポイントがない
    ◦ 足りなくなったら足すだけ

                           20
感想
   おすすめします
    ◦ 永続的な Key/Value ストアを考えている人は
      検討に加えてみてください
    ◦ パッケージングなどはそのうち解決すると思
      われます
    ◦ 負荷テストは必ずやってみてください




                               21
ご静聴ありがとうございまし
      た



                22

Weitere ähnliche Inhalte

Was ist angesagt?

Ruby way-openstack.keynote
Ruby way-openstack.keynoteRuby way-openstack.keynote
Ruby way-openstack.keynoteUchio Kondo
 
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPSSwiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPSjugemjugemjugem
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発Tatsumi Naganuma
 
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみるづや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみるzuya
 
Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話leverages_event
 
20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティlt20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティltKaz Watanabe
 
GitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryGitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryTetsurou Yano
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler についてTomoya Kawanishi
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト三七男 山本
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyHikari Fukasawa
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発するHiroyuki Kusu
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Nobuhiro Nakashima
 
FreeBSD VPSでLive Migration
FreeBSD VPSでLive MigrationFreeBSD VPSでLive Migration
FreeBSD VPSでLive Migrationspg_games
 
Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとKiro Harada
 
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」Shunsuke Watanabe
 

Was ist angesagt? (20)

Ruby way-openstack.keynote
Ruby way-openstack.keynoteRuby way-openstack.keynote
Ruby way-openstack.keynote
 
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPSSwiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPS
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみるづや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
 
Javaに這いよる.NET
Javaに這いよる.NETJavaに這いよる.NET
Javaに這いよる.NET
 
Nodeについて
NodeについてNodeについて
Nodeについて
 
Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話
 
20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティlt20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティlt
 
GitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryGitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registry
 
20120525 mt websocket
20120525 mt websocket20120525 mt websocket
20120525 mt websocket
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler について
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 
FreeBSD VPSでLive Migration
FreeBSD VPSでLive MigrationFreeBSD VPSでLive Migration
FreeBSD VPSでLive Migration
 
Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみると
 
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
 

Ähnlich wie 分散Key/Valueストア Kai 事例紹介

120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejsTakayoshi Tanaka
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話Masataka Tsukamoto
 
はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...
はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...
はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...Netwalker lab kapper
 
Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Yuichi Yoshida
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationOSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationRyuichi Ueda
 
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~Insight Technology, Inc.
 
はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux Beginner for Linux long-lifetime in USB...
はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux  Beginner for Linux long-lifetime in USB...はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux  Beginner for Linux long-lifetime in USB...
はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux Beginner for Linux long-lifetime in USB...Netwalker lab kapper
 
Hyper-V 虎の巻
Hyper-V 虎の巻Hyper-V 虎の巻
Hyper-V 虎の巻hirookun
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、RubyやめるってよNarihiro Nakamura
 
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Takashi Takizawa
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Takashi Sogabe
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルHiroaki Wakamatsu
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12matsuo kenji
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgitTakafumi ONAKA
 
AmazonElasticBeanstalk
AmazonElasticBeanstalkAmazonElasticBeanstalk
AmazonElasticBeanstalkTaisuke Oe
 

Ähnlich wie 分散Key/Valueストア Kai 事例紹介 (20)

120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
 
はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...
はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...
はじめての4,500円OS無しジャンクIntel MacbookにLinux,NetBSDインストール iin OSC 2020 Online/Kyoto...
 
Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationOSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentation
 
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
 
はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux Beginner for Linux long-lifetime in USB...
はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux  Beginner for Linux long-lifetime in USB...はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux  Beginner for Linux long-lifetime in USB...
はじめてのSSD,MicroSD,USBメモリ延命方法 in Linux Beginner for Linux long-lifetime in USB...
 
Hyper-V 虎の巻
Hyper-V 虎の巻Hyper-V 虎の巻
Hyper-V 虎の巻
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
 
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgit
 
AmazonElasticBeanstalk
AmazonElasticBeanstalkAmazonElasticBeanstalk
AmazonElasticBeanstalk
 

Kürzlich hochgeladen

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Kürzlich hochgeladen (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

分散Key/Valueストア Kai 事例紹介

  • 1. 分散 Key/Value ストア Kai 事例紹介 ~ goo ホーム~ 20 0 9年 7月 2日 t-hashi @nttr. co j p . 1
  • 2. 自己紹介  橋本智哉 ( はしもと ともや )  goo の仕事を始めたのは 2001 年  主にシステムの設計とか環境構築を担 当  今まで関わったサービス ◦ goo ホーム・ブックマーク・あしあと ( 現 ) ◦ goo トップ ( 現 ) ◦ goo ブログ ◦ goo 音楽・映画・ゲーム ◦ etc… 2
  • 3. 本日の内容  Kai について紹介  goo での Kai 利用事例紹介  goo で Erlang の適用を検討中  まとめ 3
  • 4. Kai の紹介  分散型 Key/Value ストア  Amazon Dynamo のオープンソース実装  当然、 Erlang で書かれています 4
  • 5. Kai の紹介  memcached プロトコル互換 ◦ get/set/stats/version/delete をサポート  P2P アーキテクチャによるクラスタ ◦ マスターノードがいない ◦ ノードを増減設しても勝手に再配置  Consistent Hashing 5
  • 6. Kai について  本日の主催者井上さんらを中心に鋭意開 発中 http://kai.sf.net/  井上さん・幾田さん・橋本で gihyo.jp に寄稿いたしました http://gihyo.jp/dev/feature/01/kai 6
  • 7. goo ホームについて  サービス開始から 1.5 年 ◦ 2007 年1 0 月に開始  オープンな SNS ◦ 招待状不要の登録制 ◦ 未登録ユーザでも参照 は可能 7
  • 8. goo ホームについて  OpenSocial v0.8.1 に対応 ◦ ガジェットが使えます  外部サービスを更新情報として取り込みま す ◦ goo 以外の多数のサービスにも対応  デザインテンプレート ◦ 好みのデザインに着せ替えることができます 8
  • 9. OpenSocial 対応  OpenSocial v0.8.1 に対応 ◦ 日本のサービスでここまでサポートするのは初 ◦ デベロッパーの皆さんを募集中です goo ホームサンドボックス http://sandbox.home.goo.ne.jp/ 9
  • 10. 外部サービスの取り込み  goo 以外のサービスも積極的に取り込みま す ◦ スタート時点で29のサービスに対応 ◦ 要望を聞きながらさらに追加予定 10
  • 11. アクティビティストリーム  更新情報を見やすく一覧表示 ◦ 外部サービスの更新を表示 ◦ ガジェットからも追加可能 ◦ マイページでは友達の更新情報 を表示 ◦ プロフィールでは自分の更新情 報のみを表示 11
  • 12. goo ホームでの Kai の利用  2009 年 5 月に商用サービスで利用開始 ◦ たぶん Kai の商用環境初デビュー  システムの一部に試験的に導入 ◦ Activity のみを Kai に格納 ◦ それ以外のデータは MySQL に格納 12
  • 13. goo ホームでの Kai の利用  3 ノードの最小構成 ◦ dets を利用して HDD に格納 ◦ Xeon 5148 @ 2.33GHz × 2 ◦ 4GByte メモリ  150 万件 /3GByte のデータを格納 ◦ 今のところ大きなトラブルはなし 13
  • 14. goo ホームでの Kai の利用  PHP 5.2 + PECL memcache 2.2.5 から利 用 ◦ PECL memcached ではない http://pecl.php.net/package/memcache  memcached と組み合わせて使用 ◦ Kai の出力は memcached にキャッシュ 14
  • 15. 実運用を始めてみて  ファイルディスクリプタ数の変更が漏れ た ◦ 運用を始めたとたん、ファイルがオープンで きなくてノードが落ちた ◦ 一定の負荷をかけないと見つからないので注 意しましょう $ cat /etc/security/limits.conf t-hashi soft nofile 49152 t-hashi hard nofile 49152 15
  • 16. 実運用を始めてみて  ノードの復帰手順をミスして問題発生 ◦ Write/Write Conflict が大量発生してエラー 頻発  Write/Write Conflict ◦ 同じキーを持つデータがクラウド上の複数存 在してしまう状態 16
  • 17. Write/Write Conflict はこうして 起きた ② 脱落していたこ とに気付かず set す A’ る node5 node5 A A ① 脱落 node4 node4 node3 node3 node2 node2 node1 node1 17
  • 18. Write/Write Conflict はこうして 起きた ③ そのまま復帰さ せてしまった ◦ この状態で A を get A A’ すると A と A’ が両 node5 node4 方とも返ってくる ◦ memcached クライア node2 node3 ントによって見え 方が変わる node1 18
  • 19. 課題  Write/Write Conflict への対応 ◦ アプリ側で対処したくても対応しているクラ イアントがない  パッケージング ◦ apt とか rpm とか気の利いたことが手つかず 19
  • 20. 感想  ノードの管理はそれなりに必要 ◦ 死活監視だけでは不十分 ◦ 仲間はずれがいないか常に見てあげる必要あ り  それでも運用は簡単 ◦ RDB に比べればチューニングポイントがない ◦ 足りなくなったら足すだけ 20
  • 21. 感想  おすすめします ◦ 永続的な Key/Value ストアを考えている人は 検討に加えてみてください ◦ パッケージングなどはそのうち解決すると思 われます ◦ 負荷テストは必ずやってみてください 21