文档章节

twemproxy 简介

一介码夫_Hum
 一介码夫_Hum
发布于 2015/04/24 19:54
字数 687
阅读 50
收藏 1
点赞 0
评论 0

twemproxy,也叫nutcraker。是twtter开源的一个redis和memcache代理服务器。 redis作为一个高效的缓存服务器,非常具有应用价值。但是当使用比较多的时候,就希望可以通过某种方式 进行统一管理。避免每个应用每个客户端管理连接的松散性。同时在一定程度上变得可以控制。 搜索了不少的开源代理项目,知乎用python实现的redis分片客户端。用node实现的代理中间层,还有各种Restful的开源代理。

  • RedBrige

    • C + epoll实现的一个小的webserver

    • redis自身执行lua脚本的功能来执行redis命令

    • 访问时在url中带上lua脚本文件的名字,直接调用执行该lua脚本

    • 本质是通过http协议远程执行lua脚本

  • Webdis

    • libevent, http-parser...实现的小型web服务器

    • C 语言实现,通过unix-socket,TCP调用redis命令。

    • 访问方法: /cmd/key/arg0,arg1,... 实质是对redis命令的简单变换

  • redis-proxy

    • 使用node写的redis代理层。

    • 支持主从节点的失败处理(可以仔细研究)

    • 测试后发现性能为原生的1/3

  • twemproxy

    • 连接复用,内存复用。

    • 将多个连接请求,组成reids pipelining统一向redis请求。

    • 可设置状态监控ip和端口,访问ip和端口可以得到一个json格式的状态信息串

    • 可设置监控信息刷新间隔时间

    • 可以平行部署多个代理层.client自动选择可用的一个

    • 多种hash算法(部分还没有研究明白)

    • 可以设置后端实例的权重

    • 保持与redis的长连接

    • 可设置代理与后台每个redis连接的数目

    • 通过HashTag可以自己设定将两个KEYhash到同一个实例上去。

    • 可以设置重新连接该节点的时间

    • 可以设置连接多少次之后删除该节点

    • 该方式适合作为cache存储

    • 支持失败节点自动删除

    • 支持设置HashTag

    • 减少与redis的直接连接数

    • 自动分片到后端多个redis实例上

    • 避免单点问题

    • 支持redis pipelining request

    • 支持状态监控

    • 高吞吐量

    另外可以修改redis的源代码,抽取出redis中的前半部分,作为一个中间代理层。最终都是通过linux下的epoll 事件机制提高并发效率,其中nutcraker本身也是使用epoll的事件机制。并且在性能测试上的表现非常出色。

    配置部署建议: 编译时候打开logging模块。

    redis部署知识: AOF;一种记录redis写操作的文件,用于恢复redis数据。


    本文转载自:http://cloudaice.com/twemproxy-explore/

    共有 人打赏支持
    一介码夫_Hum
    粉丝 25
    博文 89
    码字总数 29813
    作品 0
    海淀
    其他
    twemproxy + redis + sentinel 实现redis集群高可用

    本文主要描述使用 twemproxy + redis + sentinel + 脚本 实现redis集群的高可用,篇幅有点长(实战配置文件/命令) 先贴个本文主要标题列表哈 redis简介 sentinel 功能 twemproxy特性 twempr...

    dchuang ⋅ 2016/04/27 ⋅ 0

    比MySQL快60倍 redis从入门到精通视频教程

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 学习视频下载地址:https://pan.baidu.com/s/17NO3pG9hRL-RtU0bwa...

    自学号 ⋅ 06/02 ⋅ 0

    Redis+Twemproxy做代理部署集群

    redis集群部署过程略。。。 部署Twemproxy 1. yum install autoconf automake libtool -y 2. wget https://github.com/twitter/twemproxy/archive/master.zip 3. unzip master.zip 4.cd twem......

    小白的希望 ⋅ 06/07 ⋅ 0

    使用 Twemproxy 来做 SSDB 负载均衡

    Twemproxy 是由 Twitter 公司开发的一个支持 Redis 协议的代理服务器, 可用于 Redis 集群的负载均衡, 高可用性等. SSDB 数据库也支持 Redis 协议, 所以可以直接使用 Twemproxy 而不需要做任何...

    ideawu ⋅ 2014/07/29 ⋅ 0

    为什么Codis比较慢,但我们还要用它呢?

    为什么 Codis 比 twemproxy 慢? Codis 追求简洁的实现,我们没有针对内存进行优化,所以会比 twemproxy 还要多一倍拷贝。 Go 虽然使用 epoll,但是 IO 都不是直接完成的,而是通过 IO threa...

    抚琴煮酒 ⋅ 2017/02/24 ⋅ 0

    架构设计:系统存储(18)——Redis集群方案:高性能

    1、概述 通过上一篇文章(《架构设计:系统存储(17)——Redis集群方案:高可用》)的内容,Redis主从复制的基本功能和进行Redis高可用集群监控的Sentinel基本功能基本呈现给了读者。虽然本...

    yinwenjie ⋅ 2016/12/31 ⋅ 0

    redis分片存储集群的搭建

    环境说明: twemproxy安装: [root@localhost src]# tar -zxf nutcracker-0.4.0.tar.gz [root@localhost src]# cd nutcracker-0.4.0[root@localhost nutcracker-0.4.0]# ./configure --prefi......

    yacai1990 ⋅ 2016/07/11 ⋅ 0

    Redis学习笔记(11)——Redis缓存集群方案

    由于单台Redis服务器的内存管理能力有限,使用过大内存的Redis又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业务,而Redis 3.0 beta1支持的集群功能还不适合生产环境的...

    IT特种兵 ⋅ 2015/03/02 ⋅ 0

    Redis ​集群迁移工具--Redis-Migrate-Tool

    Redis 集群迁移工具,基于redis复制,快速,稳定。 github链接:https://github.com/vipshop/redis-migrate-tool 特点: 快速。 多线程。 基于redis复制。 实时迁移。 迁移过程中,源集群不影...

    d_e_e_p_ ⋅ 2016/04/06 ⋅ 3

    Redis集群技术及Codis实践

    “高效运维最佳实践”是InfoQ在2015年推出的精品专栏,由触控科技运维总监萧田国撰写,InfoQ总编辑崔康策划。 前言 如开篇文章所言,高效运维包括管理的专业化和技术的专业化。前两篇我们主要...

    mac_zhao ⋅ 2015/06/16 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    JPA入门,配置文件的设置

    <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http......

    码农屌丝 ⋅ 8分钟前 ⋅ 0

    Java基础——面向对象和构造器

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 静态成员介绍 为什么要有静态成员?静态成员用来...

    凯哥学堂 ⋅ 9分钟前 ⋅ 0

    vmware中Centos 7 linux的LVM磁盘扩容

    系统是RHEL7(centos7差不多一样) 关闭系统,在vmware、设置、硬盘、扩展、输入数字大于当前系统内存、点击扩展。 开机再查看磁盘信息 fdisk -l 注意:可以看出sda磁盘增加了,但是根目录还...

    gugudu ⋅ 20分钟前 ⋅ 0

    JAVA线程sleep和wait方法区别

    昨天面试,突然被问到sleep 和 wait的区别,一下子有点蒙,在这里记一下,以示警戒。 首先说sleep,sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过去后,cpu...

    徐玉强 ⋅ 22分钟前 ⋅ 0

    vuex学习--模块

    随着项目复杂性增加,共享状态也越来越多。需要对转态操作进行分组,分组后在进行分组编写。学习一下module:状态管理器的模块组操作。 首先是声明: const moduleA={ state,mutations,g...

    大美琴 ⋅ 24分钟前 ⋅ 0

    Selenium 简单入门

    安装 pip install selenium 驱动下载 https://chromedriver.storage.googleapis.com/index.html 下载最新的驱动,放入path中,可以放入Python的scripts目录下,也可以放入Chrome安装目录,并...

    阿豪boy ⋅ 25分钟前 ⋅ 0

    292. Nim Game - LeetCode

    Question 292. Nim Game Solution 思路:试着列举一下,就能发现一个n只要不是4的倍数,就能赢。 n 是否能赢1 true2 true3 true4 false 不论删除几,对方都能一把赢5 t...

    yysue ⋅ 56分钟前 ⋅ 0

    6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

    zip压缩工具 zip命令可以压缩目录和文件,-r 压缩目录。 zip使用方法 zip 1.txt.zip 1.txt //压缩文件 zip -r 123.zip 123/ //压缩目录 unzip 1.txt.zip //解压 unzip 123.zip -d /root/456...

    Linux_老吴 ⋅ 今天 ⋅ 0

    react-loadable使用跳坑

    官方给react-loadable的定义是: A higher order component for loading components with dynamic imports. 动态路由示例 withLoadable.js import React from 'react'import Loadable fro......

    pengqinmm ⋅ 今天 ⋅ 0

    记录工作中遇到的坑

    1、ios safari浏览器向下滚动会触发window resize事件

    端木遗风 ⋅ 今天 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    返回顶部
    顶部