优酷土豆的Redis服务平台化之路.docx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
优酷土豆的Redis服务平台化之路

1Redis架构的方案经历阶段1.1.?客户端分片?客户端分片:优点不依赖于第三方中间件,实现方法和代码自己掌控,可随时调整这种分片机制的性能比代理式更好(少了一个中间分发环节)可控的分发请求,分发压力落在客户端,无服务器压力增加缺点不能平滑的水平扩展节点,扩容/缩容时,必须手动调整分片程序出现故障,不能自动转移,运维性很差客户端得自己维护一套路由算法升级复杂1.2.?TwemproxyTwemproxy:优点运维成本低。业务方不用关心后端Redis实例,跟操作Redis一样Proxy 的逻辑和存储的逻辑是隔离的缺点代理层多了一次转发,性能有所损耗进行扩容/缩容时候,部分数据可能会失效,需要手动进行迁移,对运维要求较高,而且难以做到平滑的扩缩容出现故障,不能自动转移,运维性很差升级复杂1.3.?Redis Cluster?Redis Cluster:优点无中心节点数据按照Slot存储分布在多个Redis实例上平滑的进行扩容/缩容节点自动故障转移(节点之间通过Gossip协议交换状态信息,进行投票机制完成Slave到Master角色的提升)降低运维成本,提高了系统的可扩展性和高可用性缺点严重依赖外部Redis-Trib缺乏监控管理需要依赖Smart Client(连接维护, 缓存路由表, MultiOp和Pipeline支持)Failover节点的检测过慢,不如“中心节点ZooKeeper”及时Gossip消息的开销无法根据统计区分冷热数据Slave“冷备”,不能缓解读压力?1.4.?Proxy+Redis ClusterSmart Client vs Proxy:优点Smart Client:a.?相比于使用代理,减少了一层网络传输的消耗,效率较高。b.?不依赖于第三方中间件,实现方法和代码自己掌控,可随时调整。Proxy:a.?提供一套HTTP Restful接口,隔离底层存储。对客户端完全透明,跨语言调用。b.?升级维护较为容易,维护Redis Cluster,只需要平滑升级Proxy。c.?层次化存储,底层存储做冷热异构存储。d.?权限控制,Proxy可以通过秘钥控制白名单,把一些不合法的请求都过滤掉。并且也可以控制用户请求的超大Value进行控制,和过滤。e.?安全性,可以屏蔽掉一些危险命令,比如Keys、Save、Flush All等。f.?容量控制,根据不同用户容量申请进行容量限制。g.?资源逻辑隔离,根据不同用户的Key加上前缀,来进行资源隔离。h.?监控埋点,对于不同的接口进行埋点监控等信息。缺点Smart Client:a.?客户端的不成熟,影响应用的稳定性,提高开发难度。b.?MultiOp和Pipeline支持有限。c.?连接维护,Smart客户端对连接到集群中每个结点Socket的维护。Proxy:a. ?代理层多了一次转发,性能有所损耗。b.进行扩容/缩容时候对运维要求较高,而且难以做到平滑的扩缩容。?2为什么选择Nginx开发Proxy1.单Master多Work模式,每个Work跟Redis一样都是单进程单线程模式,并且都是基于Epoll事件驱动的模式。2.Nginx采用了异步非阻塞的方式来处理请求,高效的异步框架。3.内存占用少,有自己的一套内存池管理方式,。将大量小内存的申请聚集到一块,能够比Malloc 更快。减少内存碎片,防止内存泄漏。减少内存管理复杂度。4. ?为了提高Nginx的访问速度,Nginx使用了自己的一套连接池。5. ?最重要的是支持自定义模块开发。6. ?业界内,对于Nginx,Redis的口碑可称得上两大神器。性能也就不用说了。3Proxy+Redis Cluster介绍3.1??Proxy+Redis Cluster架构方案介绍1.?用户在ACL平台申请集群资源,如果申请成功返回秘钥信息。2.?用户请求接口必须包含申请的秘钥信息,请求至LVS服务器。3.?LVS根据负载均衡策略将请求转发至Nginx Proxy。4.?Nginx Proxy首先会获取秘钥信息,然后根据秘钥信息去ACL服务上获取集群的种子信息。(种子信息是集群内任意几台IP:PORT节点)然后把秘钥信息和对应的集群种子信息缓存起来。并且第一次访问会根据种子IP:PORT获取集群Slot对应节点的Mapping路由信息,进行缓存起来。最后根据Key计算SlotId,从缓存路由找到节点信息。5.?把相应的K/V信息发送到对应的Redis节点上。6.?Nginx?Proxy定时(60s)上报请求接口埋点的QPS,RT,Err等信息到Open-Falcon平台。7.?Redis?Cluster定时(60s)上报集群相关指标的信息到Open-Falcon平台。?3.2??Nginx Proxy功能介绍?目前支持的功

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档