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のインストールはちょっと面倒ですが、主なコマンドは以下の通りです.
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はその自身の原理の制限のため、いくつかの不足点があります.
  • は、setsのサブ交差等(MGETとDELを除く)
  • のような複数の値に対する動作をサポートする.
  • Redisのトランザクション操作はサポートされていません
  • エラーメッセージがまだ不十分です
  • その他
    Twemproxyの詳細はこちらをご覧ください.http://antirez.com/news/44
    Twemproxyのプロジェクトアドレス:https://github.com/twitter/twemproxy