memcachedを知り尽くす

第5回 memcachedの運用と互換アプリケーション

この記事を読むのに必要な時間:およそ 4 分

互換アプリケーション

memcachedの実装やプロトコルはシンプルな状態が保たれているため,memcached互換の実装が多く存在します。中でも機能の追加で多いものがmemcachedのオンメモリのデータをディスクに書き出し永続性を実現したり,データの冗長性を確保する拡張です。連載の第3回で紹介しましたが,将来のmemcachedではストレージ層をPluggableにし,このような機能もサポートする拡張が進められています。

memcachedの互換アプリケーションをいくつか紹介します。

repcached
memcachedにレプリケーションの機能をつけるpatchとして提供
Flared
QDBMに保存。非同期レプリケーションやフェイルオーバー等も実装されています
memcachedb
BerkeyDBにデータを保存する実装。message queueの実装のプロジェクトも
Tokyo Tyrant
Tokyo Cabinetにデータ保存。memcachedプロトコル互換だけではなくHTTPでもアクセス可能

Tokyo Tyrantの事例

mixiでは互換アプリケーションの中で,Tokyo Tyrantを利用しています。Tokyo Tyrantは同じく平林氏が作成したTokyo Cabinet DBMのネットワークインターフェイスになります。独自のプロトコルを持ちますが,memcachedとの互換プロトコルやHTTPでもデータのやり取りができます。Tokyo Cabinetは非常に高速に動作するので,データをディスクに書き出すことができる実装ですが,非常に高速です。

mixiではTokyo Tyrantをキャッシュサーバとしてではなく,key-valueの組み合わせを保存するDBMSとして利用しています。導入した箇所はユーザの最終アクセス時間を保存するDBで,mixiのサービスのほぼすべてに関連し,ユーザがページにアクセスするたびにデータをアップデートするので負荷も非常に高くなります。MySQLには非常に重たい処理になり,memcachedのみにデータを保存する形ではデータが失われる可能性があるためTokyo Tyrantが導入されています。クライアントとして新規に開発を行わずに,Cache::Memcached::Fastがそのまま利用できるのも大きな利点です。Tokyo Tyrantの詳細については弊社のエンジニアブログを参考にして頂けると幸いです。

まとめ

今回で「memcachedを知り尽くす」の連載は最後になります。memcachedの基本,内部構成,分散の仕組みと運用などを紹介してきました。memcachedについて興味を持って頂けたら幸いです。mixiのシステムや運用に関する情報は弊社のエンジニアブログにも載って行きますのでぜひ参考にしてください。最後まで読んで頂きありがとうございました。

著者プロフィール

長野雅広(ながの まさひろ)

株式会社ミクシィ 開発部システム運用グループ アプリケーション運用チーム所属。mixiのアプリケーション運用に携わっています。Perlのカンファレンス,YAPC::Asia 2008でもmemcachedに関する発表を行いました。

URLhttp://blog.nomadscafe.jp/