Twemproxy

Redis实战(四) 集群机制

冷暖自知 提交于 2019-11-29 19:23:35
文章目录 Replication(主从复制) 1.1. 配置主服务器 1.2. 配置从服务器 1.3. 测试 Sentinel(哨兵) 2.1. 配置Sentinel 2.2. 启动 Sentinel 2.3. 测试 Twemproxy Codis Redis 3.0集群 5.1. 环境搭建 5.2. 创建集群 微信公众号 加入全国服务端技术社群「后端圈」(点击加入) <<< 下面介绍Redis的集群方案。 Replication(主从复制) Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份,从而达到主从机制。为了实现主从复制,我们准备三个redis服务,依次命名为master,slave1,slave2。 配置主服务器 为了测试效果,我们先修改主服务器的配置文件redis.conf的端口信息 port 6300 配置从服务器 replication相关的配置比较简单,只需要把下面一行加到slave的配置文件中。你只需要把ip地址和端口号改一下。 slaveof 192.168.1.1 6379 我们先修改从服务器1的配置文件redis.conf的端口信息和从服务器配置。 port 6301 slaveof 127.0.0.1 6300 我们再修改从服务器2的配置文件redis.conf的端口信息和从服务器配置。 port

Redis07-Redis单节点容量问题,twemproxy,predixy的使用

我们两清 提交于 2019-11-29 14:09:41
Redis单节点容量问题 一、单节点容量问题 我们在实际场景中,往往遇上一个单节点容量问题。 1.进行 业务拆分 ,数据分类 2.到了 数据 不能拆分的时候,可以进行数据分片 进行哈希取模(影响分布式下的扩展性%3,%4,如果多加一台机器,就会收到影响) 进行逻辑随机(可以放进去,但是拿不出来) 解决方案:两台机器同时存储一个list,然后client直接连2台redis,进行两台一起消费 一致性哈希算法 crc16 crc32 md5 sha1 sha256 没有进行取模,等宽16位,将16位抽象出一个哈希环,计算一致性哈希算法 一致性哈希算法(哈希环): 1.求出memcached服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。 2.采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。 3.从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。 来源:(https://www.cnblogs.com/williamjie/p/9477852.html) 3.优缺点 优点:加节点的确可以分担其他节点压力(而且也不会造成全局洗牌) 缺点:新增节点会造成一小部分数据不能命中 二、twemproxy twemproxy是一种代理分片机制,由twitter开源

Nginx+Lua架构开发目录贴

不羁的心 提交于 2019-11-29 03:40:52
使用Nginx+Lua开发近一年的时间,学习和实践了一些Nginx+Lua开发的架构,为了让更多人使用Nginx+Lua架构开发,总结了一份基本的学习教程 目录 第一章 安装Nginx+Lua开发环境 第二章 Nginx+Lua开发入门 第三章 Redis/SSDB+Twemproxy安装与使用 第四章 Lua模块开发 第五章 常用Lua开发库1-redis、mysql、http客户端 第五章 常用Lua开发库2-JSON库、编码转换、字符串处理 第五章 常用Lua开发库3-模板渲染 第六章 Web开发实战1——HTTP服务 第七章 Web开发实战2——商品详情页 第八章 流量复制/AB测试/协程 来源: oschina 链接: https://my.oschina.net/u/2935389/blog/3053522

Redis分布式集群几点说道

北慕城南 提交于 2019-11-28 23:07:30
Redis数据量日益增大,使用的公司越来越多,不仅用于做缓存,同时趋向于存储这一块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架构,大部分都是采用分片技术,保证单实例内存增大带来的一系列问题,下面所列出的codis方案目前正在不断测试过程中,测试过程没有展示出来,主要从以下几点出发。 测试架构 和性能 :   1、keepalived+haproxy故障测试   2、Zookeeper集群节点测试   3、Codis-proxy集群节点测试   4、Codis-server集群节点测试   5、脚本写入大量测试数据并模拟数据迁移   6、性能测试 下面具体介绍codis和其他几大集群方案 集群方案:   1、 主从高可用(该方案就是单实例形式,只是为了保证数据的安全,对于用户数据少,业务的前期可以采用,目前我司缓存架构就是采用该方案)   2、 客户端分片(典型代表:Jedis。自主写分片算法,代码掌握在自己手中,可控性强,但是需要专业的开发运维人员维护,技术要求和维护成本高)   3、代理分片(典型代表:Twemproxy,redis集群没有正式推出之前官网推荐的方案,也是目前使用最多的)   4、 Redis cluster(3版本推出的集群方案,历时四年之多的开发)   5、 Codis集群(豌豆荚15年开源的解决方案

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

China☆狼群 提交于 2019-11-28 22:59:09
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两种方案

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

£可爱£侵袭症+ 提交于 2019-11-28 22:55:15
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两种方案

缓存集群防止数据库井喷

寵の児 提交于 2019-11-28 11:31:31
使用缓存数据库可以有效的提升系统性能,但是基于由于缓存数据库的自身特性,相比起实例化数据库,在性能抖动,丢失方面,尤其是缓存失效的严重问题层面,处理不足,及其容易带来,对底层数据库的瞬间并发访问,造成数据库的宕机。 所以,最好的方案,可以考虑,略微降低性能,在缓存的集群上面,仿照实例化数据库实现一些代理方案,这样可以实现类似zoonkeeper概念的一直死活控制。 现在缓存数据库,比较常见的是: 1:支持并发的高效率,无磁盘负责的memcached,自身不支持集群方案,必须走代理; 2:读写相对均衡的单线程的redis,自身支持完好的集群方案,并有可选的实例化方案,实例化与对外业务是从属于不同的线程。 3:不支持并发的大数据缓存,文档型数据库,mongodb,其内部设计,采用了,异常压制方案,出了问题,比较难以调式,自身有很好的集群能力。 实现缓存的集群方案是很好的,这样可以很好的降低了底层数据库的扩张与成本,且性能远大于底层数据库实现的分布式或者集群。唯一的关键点,是做好底层数据库与缓存数据库之间的保护屏障,于是,站在巨人的肩膀上面,可以选择如下方案: Twitter的Redis/Memcached代理服务:Twemproxy Twemproxy 是一个使用C语言编写的Redis 和 Memcache 代理服务器,通过引入一个代理层

Redis常见面试题

房东的猫 提交于 2019-11-28 04:56:52
1、什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 2、Redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 (2) redis的速度比memcached快很多 (3) redis可以持久化其数据 3、Redis支持哪几种数据类型?

花擦节 Codis作者黄东旭细说分布式Redis架构设计和踩过的那些坑们

≡放荡痞女 提交于 2019-11-27 06:01:09
花擦节 闪电购拼团狂欢节 微信中打开:http://www.52shangou.com/buyer/pintuan/index.html Codis作者黄东旭细说分布式Redis架构设计和踩过的那些坑们 2015-07-06 黄东旭 高可用架构 此文根据【QCON高可用架构群】分享内容,由群内【编辑组】志愿整理,转发请注明出处。 黄东旭,Ping CAP CTO,开源项目Codis的co-author。之前在豌豆荚从事infrastructure相关的工作,现在在创业公司PingCAP,方向依然是分布式存储领域(NewSQL)。 本次分享的内容主要包括五个大部分: Redis、RedisCluster和Codis; 我们更爱一致性; Codis在生产环境中的使用的经验和坑们; 对于分布式数据库和分布式架构的一些看法; Q & A环节。   Codis是一个分布式Redis解决方案,与官方的纯P2P的模式不同,Codis采用的是Proxy-based的方案。今天我们介绍一下Codis及下一个大版本RebornDB的设计,同时会介绍一些Codis在实际应用场景中的tips。最后抛砖引玉,会介绍一下我对分布式存储的一些观点和看法,望各位首席们雅正。 一、 Redis,RedisCluster和Codis    Redis :想必大家的架构中,Redis已经是一个必不可少的部件

Redis面试题汇总

烂漫一生 提交于 2019-11-26 01:43:20
1、什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 2、Redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者, 支持更为丰富的数据类型 (2) redis的速度比memcached快很多 (3) redis可以持久化其数据 3、Redis支持哪几种数据类型