• redis(二十三):Redis 集群(proxy 型)二


    redis的确是一个非常高效的缓存服务器,但是单台redis服务器的内存管理能力有限,如果一味的加大内存的话会导致redis服务器的性能下降,所以就必须要搭建redis集群来提供服务。在redis官方在3.0.0版本给出集群方案之前,大部分的企业都使用twemproxy组件来进行redis集群的搭建。

          twemproxy 通过引入一个代理层,可以将其后端的多台redis进行统一管理与分配,使应用程序只需要在twemproxy 上进行操作,而不用关心后面具体有多少个真实的redis服务器。 

    接下来我们来搭建一个twemproxy代理的redis,感受一把redis + twemproxy的魅力。

    我们首先搭建起来6个节点的redis集群,

    搭建twemproxy,步骤如下

    复制代码

    #编译twemproxy需要用到automake和libtool两个编译工具包
    sudo apt-get install automake 
    sudo apt-get install libtool 
    git clone https://github.com/twitter/twemproxy.git
    cd twemproxy
    autoreconf -fvi 
    ./configure --enable-debug=log 
    make

    复制代码

    这样,我们就安装成功了,如果我们输入nutcracker -h会有如下的打印结果,就说明我们安装twemproxy成功。

    复制代码

    This is nutcracker-0.4.1
     
    Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]
                      [-c conf file] [-s stats port] [-a stats addr]
                      [-i stats interval] [-p pid file] [-m mbuf size]
     
    Options:
      -h, --help             : this help
      -V, --version          : show version and exit
      -t, --test-conf        : test configuration for syntax errors and exit
      -d, --daemonize        : run as a daemon
      -D, --describe-stats   : print stats description and exit
      -v, --verbose=N        : set logging level (default: 5, min: 0, max: 11)
      -o, --output=S         : set logging file (default: stderr)
      -c, --conf-file=S      : set configuration file (default: conf/nutcracker.yml)
      -s, --stats-port=N     : set stats monitoring port (default: 22222)
      -a, --stats-addr=S     : set stats monitoring ip (default: 0.0.0.0)
      -i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec)
      -p, --pid-file=S       : set pid file (default: off)
      -m, --mbuf-size=N      : set size of mbuf chunk in bytes (default: 16384 bytes)

    复制代码

    然后我修改配置文件,启动twemproxy作为redis的代理。在conf/nutcracker.yml有配置文件的模板,我们照着修改下就可以了,修改后的配置文件如下

    复制代码

    beta:                                                                                                                                                        
       listen: 127.0.0.1:22122                                                                                                                                    
       hash: fnv1a_64                                                                                                                                             
       hash_tag: "{}"                                                                                                                                             
       distribution: ketama                                                                                                                                       
       auto_eject_hosts: false                                                                                                                                    
       timeout: 400                                                                                                                                               
       redis: true                                                                                                                                                
       servers:                                                                                                                                                   
        - 127.0.0.1:7000:1 server1                                                                                                                                
        - 127.0.0.1:7001:1 server2                                                                                                                                
        - 127.0.0.1:7002:1 server3                                                                                                                                
        - 127.0.0.1:7003:1 server4                                                                                                                                
        - 127.0.0.1:7004:1 server5                                                                                                                                
        - 127.0.0.1:7005:1 server6

    复制代码

    执行如下命令启动twemproxy

    nutcracker -d -c conf/nutcracker.yml

    我们测试下twemproxy是否可用

    ubuntu@ubuntu-virtual-machine:~/redis-3.0.0/src$ redis-cli -p 22122 -c
    127.0.0.1:22122> set key value
    -> Redirected to slot [12539] located at 192.168.39.153:7005
    OK
    192.168.39.153:7005> get key
    "value"

    然后进行twemproxy和redis后端的benchmark对比

    复制代码

    ubuntu@ubuntu-virtual-machine:~/redis-3.0.0/src$ redis-benchmark -h 127.0.0.1 -p 22122 -c 100 -t set -d 100 -l
    SET 
    35790.98 requests per second
    而redis后端的性能是
    SET
    64935.07 requests per second

    复制代码

    说明twemproxy的代理使得redis性能有所损失,但是为了使redis能够支持集群,损失一点性能还是可以接受的。

  • 相关阅读:
    把Discuz!NT放在虚拟目录下
    表格样式
    页面CSS的问题,不懂中
    临时存储信息
    asp.net2.0事务
    repeater控件分成两列显示
    P2P的NAT研究
    javascript字符串trim的实现
    新浪微博OAUTH2验证
    新浪微博接口在safri下的bug
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13308884.html
Copyright © 2020-2023  润新知