twemproxyの概要

1908 ワード

twemproxy、nutcrakerとも呼ばれます.Twitterオープンソースのredisとmemcacheエージェントサーバです.redisは効率的なキャッシュサーバとして、非常に応用価値があります.しかし、使用が多い場合は、何らかの方法で統一管理を行うことが望ましい.各アプリケーションの各クライアントが接続の分散性を管理することを回避します.同時にある程度制御できるようになります.pythonで実装されたredisスライスクライアントを知るために、多くのオープンソースエージェントプロジェクトを検索しました.Nodeで実装されたエージェント中間層には,各種Restfulのオープンソースエージェントもある.
  • RedBrige
  • C+epoll実装の小さなwebserver
  • redis自身がluaスクリプトを実行する機能は、redisコマンド
  • を実行する.
  • アクセス時にurlにluaスクリプトファイルの名前を付け、そのluaスクリプト
  • の実行を直接呼び出す.
  • 本質はhttpプロトコルによってluaスクリプト
  • をリモートで実行することである.
  • Webdis
  • libevent, http-parser...実装された小型ウェブサーバ
  • C言語で実装され、unix-socketを介してTCPはredisコマンドを呼び出す.
  • アクセス方法:/cmd/key/arg0,arg1,...は実質的にredisコマンドに対する単純な変換
  • である.
  • redis-proxy
  • nodeで書かれたredisエージェントレイヤを使用します.
  • は、マスタースレーブノードの失敗処理(詳細に検討可能)
  • をサポートする.
  • 試験後、性能は原生の1/3
  • であることが分かった.
  • twemproxy
  • 接続多重化、メモリ多重化.
  • は、複数の接続要求をreids pipeliningを構成してredisに統一的に要求する.
  • は状態監視ipとポートを設定することができ、ipとポートにアクセスしてjson形式の状態情報列
  • を得ることができる.
  • モニタ情報リフレッシュ間隔
  • を設定することができる.
  • は、複数のエージェント層を平行に配置することができる.クライアントは、利用可能な
  • を自動的に選択します.
  • 種以上のhashアルゴリズム(一部はまだ研究されていない)
  • は、バックエンドインスタンスの重み
  • を設定することができる.
  • redisとの長い接続
  • を保持する.
  • は、エージェントとバックグラウンドの各redisとの接続数
  • を設定することができる.
  • は、HashTagによって2つのKEYhashを同じインスタンスに設定することができる.
  • は、ノードを再接続する時間
  • を設定することができる.
  • は、何回接続するかを設定後、ノード
  • を削除することができる.
  • この方式はcacheメモリ
  • として好適である.
  • は失敗したノードの自動削除
  • をサポートする.
  • HashTag
  • の設定をサポート
  • redisへの直接接続数
  • を減少する.
  • 自動スライスバックエンドの複数のredisインスタンス上の
  • 単点問題を回避
  • redis pipelining request
  • をサポート
  • ステータスモニタ
  • をサポート
  • 高スループット
  • また、redisのソースコードを変更し、redisの前半を中間エージェント層として抽出することもできます.最終的にはlinux下のepollイベントメカニズムによって同時効率が向上し、nutcraker自体もepollを使用するイベントメカニズムである.また、パフォーマンステストでのパフォーマンスは非常に優れています.
    配置推奨の構成:コンパイル時にloggingモジュールを開きます.
    redis配置知識:AOF;redisデータを復元するためのredis書き込み操作を記録するファイル.