分散key/valueストア kai事例紹介

22
1 分分 分分 Key/Value Key/Value 分分分 分分分 Kai Kai 分分分分 分分分分 goo goo 分分分分分分2009 分 7 分 2 分 [email protected]

Upload: tomoya-hashimoto

Post on 25-May-2015

2.946 views

Category:

Technology


4 download

DESCRIPTION

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

TRANSCRIPT

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

1

分散分散 Key/ValueKey/Value ストア ストア KaiKai事例紹介 ~事例紹介 ~ googoo ホーム~ホーム~

2009 年 7 月 2 日[email protected]

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

2

自己紹介自己紹介橋本智哉 ( はしもと ともや )goo の仕事を始めたのは 2001 年主にシステムの設計とか環境構築を担当今まで関わったサービス

◦ goo ホーム・ブックマーク・あしあと ( 現 )◦ goo トップ ( 現 )◦ goo ブログ◦ goo 音楽・映画・ゲーム◦ etc…

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

3

本日の内容本日の内容

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

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

4

KaiKai の紹介の紹介

分散型 Key/Value ストア

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

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

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

5

KaiKai の紹介の紹介memcachedプロトコル互換

◦ get/set/stats/version/delete をサポート

P2P アーキテクチャによるクラスタ◦ マスターノードがいない◦ ノードを増減設しても勝手に再配置

Consistent Hashing

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

6

KaiKai についてについて本日の主催者井上さんらを中心に鋭意開発中

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

http://kai.sf.net/

http://gihyo.jp/dev/feature/01/kai

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

7

googoo ホームについてホームについて

サービス開始から 1.5年◦ 2007 年1 0 月に開始

オープンな SNS◦ 招待状不要の登録制◦ 未登録ユーザでも参照

は可能

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

8

googoo ホームについてホームについてOpenSocial v0.8.1 に対応

◦ ガジェットが使えます

外部サービスを更新情報として取り込みます

◦ goo 以外の多数のサービスにも対応

デザインテンプレート

◦ 好みのデザインに着せ替えることができます

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

9

OpenSocialOpenSocial 対応対応OpenSocial v0.8.1 に対応

◦ 日本のサービスでここまでサポートするのは初

◦ デベロッパーの皆さんを募集中です

goo ホームサンドボックス http://sandbox.home.goo.ne.jp/

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

10

外部サービスの取り込み外部サービスの取り込みgoo 以外のサービスも積極的に取り込みます

◦ スタート時点で29のサービスに対応

◦ 要望を聞きながらさらに追加予定

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

11

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

更新情報を見やすく一覧表示

◦ 外部サービスの更新を表示

◦ ガジェットからも追加可能

◦ マイページでは友達の更新情報

を表示

◦ プロフィールでは自分の更新情

報のみを表示

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

12

googoo ホームでのホームでの KaiKai の利用の利用2009 年 5 月に商用サービスで利用開始

◦ たぶん Kai の商用環境初デビュー

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

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

13

googoo ホームでのホームでの KaiKai の利用の利用3 ノードの最小構成

◦ dets を利用して HDD に格納◦ Xeon 5148 @ 2.33GHz × 2

◦ 4GByte メモリ

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

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

14

googoo ホームでのホームでの KaiKai の利用の利用PHP 5.2 + PECL memcache 2.2.5 から利用

◦ PECL memcached ではない

http://pecl.php.net/package/memcache

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

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

15

実運用を始めてみて実運用を始めてみてファイルディスクリプタ数の変更が漏れ

た◦ 運用を始めたとたん、ファイルがオープンで

きなくてノードが落ちた◦ 一定の負荷をかけないと見つからないので注

意しましょう

$ cat /etc/security/limits.conf

t-hashi soft nofile 49152t-hashi hard nofile 49152

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

16

実運用を始めてみて実運用を始めてみてノードの復帰手順をミスして問題発生

◦ Write/Write Conflict が大量発生してエラー頻発

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

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

17

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

node3

node1

node2

node5

node4

A①脱落

node3

node1

node2

node5

node4

A

A’

②脱落していたことに気付かず setする

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

18

node3

node1

node2

node5 node4

AA’

③そのまま復帰させてしまった ◦ この状態で A を get

すると A と A’ が両方とも返ってくる

◦ memcached クライアントによって見え方が変わる

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

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

19

課題課題Write/Write Conflictへの対応

◦ アプリ側で対処したくても対応しているクライアントがない

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

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

20

感想感想ノードの管理はそれなりに必要

◦死活監視だけでは不十分◦仲間はずれがいないか常に見てあげる必要あ

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

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

21

感想感想おすすめします

◦永続的な Key/Value ストアを考えている人は検討に加えてみてください

◦ パッケージングなどはそのうち解決すると思われます

◦ 負荷テストは必ずやってみてください

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

22

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