- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
word格式精心整理版
范文范例 学习指导
1 Redis架构的方案经历阶段
1.1.?客户端分片
?
客户端分片:
优点
不依赖于第三方中间件,实现方法和代码自己掌控,可随时调整
这种分片机制的性能比代理式更好(少了一个中间分发环节)
可控的分发请求,分发压力落在客户端,无服务器压力增加
缺点
不能平滑的水平扩展节点,扩容/缩容时,必须手动调整分片程序
出现故障,不能自动转移,运维性很差
客户端得自己维护一套路由算法
升级复杂
1.2.?Twemproxy
Twemproxy:
优点
运维成本低。业务方不用关心后端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 Cluster
Smart 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开发Proxy
1.单Master多Work模式,每个Work跟Redis一样都是单进程单线程模式,并且都是基
于Epoll事件驱动的模式。
2.Nginx采用了异步非阻塞的方式来处理请求,高效的异步框架。
3.内存占用少,有自己的一套内存池管理方式,。将大量小内存的申请聚集到一块,能够比Malloc 更快。减少内存碎片,防止内存泄漏。减少内存管理复杂度。
4. ?为了提高Nginx的访问速度,Nginx使用了自己的一套连接池。
5. ?最重要的是支持自定义模块开发。
6. ?业界内,对于Nginx,Redis的口碑可称得上两大神器。性能也就不用说了。
3
Proxy+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.?Ng
文档评论(0)