最高の Java memcached クライアントはどれですか? その理由は?
7 に答える
spymemcachedの作成者として、私は少し偏見がありますが、次の理由から、それは私のものだと思います。
可能な限りどこでもノンブロッキングになるようにゼロから設計されています。
データを要求したり、セットを発行したりすると... 1 つの小さな同時キュー挿入があり、結果をブロックする Future を取得します (get などの一般的なケースに便利なメソッドがいくつかあります)。
積極的に最適化
私の最適化ページで詳細を読むことができますが、私はアプリケーション全体の最適化を行っています。
私はまだマイクロベンチマークでかなりうまくいっていますが、他のクライアントと公平に比較するには、非現実的な使用パターンを考案する必要があります (たとえば、すべてのセット操作で応答を待機するか、ロックを構築して、パケットの最適化を行わないようにする必要があります)。 )。
徹底的にテスト
私は、リリースごとにカバレッジ レポートを含むかなり厳密なテスト スイートを維持しています。
バグはまだ入り込んでいますが、通常はかなりマイナーなものであり、クライアントは改善を続けています。:)
十分に文書化されています
例のページでは簡単な紹介が提供されていますが、javadocでは非常に詳細に説明されています。
高レベルの抽象化を提供
機能的な CAS 抽象化だけでなく、キャッシュへの Map インターフェイスもあります。バイナリとテキストの両方が incr-with-default メカニズムをサポートしています (バイナリ プロトコルによって提供されますが、テキストではややこしくなります)。
仕様に追いつく
私はサーバー自体で多くの作業を行っているため、プロトコルの変更についていきます。
私は最初のバイナリ プロトコル サーバーの実装 (テスト サーバーと memcached 自体の両方) を行いました。
また、いくつかのハッシュ アルゴリズムとノード分散アルゴリズムもサポートしており、これらはすべてビルドごとに十分にテストされています。より良いパフォーマンスが必要な場合は、ストック ketama 一貫性のあるハッシュ、または FNV-1 (または Java のネイティブ文字列ハッシュ) を使用した派生物を実行できます。
これらがまだ有効な数値である場合、... http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html
memcached Java クライアントが最高のクライアントだと思います。
特徴
- バイナリ プロトコルのサポート。memcached サーバーに保存されているキー/値にアクセスする最速の方法。
- UDP プロトコルのサポート。tcp プロトコルでキーを設定し、udp プロトコルで取得できます。実際、一部の大企業はこのようなことを行っています。
- カスタマイズされたシリアライゼーションとデシリアライゼーションをサポートします。
- NIO とダイレクト バッファを備えた接続プール。接続プールが使用されていない場合、接続を動的に増やします。
パフォーマンス
- 既存の一般的な memcached Java クライアントのベンチマーク テストについては、パフォーマンスを参照してください。
- レスポンス受信時のデシリアライズ
- ソース コードの各行のパフォーマンス チューニング。
約 1 年前の時点で、memcached Java クライアントを使用する必要があったとき、spymemcached コネクタは、より多くの機能を備えた最適化された API であると説明されていました。それ以来、memcached クライアントの多くの新しいリリースがあったため、チェックする価値があるかもしれません。
FWIWスパイクライアントは私にとって完璧に機能しました。
私は SpyMemcached を使用してきましたが、多くの新しい改善点を備えた、利用可能な最高のものであることに同意する必要があります。
xmemcachedを試してみてください。これも nio ベースで、いくつかの強力な機能を備えています。
Java 用のmemcached クライアントとspymemcachedがあります。ただし、どちらもあまり経験がありません。