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

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

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

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

搭建twemproxy,步骤如下

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

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

  1. This is nutcracker-0.4.
  2.  
  3. Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]
  4. [-c conf file] [-s stats port] [-a stats addr]
  5. [-i stats interval] [-p pid file] [-m mbuf size]
  6.  
  7. Options:
  8. -h, --help : this help
  9. -V, --version : show version and exit
  10. -t, --test-conf : test configuration for syntax errors and exit
  11. -d, --daemonize : run as a daemon
  12. -D, --describe-stats : print stats description and exit
  13. -v, --verbose=N : set logging level (default: , min: , max: )
  14. -o, --output=S : set logging file (default: stderr)
  15. -c, --conf-file=S : set configuration file (default: conf/nutcracker.yml)
  16. -s, --stats-port=N : set stats monitoring port (default: )
  17. -a, --stats-addr=S : set stats monitoring ip (default: 0.0.0.0)
  18. -i, --stats-interval=N : set stats aggregation interval in msec (default: msec)
  19. -p, --pid-file=S : set pid file (default: off)
  20. -m, --mbuf-size=N : set size of mbuf chunk in bytes (default: bytes)

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

  1. beta:
  2. listen: 127.0.0.1:
  3. hash: fnv1a_64
  4. hash_tag: "{}"
  5. distribution: ketama
  6. auto_eject_hosts: false
  7. timeout:
  8. redis: true
  9. servers:
  10. - 127.0.0.1:: server1
  11. - 127.0.0.1:: server2
  12. - 127.0.0.1:: server3
  13. - 127.0.0.1:: server4
  14. - 127.0.0.1:: server5
  15. - 127.0.0.1:: server6

执行如下命令启动twemproxy

  1. nutcracker -d -c conf/nutcracker.yml

我们测试下twemproxy是否可用

  1. ubuntu@ubuntu-virtual-machine:~/redis-3.0./src$ redis-cli -p -c
  2. 127.0.0.1:> set key value
  3. -> Redirected to slot [] located at 192.168.39.153:
  4. OK
  5. 192.168.39.153:> get key
  6. "value"

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

  1. ubuntu@ubuntu-virtual-machine:~/redis-3.0./src$ redis-benchmark -h 127.0.0.1 -p -c -t set -d -l
  2. SET
  3. 35790.98 requests per second
  4. redis后端的性能是
  5. SET
  6. 64935.07 requests per second

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

redis(二十三):Redis 集群(proxy 型)二的更多相关文章

  1. Redis集群管理(二)

    1.进入集群客户端 任意选一个redis节点,进入redis 所在目录 cd /redis 所在目录/src/ ./redis-cli -h 本地节点的ip -p redis的端口号 -a 密码 [r ...

  2. redis + 主从 + 持久化 + 分片 + 集群 + spring集成

    Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...

  3. 转:Redis 3.2.1集群搭建

    Redis 3.2.1集群搭建   一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2) ...

  4. Centos7下安装redis实战(单机版以及集群)

    一.背景 因项目需要,要引入redis做缓存,就在centos7下亲自安装了一遍redis,刚好趁着这个机会就来把redis的概念以及单机版和集群版redis安装步骤记录下来,在此和大家一起分享. 二 ...

  5. Redis 3.2.4集群实战

    一.Redis Cluster集群设计Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis3.0之后版本支持Redis-Cluster集群,Redis-Cluster采用无中心 ...

  6. redis 单机模拟 cluster集群

    一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心 ...

  7. Redis 5.0.5集群搭建

    Redis 5.0.5集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):s ...

  8. 项目实战11—企业级nosql数据库应用与实战-redis的主从和集群

    企业级nosql数据库应用与实战-redis 环境背景:随着互联网2.0时代的发展,越来越多的公司更加注重用户体验和互动,这些公司的平台上会出现越来越多方便用户操作和选择的新功能,如优惠券发放.抢红包 ...

  9. redis客户端可以连接集群,但JedisCluster连接redis集群一直报Could not get a resource from the pool

    一,问题描述: (如题目)通过jedis连接redis单机成功,使用JedisCluster连接redis集群一直报Could not get a resource from the pool 但是使 ...

  10. Redis主从哨兵和集群搭建

    主从配置 哨兵配置 集群配置 1.主从: 国王和丞相,国王权力大(读写),丞相权利小(读) 2.哨兵: 国王和王子,国王死了(主服务挂掉),王子继位(从服务变主服务) 3.集群: 国王和国王,一个国王 ...

随机推荐

  1. Laravel中Homestead添加多站点时遇到问题

    Homestead做Laravel的开发还是很方便的,但是在添加多站点的时候,发现几个坑,来做个记录. 首先,官方文档给了修改homestead.yaml文件的方式,只需要在sites字节下添加一个新 ...

  2. 曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好

    文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...

  3. cb15a_c++_vector容器的自增长_每次增加百分之50

    cb15a_c++_vector容器的自增长_每次增加百分之50每次自动容量代销扩充,增加百分之50_for windows C++,vector是用数组做出来的->数组的缺点和优点优点:具有下 ...

  4. IDEA+Maven+Tomcat构建Web项目的三种方法

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 本文将介绍三种方 ...

  5. Java中设置多个Access-Control-Allow-Origin跨域访问

    1.如果服务端是Java开发的,添加如下设置允许跨域即可,但是这样做是允许所有域名都可以访问,不够安全. response.setHeader("Access-Control-Allow-O ...

  6. Java WebService学习笔记 - Axis(一)

    WebService 简介 实际开发中,很多系统都是基于历史遗留系统进行开发,有时,这些系统基于不同的语言,如C,C++,C#,java,PHP等等.为了实现历史系统的再利用,或向外部程序暴露调用接口 ...

  7. TCP端口扫描类型-隐蔽扫描和僵尸扫描

    TCP扫描有三种类型:全连接扫描,隐蔽扫描,僵尸扫描.全连接扫描无须赘述. 隐蔽扫描:发送完SYN数据包以及收到SYN/ACK数据包后不再发送SCK数据包,由于没有建立完整的TCP连接,所以在目标主机 ...

  8. liunx中组合查询的命令

    今天无聊,把以前的liunx命令拿过练练,尤其是一些组合命令并带有逻辑的.这里的script是一个文件夹. 1.查看一个文件的最后3行的第一行. [root@localhost home]# tail ...

  9. Flask03-Form

    ## Web 表单 配置 为了能够处理 web 表单,我们将使用 Flask-WTF ,该扩展封装了 WTForms 并且恰当地集成进 Flask 中. 许多 Flask 扩展需要大量的配置,因此我们 ...

  10. ssh -i 密钥文件无法登陆问题

    一.用ssh 带密钥文件登录时候,发生以下报错 [root@99cloud1 ~]# ssh -i hz-keypair-demo.pem centos@172.16.17.104The authen ...