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
Redis Twemproxy的更多相关文章
- redis+twemproxy实现redis集群
Redis+TwemProxy(nutcracker)集群方案部署记录 转自: http://www.cnblogs.com/kevingrace/p/5685401.html Twemproxy 又 ...
- Redis+TwemProxy(nutcracker)集群方案部署记录
Twemproxy 又称nutcracker ,是一个memcache.Redis协议的轻量级代理,一个用于sharding 的中间件.有了Twemproxy,客户端不直接访问Redis服务器,而是通 ...
- Redis+Twemproxy+HAProxy集群(转) 干货
原文地址:Redis+Twemproxy+HAProxy集群 干货 Redis主从模式 Redis数据库与传统数据库属于并行关系,也就是说传统的关系型数据库保存的是结构化数据,而Redis保存的是一 ...
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型 分布式缓存特性: 1) 高性能:当传统数据库面临大规模 ...
- Redis+Twemproxy分片存储实现
from unsplash 为提高Redis存储能力的提升,以及对外提供服务可用性提升,有时候有必要针对Redis进行集群式搭建,比较常用的有Twemproxy分片存储以及官方提供的Cluster方式 ...
- 基于twemproxy的redis集群部署
一.系统及软件版本 操作系统:CentOS Linux release 7.3.1611 (Core) 内核版本:3.10.0-514.el7.x86_64 redis版本:3.2.8 twempro ...
- redis该如何分区-译文(原创)
写在最前,最近一直在研究redis的使用,包括redis应用场景.性能优化.可行性.这是看到redis官网中一个链接,主要是讲解redis数据分区的,既然是官方推荐的,那我就翻译一下,与大家共享. P ...
- redis集群讨论
一.生产应用场景 二.存储架构演变 三.应用最佳实践 四.运维经验总结 第1.2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变.第3节:redis cluster的稳定性 ...
- redis客户端连接异常
本文参考:http://mdba.cn/2015/04/02/redistwemproxy-%e5%ae%a2%e6%88%b7%e7%ab%af%e8%bf%9e%e6%8e%a5%e5%bc%82 ...
随机推荐
- page、request、session和application有什么区别?
转自:http://liuyuru.iteye.com/blog/773367 1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的 ...
- 网络基础 港湾FlexHammer5010交换机镜像端口配置
港湾FlexHammer5010交换机镜像端口配置 by:授客 QQ:1033553122 1.登陆港湾交换机FlexHammer5010交换机 方法: telent 交换机ip 输入用户名 输入用户 ...
- gulp学习。
安装gulp 安装gulp之前必须先安装node.js,然后在命令行里输入 $ npm install gulp-cli -g (-g 表示全局安装)然后在输入$ gulp -v ,验证,安装完成后再 ...
- Cordova-conifg.xml配置
DisallowOverscroll 布尔值,默认false.如果不想要WebView出现橡皮筋滚动条,则设置为true TopActivityIndicator 字符串值,默认gray.设置顶部 ...
- Python基础一数据类型之数字类型
摘要: python基础一中提到了数据类型,这里主要讲解的是数字类型. 数字类型: 1,整型 2,长整型 3,浮点型 4,复数型 1,整型(int) 定义a = 1 通过type函数查看数据类型,整型 ...
- Oracle EBS OM 登记订单
DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...
- Oracle EBS INV创建保留
CREATE or REPPLACE PROCEDURE CreateReservation AS -- Common Declarations l_api_version NUMBER := 1.0 ...
- 单例模式实现 Volitile , interlocked
//单例模式: //1. 双检锁机制 Volatile.write() //2. 静态变量 //3. Interlocked.CompareExchange(ref single, temp, nul ...
- MySQL锁系列之锁的种类和概念
转自:http://keithlan.github.io/2017/06/05/innodb_locks_1/ 锁是MySQL里面最难理解的知识,但是又无处不在. 一开始接触锁的时候,感觉被各种锁类型 ...
- python-ldap修改AD域用户密码(CA+SSL)
代码连接:https://github.com/raykuan/ldap-notes 使用python的ldap模块连接AD服务器,有两种方式: 非加密:con = ldap.initialize(' ...