国内だけでなく国外(なぜか主に中国語)でもまだrepcachedについて言及してるのをちらほら見かけるのですが、repcachedはmemcached 1.2.8ベースですし(memcached 1.4.5に対応してる人もいるようですが)いまならKyoto Tycoon使えばいいんじゃないかと思うのです。
Kyoto Tycoonなら:
- memcachedプロトコルプラグインを使えば、Kyoto Tycoonがそのままmemcachedの代替になる(memcachedプロトコルを喋るクライアントコードはそのままでよい)
- Tokyo Tyrantと違ってexpireもOK
- memcachedの代替が目的なら、速いオンメモリDB(StashDBとか)でOK
- 非同期レプリケーションもできる
- ホットスタンバイ側のサーバリソースが無駄に思うなら、keyに応じてmodとかでリクエストするサーバを2台のどちらかに固定化してマルチマスタ構成にするのも手
- オンメモリDBで運用しつつスナップショットも採れるので、再起動してもデータが全部消えることはない。
性能面で心配してる人は、だれかのベンチマークは参考までにして、自身の要件、サーバ環境でベンチマークをとるのがいいと思います。ただ、memcachedもKTもかなり高いreq/sを出せますので、よっぽどマシン性能に差がない限りクライアント1台ではサチれないでしょう。要件のreq/sが出ればそれでヨシとするか、どうしてもサチらせたいなら、LLとかじゃなくてlibmemcached(かlibmemcache)を使ってCで書いたクライアントを複数マシンから実行し、計測するのがいいでしょう。
ちなみに、
- ログレベルを"SYSTEM"に
- Kyoto Tycoonプロトコルのポートは1975に
- タイムアウトは5秒に
- スレッド数は8に
- レプリケーションで必要なサーバIDは101に
- 更新ログは/kt/kt101/ulog-101/の下に保存
- レプリケーションタで必要なタイムスタンプを記録するファイルは/kt/kt101/101.rtsに
- レプリケーションの相方のホストはkt102に
- レプリケーションの相方のポートは1975に
- 外部コマンド(ホットバックアップを採るコマンドとか)は/kt/bin/の下に置く
- memcachedプロトコルプラグインをロード
- memcachedプロトコルはポート11401で受ける
- データベースはオンメモリのStashDBで、バケット数は100万コ
な場合の起動はこんな感じです。詳しくはktserverのリファレンスを参照のこと。
ktserver \ -ls \ -port 1975 \ -tout 5 \ -th 8 \ -sid 101 \ -ulog /kt/kt101/ulog-101 \ -rts /kt/kt101/101.rts \ -mhost kt102 \ -mport 1975 \ -cmd /kt/bin \ -plsv /usr/local/app/kyototycoon/libexec/ktplugservmemc.so \ -plex 'port=11401#opts=f' \ :#bnum=1m \ ;