资源描述:
《腾讯互娱高级dba康中良《redis集群在腾讯游戏的应用及演变》》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Redis集群在腾讯游戏的应用及演进康中良DBA@TencentGameRedisisanopensource,BSDlicensed,advancedkey-valuecacheandstore.Itisoftenreferredtoasadatastructureserversincekeyscancontainstrings,hashes,lists,sets,sortedsets,bitmapsandhyperloglogs.—http://redis.ioRedis特点❖速度快QPS10w+❖单线程一个线程干活:收包、发包、解
2、析❖K-V存储所有数据按“key”访问❖纯内存+持久化数据全内存,高性能,RDB/AOF落地strings,hashes,lists,sets,sorted❖支持多种数据结构sets❖协议简单各种语言的api支持❖生产者/消费者消息队列高性能,异步处理请求队列❖过期时间到期数据自动删除Redis@腾讯游戏❖主要代理手游使用(2013~至今)❖实例数:1900+❖数据量:2.5T+❖访问量:900亿+/天Redis@游戏场景❖string:openid映射等❖hash:角色信息、装备道具等❖list:DB数据缓写、排队等❖set:用户单属
3、性记录:好友等❖sortedset:全局排行等❖过期时间:定期活动礼包发放等Redis@游戏场景*周排行腾讯手游特点❖用户多❖增长快❖节奏快❖业务多❖周期短上线推广Redis集群在腾讯游戏的应用及演进阶段1:阶段2:阶段3:展望:直接使用Redis定制+集群服务在线迁移扩缩容冷热数据分离标准化管理海量数据支撑在线容量迁移AOF增量落地可用性简化运维管理数据SSD落地冷热数据分离2013.72014.32014.8TODO阶段一:直接使用Redis直接使用Redis,重点关注:❖标准化管理❖可用性Redis-标准化管理❖标准安装,集中管理
4、❖统一配置+个性配置❖标准安装目录及命名规范❖自动化部署❖自动化部署实例,支持大量实例批量安装❖平台化❖监控❖统一监控内容❖Redis性能数据集中上报❖备份❖统一备份策略,本地备份+异地备份Redis-标准化管理❖Redis服务化❖上架工作一步完成Redis-可用性❖主备部署❖master访问,slaveaof落地+备份❖域名接入,自动故障切换❖Redis故障程序配置不需要修改❖故障自动切换❖方案透明,应用无需改造❖Whynotzookeeper/LVS?Redis故障自动切换DNS管理域名切换GCSGameSvr系统GameSvrDN
5、SRedis(M)故障检测…..Redis(S)故障Redis切换时间:1分钟Redis-容量管理单实例如果数据量太大,带来的困难:✤备份✤replication✤性能解决:❖单机多实例❖单实例容量管理:❖单实例<16G(最好<8G)❖请求量<5w/s❖内存超过配置80%告警单线程既是优点,也是缺点!直接使用Redis的不足❖单实例容量有限❖大量实例管理复杂❖运维操作复杂例如某业务模块:❖需500G空间,访问峰值100w/s,需要30+Redis节点❖程序需自己实现hash算法,扩容还需要修改算法。。阶段二:定制-提供集群服务大量Red
6、is运营,重点关注:❖海量数据支撑❖运维管理简化引入中间件❖Redis集群引入twemproxy作为代理:❖按key分片❖访问透明,协议兼容关于Twemproxy:❖Afast,light-weightproxyformemcachedandRedis—https://github.com/twitter/twemproxyTwemproxy定制腾讯定制twemproxy,主要改造:❖1.定制hash分片算法(42w)❖2.故障切换支持❖3.ping/auth命令的支持❖关于twemproxy性能:(与直连Redis对比)Redis集群
7、分片管理❖单集群固定分片:42W❖key=>hash(key)%420000=>key存储Redis❖扩容、缩容操作Redis1getmykey定制twemproxyRedis10-200000Redis2hash(“mykey”)=9642Redis220001-419999Redis集群方案GCSDNS管理系统hash取模Redis(M)Redis(S)GameSvr定制twemproxyRedis(M)Redis(S)DNGameSvr定制twemproxySRedis(M)Redis(S)…..………………集群高可用❖1.Red
8、is集群通过DNS+port访问.❖2.当twemproxy故障时,GCS系统会将twemproxy从DNS中剔除掉故障IP,业务访问重试即可恢复.(需重连)❖3.当Redis实例故障时,GCS系统会将所有