zoukankan      html  css  js  c++  java
  • Redis Twemproxy

    主从复制+哨兵解决了读性能和高可用问题,但没有解决写性能问题。

    Twemproxy将写请求分配到不同节点处理。

    Twemproxy是Twitter开源的一个redis和memcache代理服务器。

    允许用户将多个redis服务器添加到一个服务器池里面,并通过用户选择的散列函数和分布函数,将来自客户端的命令请求分发给服务器池中的各个服务器;

    通过使用twemproxy我们可以将数据库分片到多台redis服务器上面,并使用服务器来分担系统压力以及数据库容量,在服务器硬件条件相同的情况下,对于一个包含N台redis服务器的池来说,池中每台平均1/N的客户端接收命令请求;

    向池里添加更多的服务器可以线性的扩展系统处理命令请求的能力,以及系统能够保存的数据量;

    Twemproxy安装配置

    Twemproxy可以去github下载
    https://github.com/twitter/twemproxy
    $ tar xf twemproxy-0.4.0.tar.gz

    安装autoconf
    由于CentOS 6.x autoconf版本太低,不用yum安装,手动安装
    # tar xf autoconf-2.69.tar.gz
    # cd autoconf-2.69
    # ./configure --prefix=/usr
    # make && make install
    # autoconf -V #查看是否安装成功

    下载automake
    automake-1.15.tar.gz
    # ./configure --prefix=/usr
    # make && make install

    下载libtool
    libtool-2.4.5.tar.gz
    # ./configure --prefix=/usr
    # make && make install

    安装twemproxy
    # tar xf twemproxy-0.4.1.tar.gz
    # cd twemproxy-0.4.1
    # aclocal
    # autoconf
    # mkdir config
    # autoheader
    # libtoolize
    # automake -a

    # ./configure
    # make
    # make install

    安装完毕

    配置文件说明yaml
    proxy:
    listen: node1:22121
    hash: fnv1a_64
    distribution: ketama
    auto_eject_hosts: true
    redis: true
    server_retry_timeout: 20000
    hash_tag: "{}"
    server_failure_limit: 3
    servers:
    - node1:6379:1
    - node2:6379:1
    - node3:6379:1


    proxy,服务器池的名字,支持创建多个服务器池
    listen: node1:22121,这个服务器池的监听地址和端口号
    hash: fnv1a_64,键散列算法,用于将键映射为一个散列值
    distribution: ketama,键分布算法,决定键被分布到哪个服务器
    redis: true,代理redis命令请求,不给定时默认代理memcached请求
    servers,池中各个服务器的地址和端口号及权重
    auto_eject_hosts、
    server_failure_limit: twemproxy连续3次向同一个服务器发送命令请求都遇到错误时,twemproxy就会将该服务器标记为下线,并交由池中其他在线服务器处理


    启动redis服务
    3个节点手工启动
    # service redisd start

    启动twemproxy
    # nutcracker -d -c /opt/sxt/twemproxy/conf/nutcracker.sxt.yml

    连接
    # redis-cli -p 22121 -h node1

    测试
    SET date 2016,这个key落在node1上
    SET msg "hello world",这个key落在node2上
    SADD numbers 1 3 5 7 9
    RPUSH lst a b c d e

    Twemproxy散列标签
    set user:{001}:name lisi
    set user:{001}:age 5
    get user:{001}:name
    get user:{001}:age
    set 001 abc
    get 001
    set user:001:age 50

    Sentinel和Twemproxy整合

    redis-mgr

    官网说明:https://github.com/changyibiao/redis-mgr

    整合了:

    redis
    redis-sentinel
    twemproxy

    redis-twemproxy-agent

    官网说明:https://github.com/Stono/redis-twemproxy-agent

      https://jambr.co.uk/2013/09/20/redis-twemproxy-agent

  • 相关阅读:
    Go-闭包
    GO-数组与切片
    Go-包
    Go-for循环
    GO-逻辑判断(if,else if,else,switch)
    前后端分离的思考与实践(六)
    前后端分离的思考与实践(五)
    前后端分离的思考与实践(三)
    前后端分离的思考与实践(二)
    前后端分离的思考与实践(一)
  • 原文地址:https://www.cnblogs.com/one--way/p/5757834.html
Copyright © 2011-2022 走看看