网易云 Redis服务为用户业务护航加速

社区编辑2018-05-18 14:55

对于企业来说,随着业务大规模发展,其面临的用户访问量也会越来越多。如何快速响应用户的访问需求,也就成为越来越多的企业面临的难题。
 
部分企业,尤其是电商、直播、游戏等行业,一般会选择使用 Redis作为业务的缓存甚至核心数据库去应对业务的访问高峰。
 
拿电商企业来说,在双十一、双十二等访问高峰时期,作为公司技术人员必须保障高峰期的 Redis服务稳定、访问大规模增长时缓存空间不能出现不足。此时若接入网易云基础服务(蜂巢)的 Redis服务整个解决方案,这些问题都可以迎刃而解,企业可轻松应对访问洪峰。
 
Netease Cloud Redis,简称 NCR,是网易云基础服务(蜂巢)推出的一种高性能、高可用、弹性扩容的缓存服务。NCR兼容开源的 Redis 协议,支持主从版本和分布式版本两种高可用架构,提供了自动容灾、故障转移、在线扩容、监控告警等全套解决方案,可以有效地支撑起企业业务需求,让企业更专注于业务发展。
 

 

NCR服务总览

 
网易云基础服务(蜂巢)出于对用户数据安全的考虑,精心提供了可靠的私网隔离。NCR服务管理端以及监控配套服务都部署在控制节点网络,而 NCR服务实例则部署在租户的私有网络内。控制节点网络和租户私有网络之间只支持单向访问,即租户私有网络可访问控制节点网络。租户之间的私有网络是隔离不通的。
 

 
NCR服务为用户提供实例创建,实例在线操作(扩容、清除数据等),实例回收等功能。同时也为后台管理员提供实例管理,故障处理,版本升级等能力为用户缓存实例保驾护航。为保障 Manager服务稳定可靠,我们确保 Manager采用高可用的架构设计。
 

 
NCR服务提供了多种实例规格,用户可根据业务需求自由选择。此外,网易云基础服务(蜂巢)的 NCR支持弹性扩容,企业可随着业务发展根据需要选择一键升级,有效利用资源,整个升级过程对用户透明,不会影响业务使用。
 
为使用户了解实例运行状态,NCR服务提供了丰富的监控数据。在业务监控有 QPS、命中率、内存利用率、客户端连接数等,主机状态监控有 CPU、网络流量带宽等数据。可以随时随地查看实例状态。

主从版本

 
主从版本实例以虚拟 IP(VIP)作为业务的统一入口,每个主从版本实例都提供一主一从两个 redis实例分别部署在不同可用域的云主机上,确保服务安全可靠。
 

 
其中 slave实时同步 master内部用户数据,确保在 master发生故障或主机宕机时用户数据不会全部丢失。图中 agent是 redis节点监控组件,agent与 Manager保持实时连接,主动获取主从节点中的 redis状态将其推送到 Manager模块。
 
通过两个 agent交叉探活可以确保状态监控的可靠性,Manager收到实例中两个 agent汇报的 redis节点信息,只有两个 agent都确认节点异常时 Manager才进行决策对故障进行处理,如果是主节点故障则进行主备切换、 VIP漂移。依赖网易云基础服务(蜂巢)云主机提供能力,可以达到秒级切换,整个过程用户无感知,对用户业务无任何影响。
 
这里,agent在探活 redis节点的时候,支持重连机制,且只有当失连超过一段时间,才认为节点异常,这样的设计可以避免网络抖动带来的影响。agent是一个轻量级进程,运行期占用不到1MB的内存资源,CPU资源则可以忽略不计,所以对用户业务基本无影响。
 

集群版本

 
NCR集群版本采用官方推出的 redis3.0集群方案。集群采用 gossip/p2p的无中心节点设计实现,无需 proxy代理,客户端直接与 redis集群的每个节点连接,计算出 key的 slot直接在 slot对应的 redis节点上执行命令。
 

 
无中心的设计相对其他集群方案最大优点就是客户端直接对节点访问,省去代理层的消耗,缩短响应时间。从用户角度来看响应时间是最关注的指标,NCR集群版本相对于其他厂商无疑更具有优势。
 
弹性扩容方面,NCR集群版本提供在线一键扩容:支持在线调整实例存储容量,数据不丢失提供。便利的扩容操作可以更有力地支撑用户业务规模的快速增长。不需要代理、使用异步复制,并且没有数据合并操作(在大数据值上也不影响性能),使得集群在线性扩展到多节点后也具有高性能。
 
在服务高可用方面,NCR集群也是分别部署在不同可用域的云主机之上。在大多数主节点正常,其他主节点故障,但其从节点可达的情况之下,仍然可以提供服务。在 Master节点发生故障时,集群会自动进行 Master选举和 Failover切换。
 

完备的告警监控

 
性能监控是网易云基础服务(蜂巢)为用户准备的自助运维工具,帮助用户监控服务运行状态,发现异常问题。
 

 
NCR根据缓存特点提供了丰富的实例性能监控数据,支持各类监控项自定义阈值报警。用户可以根据业务的需求,定制自己的监控报警设置。如客户端连接数监控可以很容易排查业务代码是否存在连接泄露,key命中率可以查看缓存实际使用效果,据此调整业务的缓存策略等等。
 

未来可期

 
后期,NCR服务会推出完善的持久化功能,我们将重新设计和增强 redis的持久化能力,为用户提供定时备份、自动备份和数据回滚功能,用户可以将缓存数据恢复到任意时间点(支持秒级)。
 
试想一下这样的场景:游戏部门某次常规更新后发现业务异常,玩家无法登录,老板要求立刻恢复,此时发现 redis数据写坏了只有前一天的备份。如果 Redis可以支持基于时间点的恢复,场景中的问题就会迎刃而解。
 
让我们一起期待。