Twemproxy–TwitterオープンソースのRedis proxy
2540 ワード
昨年のQCon London 2012大会では、Twitterが「Timelines@Twitter」と題した講演を発表し、Redisをtimelineの主なストレージとして言及した.現在、世界でTwitterがRedisの最大ユーザー(または新浪微博?)である可能性があることを目測している.
今日お話しするTwemproxyは、TwitterのオープンソースであるRedisとMemcachedエージェントです.
機能の紹介
Memcachedも現在のRedisも、それ自体が分散クラスタ特性を備えていないことを知っています.RedisやMemcachedが大量にある場合、クラスタストレージの特性は、通常、クライアントのデータ割り当てアルゴリズム(コンシステンシハッシュなど)によってのみ実現されます.
一方、Twemproxyは、エージェント層を導入することによって、バックエンドの複数のRedisまたはMemcachedインスタンスを統一的に管理および割り当てることができ、アプリケーションがTwemproxy上で操作するだけで、後で実際のRedisまたはMemcachedストレージがどれだけあるかにかかわらず、統一的に管理および割り当てることができます.
RedisのClusterスキームが正式にリリースされる前に、Proxy方式でストレージクラスタを実現することが最善の選択かもしれません.ましてやTwemproxyはTwitter自身で十分検証された製品です.
パフォーマンス
Redis著者らの試験結果によれば,Twemproxyの性能はほとんどの場合かなり良く,Redisを直接操作した場合と比較して,最大20%の性能損失しかなかった.これはそれがもたらすメリットにとって本当に些細なことです.唯一改善すべきことは、そのMGET動作の効率であり、その性能はRedisの50%のみを直接操作することである.
インストールと構成
Twemproxyのインストールはちょっと面倒ですが、主なコマンドは以下の通りです.
上のコマンドでインストールしても、具体的な構成になります.次は典型的な構成です.
複数のTwemproxyインスタンスを同時に開くことができ、それらはすべて読み書きすることができ、このようにあなたのアプリケーションはいわゆる単一の障害を完全に回避することができます.
問題と不足
Twemproxyはその自身の原理の制限のため、いくつかの不足点があります.は、setsのサブ交差等(MGETとDELを除く) のような複数の値に対する動作をサポートする. Redisのトランザクション操作はサポートされていません エラーメッセージがまだ不十分です その他
Twemproxyの詳細はこちらをご覧ください.http://antirez.com/news/44
Twemproxyのプロジェクトアドレス:https://github.com/twitter/twemproxy
今日お話しするTwemproxyは、TwitterのオープンソースであるRedisとMemcachedエージェントです.
機能の紹介
Memcachedも現在のRedisも、それ自体が分散クラスタ特性を備えていないことを知っています.RedisやMemcachedが大量にある場合、クラスタストレージの特性は、通常、クライアントのデータ割り当てアルゴリズム(コンシステンシハッシュなど)によってのみ実現されます.
一方、Twemproxyは、エージェント層を導入することによって、バックエンドの複数のRedisまたはMemcachedインスタンスを統一的に管理および割り当てることができ、アプリケーションがTwemproxy上で操作するだけで、後で実際のRedisまたはMemcachedストレージがどれだけあるかにかかわらず、統一的に管理および割り当てることができます.
RedisのClusterスキームが正式にリリースされる前に、Proxy方式でストレージクラスタを実現することが最善の選択かもしれません.ましてやTwemproxyはTwitter自身で十分検証された製品です.
パフォーマンス
Redis著者らの試験結果によれば,Twemproxyの性能はほとんどの場合かなり良く,Redisを直接操作した場合と比較して,最大20%の性能損失しかなかった.これはそれがもたらすメリットにとって本当に些細なことです.唯一改善すべきことは、そのMGET動作の効率であり、その性能はRedisの50%のみを直接操作することである.
インストールと構成
Twemproxyのインストールはちょっと面倒ですが、主なコマンドは以下の通りです.
apt-get install automake
apt-get install libtool
git clone git://github.com/twitter/twemproxy.git
cd twemproxy
autoreconf -fvi
./configure --enable-debug=log
make
src/nutcracker -h
上のコマンドでインストールしても、具体的な構成になります.次は典型的な構成です.
redis1:
listen: 0.0.0.0:9999 # Twemproxy
redis: true # Redis proxy
hash: fnv1a_64 # hash
distribution: ketama # hash
auto_eject_hosts: true #
timeout: 400 # ( )
server_retry_timeout: 2000 # ( )
server_failure_limit: 1 #
servers: # Redis (IP: : )
- 127.0.0.1:6379:1
- 127.0.0.1:6380:1
- 127.0.0.1:6381:1
- 127.0.0.1:6382:1
redis2:
listen: 0.0.0.0:10000
redis: true
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: false
timeout: 400
servers:
- 127.0.0.1:6379:1
- 127.0.0.1:6380:1
- 127.0.0.1:6381:1
- 127.0.0.1:6382:1
複数のTwemproxyインスタンスを同時に開くことができ、それらはすべて読み書きすることができ、このようにあなたのアプリケーションはいわゆる単一の障害を完全に回避することができます.
問題と不足
Twemproxyはその自身の原理の制限のため、いくつかの不足点があります.
Twemproxyの詳細はこちらをご覧ください.http://antirez.com/news/44
Twemproxyのプロジェクトアドレス:https://github.com/twitter/twemproxy