存档

2015年8月 的存档

MCRouter笔记(三) 路由句柄

2015年8月12日 没有评论

来自:https://github.com/facebook/mcrouter/wiki/List-of-Route-Handles

 

AllAsyncRoute

立即发送请求到所有子路由句柄,不等待子路由句柄返回,直接返回NullRoute给请求方。

属性:

  • children: 子路由句柄。

AllFastestRoute

立即发送请求到所有子路由句柄,把第一个无错误的响应返回给请求,其它的返回默认忽略。

属性:

  • children: 子路由句柄。

AllInitialRoute

立即发送请求到所有子路由句柄,等待子路由句柄列表中第一个句柄的返回,并把这个给请求方,其它的返回默认忽略。

属性:

  • children: 子路由句柄。

AllMajorityRoute

Immediately sends the same request to all child route handles. Waits for replies until a non-error result appears (half + 1) times (or all replies if that never happens), and then returns the latest reply that it sees (the effect is that typically the reply with the most common result is returned).

  • children: 子路由句柄。

AllSyncRoute

立即发送请求到所有子路由句柄,返回所有回复中最差的。

属性:

  • children: 子路由句柄。

DevNullRoute

Same as NullRoute, but with mcrouter stats reporting. See Stats list.

ErrorRoute

Immediately returns the error reply for each request. You can specify the error value to return: "ErrorRoute|MyErrorValueHere"

FailoverRoute

首先发送请求到子路由句柄列表中的第一个路由句柄,如果没有返回错误就立即返回请求,否则继续发到列表中的下一个路由句柄。如果所有都返回错误则返回最后一个错误的回复。注意:没命中不算错误。

  • children: 子路由句柄。
  • failover_errors:对象或数组,可选项,默认所有错误。

failover_errors可指定错误类型,如:

{
 "gets": [ "connect_timeout", "timeout", "connect_error", "tko" ],
 "updates": [], // empty array: will not failover.
 // "deletes" is missing, default behavior (all errors) will be assumed.
}
[ "connect_timeout", "timeout", "connect_error", "tko" ]

FailoverWithExptimeRoute

 

HashRoute

根据哈希路由。

  • children: 子路由句柄。
  • salt:key的前缀。
  • hash_func:哈希函数Ch3, Crc32 or WeightedCh3,默认为Ch3。
  • weights:hash_func为WeightedCh3时有效。

HostIdRoute

根据客户端ID路由。

  • children: 子路由句柄。

LatestRoute

随机连接,如果返回错误再次随机,最大随机次数为failover_count。

  • children: 子路由句柄。
  • failover_count:默认5次
  • failover_errors:错误类型。
分类: 缓存集群 标签:

MCRouter笔记(二) 常见应用

2015年8月7日 没有评论
  • 分片池

当数据量太大,单个memcached不够放时,通常会把数据拆分到多台机器上,这就是所谓的水平分割。mcrouter提供了一个行之有效的consistent hashing算法(furc_hash),算法允许给多个memcached实例分配哈希值。Hostname hashing再根据分配的哈希值为客户端选择一个独一无二的副本,在特定的应用中有很多其他的有用的散列方法。

分片池

分片池

 

配制说明:请求按hash key路由到池A中不同的memcached。

{
   "pools": {
     "A": {
       "servers": [
         // your destination memcached boxes here, e.g.:
         "127.0.0.1:12345",
         "[::1]:12346"
       ]
     }
   },
   "route": "PoolRoute|A"
 }

 

阅读全文…

分类: 缓存集群 标签:

MCRouter笔记(一) – 安装

2015年8月6日 2 条评论
#!/bin/bash

temp_path=$(dirname "$0")
cd $temp_path
real_path=$(pwd)
echo  "本脚本文件所在目录路径是: $real_path "
cd $real_path

yum -y install unzip bzip2-devel libtool libevent-devel libcap-devel openssl-devel
yum -y install bison flex snappy-devel numactl-devel cyrus-sasl-devel

mkdir -p /data/source/mcrouter/src

#GCC4.9 folly用到了诸如 chrono 之类的C++11库,必须使用GCC 4.8以上版本,才能够完整支持这些用到的C++11特性和标准库。
cd /data/source/mcrouter/src
wget https://gmplib.org/download/gmp/gmp-5.1.3.tar.bz2
tar jxf gmp-5.1.3.tar.bz2 && cd gmp-5.1.3/
./configure && make && make install

cd /data/source/mcrouter/src
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.2.tar.bz2
tar jxf mpfr-3.1.2.tar.bz2 ;cd mpfr-3.1.2/
./configure && make && make install

cd /data/source/mcrouter/src
wget http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz
tar xzf mpc-1.0.1.tar.gz ;cd mpc-1.0.1
./configure && make && make install

cd /data/source/mcrouter/src
wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.1/gcc-4.9.1.tar.bz2
tar jxf gcc-4.9.1.tar.bz2 ;cd gcc-4.9.1
ldconfig
./configure -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ -with-gmp -with-mpfr -with-mpc
make && make install
ldconfig


#CMAKE
cd /data/source/mcrouter/src
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
tar xvf cmake-2.8.12.2.tar.gz && cd cmake-2.8.12.2
./configure && make && make install


#AutoConf
cd /data/source/mcrouter/src
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar xvf autoconf-2.69.tar.gz && cd autoconf-2.69
./configure && make && make install


#SCONS
cd /data/source/mcrouter/src
rpm -Uvh http://sourceforge.net/projects/scons/files/scons/2.3.3/scons-2.3.3-1.noarch.rpm


#Ragel
cd /data/source/mcrouter/src
wget http://www.colm.net/files/ragel/ragel-6.9.tar.gz
tar -zxvf ragel-6.9.tar.gz
cd ragel-6.9
./configure && make && make install


#Python27 for Boost
yum -y install centos-release-SCL
yum -y install python27
scl enable python27 "easy_install pip"


#Boost
scl enable python27 bash
python --version
cd /data/source/mcrouter/src
wget http://downloads.sourceforge.net/boost/boost_1_56_0.tar.bz2
tar jxf boost_1_56_0.tar.bz2 && cd boost_1_56_0
./bootstrap.sh --prefix=/usr && ./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared
ldconfig


#Gflags
cd /data/source/mcrouter/src
wget https://github.com/schuhschuh/gflags/archive/v2.1.1.tar.gz
tar xzvf gflags-v2.1.1.tar.gz
mkdir -p gflags-2.1.1/build/ && cd gflags-2.1.1/build/
cmake .. -DBUILD_SHARED_LIBS:BOOL=ON -DGFLAGS_NAMESPACE:STRING=google && make && make install


#GLOG
cd /data/source/mcrouter/src
wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
tar xvf glog-0.3.3.tar.gz && cd glog-0.3.3
./configure && make && make install


#double-conversion for Folly
cd /data/source/mcrouter/src
git clone https://code.google.com/p/double-conversion/
cd double-conversion-master && scons install
ln -sf src double-conversion
ldconfig


#Folly
cd /data/source/mcrouter/src
git clone https://github.com/genx7up/folly.git
cd folly/folly/test
wget https://googletest.googlecode.com/files/gtest-1.6.0.zip
unzip gtest-1.6.0.zip
cd ../
autoreconf --install
export CPPFLAGS="-I/data/source/mcrouter/double-conversion"
./configure && make && make install


#McRouter
cd /data/source/mcrouter/src
git clone https://github.com/facebook/mcrouter.git
cd mcrouter/mcrouter
export CPPFLAGS="-I/data/source/mcrouter/double-conversion"
autoreconf --install
./configure && make && make install
mcrouter --help

 

分类: 缓存集群 标签: