Twemproxy

Twemproxy增加或剔除Redis节点后对数据有何影响

試著忘記壹切 提交于 2019-12-13 22:02:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本篇文章,Twemproxy增加或剔除Redis节点后对数据的影响是接着”通过Twemproxy代理Redis数据分片方案“这篇文章写的。最好还要懂一致性哈希(ketama)的原理。 上一篇文章中,我们配置了一个twemproxy节点,后面跟着两个Redis节点做的简单测试。下面我们模拟在Redis运行过程中新增一个节点,看一看会丢失Key的比例是多少。至于为什么会丢失Key呢?最简单的理解就是“取模运算”,原先twemproxy是对两个Redis节点对Key做哈希后存储,同样读取数据的时候也是使用同样的算法,同样的节点数做运算,所以可以正确拿到每个Key的值。那么现在新增一个节点后,就成了3个节点对Key做哈希运算了,那么会发生什么情况呢?原先存的Key是对2取模,但是新增一个节点后去取Key时变成了对3取模。那么结果肯定是一大批Key无法找到。当然,上面说的只是很久之前使用的方法,twemproxy使用的是一致性哈希,还是那句话,对于一致性哈希在memcached部分有较为详细的介绍了,有兴趣可以看看。 下面我们就实验看看twemproxy增加或剔除节点后对数据的影响范围比例是多少。twemproxy和redis上一章节就配置好了。 [root@www ~]# ps aux | grep nut root

(大致了解下)从单机到2000万QPS: 知乎Redis平台发展与演进之路

旧巷老猫 提交于 2019-12-13 22:02:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 导读:知乎存储平台团队基于开源Redis 组件打造的 知乎 Redis 平台 ,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能。本文作者是是该系统的负责人,文章深入介绍了该系统的方方面面,作为后端程序员值得仔细研究。 作者简介: 陈鹏,现知乎存储平台组 Redis 平台技术负责人,2014 年加入知乎技术平台组从事基础架构相关系统的开发与运维,从无到有建立了知乎 Redis 平台,承载了知乎高速增长的业务流量。 背景 知乎作为知名中文知识内容平台,每日处理的访问量巨大,如何更好的承载这样巨大的访问量,同时提供稳定低时延的服务保证,是知乎技术平台同学需要面对的一大挑战。 知乎存储平台团队基于开源Redis 组件打造的 Redis 平台管理系统,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供一键部署集群,一键自动扩缩容, Redis 超细粒度监控,旁路流量分析等辅助功能。 目前,Redis 在知乎规模如下: ● 机器内存总量约70TB,实际使用内存约40TB; ● 平均每秒处理约1500万次请求,峰值每秒约2000万次请求; ● 每天处理约1万亿余次请求; ● 单集群每秒处理最高每秒约400万次请求; ● 集群实例与单机实例总共约800个; ●

redis 的数据类型

拜拜、爱过 提交于 2019-12-11 13:16:47
redis支持丰富的数据类型,从最基础的string到复杂的常用到的数据结构都有支持: string:最基本的数据类型,二进制安全的字符串,最大512M。 list:按照添加顺序保持顺序的字符串列表。 set:无序的字符串集合,不存在重复的元素。 sorted set:已排序的字符串集合。 hash:key-value对的一种集合。 bitmap:更细化的一种操作,以bit为单位。 hyperloglog:基于概率的数据结构。 2、集群(Cluster) 单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上。但是内存资源怎么办,主从模式做到的只是相同数据的备份,并不能横向扩充内存;单台机器的内存也只能进行加大处理,但是总有上限的。所以我们就需要一种解决方案,可以让我们横向扩展。最终的目的既是把每台服务器只负责其中的一部分,让这些所有的服务器构成一个整体,对外界的消费者而言,这一组分布式的服务器就像是一个集中式的服务器一样(之前在解读REST的博客中解释过分布式于基于网络的差异:基于网络应用的架构)。 在Redis官方的分布式方案出来之前,有twemproxy和codis两种方案,这两个方案总体上来说都是依赖proxy来进行分布式的,也就是说redis本身并不关心分布式的事情

Redis面试题详解:哨兵+复制+事务+集群+持久化等

﹥>﹥吖頭↗ 提交于 2019-12-10 22:15:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Redis主要有哪些功能? 1.哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能,Replication则是负责让一个Redis服务器可以配备多个备份的服务器。 Redis也是利用这两个功能来保证Redis的高可用的 2.事务 很多情况下我们需要一次执行不止一个命令,而且需要其同时成功或者失败。redis对事务的支持也是源自于这部分需求,即支持一次性按顺序执行多个命令的能力,并保证其原子性。 3.LUA脚本 在事务的基础上,如果我们需要在服务端一次性的执行更复杂的操作(包含一些逻辑判断),则lua就可以排上用场了 4.持久化 redis的持久化指的是redis会把内存的中的数据写入到硬盘中,在redis重新启动的时候加载这些数据,从而最大限度的降低缓存丢失带来的影响。 5.集群(Cluster) 单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上,这也有点类似mysql数据库的主从同步。 在Redis官方的分布式方案出来之前

案例:Redis在唯品会的大规模应用

谁说胖子不能爱 提交于 2019-12-09 14:06:19
导读 目前在唯品会主要负责redis/hbase的运维和开发支持工作,也参与工具开发工作,本文是在Redis中国用户组给大家分享redis cluster的生产实践。 分享大纲 本次分享内容如下: 1、生产应用场景 2、存储架构演变 3、应用最佳实践 4、运维经验总结 关于这4部分的内容介绍: 第1、2部分:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变。 第3部分:redis cluster的稳定性,应用成熟度,踩到过那些坑,如何解决这些问题?这部分是大家比较关系的内容。 第4部分:简单介绍大规模运营的一些经验,包括部署、监控、管理以及redis工具开发。 生产应用场景 业务范围 redis cluster在唯品会主要应用于后端业务,用作内存存储服务。主要大数据实时推荐/ETL、风控、营销三大业使用。 cluster用于取代当前twemproxy三层架构,作为通用的存储架构。redis cluster可以大幅度简化我们的存储架构,也解决twemproxy架构无法在线扩容节点的问题。 目前我们在线有生产几十个cluster集群,约2千个instances,单个集群最大达到250+instances。 这是我们的生产应用场景,主要是后端业务的存储,目前没有作为cache使用的场景。 大数据、风控、营销系统的特征 cluster 一般数据量大,

redis初识与一般见解——性能

不羁的心 提交于 2019-12-09 11:50:34
什么是redis? Redis是一种可基于内存亦可持久化的日志型、Key-Value数据库,支持的存储类型非常丰富,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。(具体介绍请参照百度百科) 为什么快?  纯ANSI C编写。  所有数据均存放在内存中,当然不包括持久化。  不依赖第三方类库,没有像memcached那样使用libevent。  Redis多样的数据结构,每种结构只做自己爱做的事,当然比数据库只有Table,MongogoDB只有JSON一种结构快了。 Redis支持的功能:  所有数据都在内存中。  五种数据结构:String / Hash / List / Set / Ordered Set。  数据过期时间支持。  不完全的事务支持。  服务端脚本:使用Lua Script编写,作用类似存储过程。  PubSub:捞过界的消息一对多发布订阅功能,起码Redis-Sentinel在使用它。  持久化:支持定期导出内存的RDB与 记录写操作日志的Append Only File两种模式。  Replication:Master-Slave模式,Master可连接多个只读Slave。  Fail-Over:Redis

Twemproxy和Redis性能压力测试

前提是你 提交于 2019-12-07 01:35:54
性能测试 Redis自带了一个叫 redis-benchmark的工具来模拟N个客户端同时发出M个请求,(类似于Apache ab程序),你可以使用redis-benchmark -h来查看基准参数。 Usage: redis-benchmark [-h ] [-p ] [-c ] [-n [-k ] -h #指定服务器名称(default 127.0.0.1); -p #指定服务器端口(default 6379); -s #指定服务器Socket(overrides host and port); -a #指定Redis密码; -c #指定并行客户端数量 (default 50); -n #指定总的请求数量(default 100000); -d #指定SET/GET一次数据大小 (default 2 Bytes); -dbnum #选择指定的数据库(default 0); -k #保持一个连接,一台服务器来处理这些请求 (default 1); -r #设置随机Key; -P #Pipeline requests. Default 1 (no pipeline). -q #显示每秒钟能处理多少请求数结果; --csv #输出为CSV格式; -l #Loop. Run the tests forever. -I #Idle mode. Just open N idle

基于nutcracker的redis集群实现 阿里云

痞子三分冷 提交于 2019-12-06 12:26:41
坑还是比较多的吧 安全组必不可少开启 22121 22122 22123 22124 22222 aliyun 搭建redis集群https://my.oschina.net/u/3647713/blog/1982995 安装autoconf cd /usr/local wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz tar zxvf autoconf-2.69.tar.gz cd autoconf-2.69 ./configure --prefix=/usr/local make && make install twemproxy cd /usr/local wget https://github.com/twitter/twemproxy/archive/master.zip unzip master.zip -d /usr/local/ cd /usr/local mv twemproxy-master twemproxy cd twemproxy CFLAGS="-ggdb3 -O0" autoreconf -fvi ./configure --prefix=/usr/local/twemproxy make && make install 修改配置文件 /usr/local/twemproxy/conf

释放技术的想象:解码腾讯云软件架构与应用

别说谁变了你拦得住时间么 提交于 2019-12-06 03:37:09
欢迎大家前往 腾讯云社区 ,获取更多腾讯海量技术实践干货哦~ 关于腾讯 你可能玩过“王者荣耀” 你可能用过“微信”和它的“小程序” 你可能看过“腾讯视频”并且曾为之付费 你可能已经是多年的“QQ”老手但还不知道什么是“MQ” …… 作为成立多年的老牌互联网公司与社交巨头 腾讯有太多的产品渗透到我们生活的方方面面 这些产品的诞生和应用均离不开其云上架构与算法的支撑 19 周岁之际 腾讯为身为开发者的你准备了一场丰富技术盛宴 来自腾讯云与知乎的六位技术专家 围绕 SCF、云端容器化、X-P2P 直播加速、微信小程序等精彩内容 为你 360°全景解读腾讯云的软件架构与应用 分享内容与讲师介绍 演讲议题:如何快速打造基于实时音视频能力的爆款 APP 分享嘉宾: 黄斌,腾讯云视频业务产品总监。超过十年的新媒体、电信、互联网、云计算等行业工作经历,先后供职于 SONY、UTSTARCOM、ChinaCache 等技术服务公司。 议题介绍: 无论是泛娱乐,社交直播,还是 UGC/短视频应用,亦或是在线教育,腾讯云持续将经过实际业务验证的视频云产品开放给业界,助力垂直场景音视频应用产品快速推向市场。本次主要介绍如何利用腾讯云直播方案上线一款抓娃娃应用?如何在微信 H5 页面上发起双向音视频?如何做一款抖音类短视频应用? 演讲议题:用云函数结合消息服务实现数据的流式分析 分享嘉宾: 黄文俊,腾讯云

Redis面试题详解:哨兵+复制+事务+集群+持久化等

狂风中的少年 提交于 2019-12-05 19:52:13
Redis主要有哪些功能? 1.哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能,Replication则是负责让一个Redis服务器可以配备多个备份的服务器。 Redis也是利用这两个功能来保证Redis的高可用的 2.事务 很多情况下我们需要一次执行不止一个命令,而且需要其同时成功或者失败。redis对事务的支持也是源自于这部分需求,即支持一次性按顺序执行多个命令的能力,并保证其原子性。 3.LUA脚本 在事务的基础上,如果我们需要在服务端一次性的执行更复杂的操作(包含一些逻辑判断),则lua就可以排上用场了 4.持久化 redis的持久化指的是redis会把内存的中的数据写入到硬盘中,在redis重新启动的时候加载这些数据,从而最大限度的降低缓存丢失带来的影响。 5.集群(Cluster) 单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上,这也有点类似mysql数据库的主从同步。 在Redis官方的分布式方案出来之前,有twemproxy和codis两种方案