网易视频云分享:网易私有云Redis服务
mhr18 2024-12-03 12:24 18 浏览 0 评论
网易视频云(vcloud.163.com)是网易推出的视频云服务平台,现在网易视频云的技术专家给大家分享一下网易私有云Redis服务。
网易私有云Redis服务,是网易杭研院后台技术中心数据库技术组在私有云平台上提供的一种统一、可靠、分钟级自动化部署的Redis服务,具有高可用、高可靠、故障自动恢复、容量平滑伸缩等特色功能,上线不到一年,已经拥有200多个实例,超过4TB内存资源,内存资源利用率达63%(redis容量/云主机容量),服务多个重量级产品。在这个还不不赖的成绩下,向大家分享下NCR(NetEase Cloud Redis)服务的功能和实现,一来推动大家都来认识NCR,了解我们缓存组正在从事的工作,二来也是邀请大家(各产品线)放心大胆的来使用NCR服务。
系统架构
作为攻城狮群体,第一道菜必然是系统架构,接图:
图中从左至右分为三部分:左边(蓝色)是web浏览器,产品和服务的管理员以web化方式对服务(实例)进行管理;中间(紫色)是管理服务,基于spring3.0框架开发,除提供针对实例的增、删、改、查基本功能外,还拥有监控预警、故障自动恢复、实例扩容、系统升级等增值配套功能;右边(绿色)是管理服务创建的实例,分为单节点和分布式两种规格的实例,前者支持全部Redis命令,适用于小容量的应用,后者支持绝大部分Redis命令(部分跨节点命令不支持),适用于大容量的应用。
鉴于云计算平台对网络安全的考虑,所以系统模块在部署上也有一定的要求,管理服务部署在控制节点网络,实例部署在租户的私有网络内,其中控制节点网络和租户私有网络只支持单向访问(租户网络访问控制网络),而租户间的私有网络是隔离不通的。
单节点实例
单节点实例拥有极简的架构,非常廉价的成本,以虚拟IP(VIP)作为业务系统接入接口。一个单节点实例对应一个group(redis节点主从组),group内配置主从双副本redis节点,分别部署在两台不同可用域的云主机上。图中的redis-agent同时连接着管理服务(manager模块)和主从redis节点,通过交叉探活(向节点发送ping指令和解析pong响应消息)获取节点的存活状态信息,并实时推送给manager模块,当两个redis-agent汇报的redis节点状态同时异常时,manager模块才认为(决策)该节点异常,如果该节点是主节点,则管理服务发起主从切换和VIP漂移流程。这里,redis-agent在探活redis节点的时候,支持重连机制,且只有当失连超过一段时间(可配置,比如10秒钟),才认为节点异常,这样设计的主要目的是考虑到云网络抖动带来的影响。redis-agent是一个mini的单线程进程,运行期占用不到1MB的内存资源,CPU资源则可以忽略不计。
在单节点实例下,manager模块需要参与实例的节点异常决策、主从切换和VIP漂移,功能上已经超越了它的定位。
分布式实例
分布式实例,顾名思义就是分布式的、有多个group的集群。图中右侧是核心业务流相关的模块,包括proxy、redis(redis-server)、redis-sentinel,都是单线程的进程,所以从资源角度,尤其是CPU计算资源,是非常节约的(这也是NCR分布式实例可以多节点冗余部署的一个原因)。proxy是代理模块,用于数据分片,redis-server和redis-sentiniel是官方套件,后者用于redis节点探活及主从failover。部署上,一个分布式实例拥有多台分属不同可用域的云主机,一台云主机部署一个proxy节点和多个redis节点,同一个group内的主从redis节点部署在两台不同可用域的云主机上,同一个租户内多个实例共享一个redis-sentinel集群。
大家感兴趣的proxy模块,是基于开源的twemproxy做的二次开发,增加了支持redis节点高可用功能(根据官方指导实现,自动切换到新主节点上,对业务来讲是透明的)、支持redis-sentinel节点异常自动切换、支持对接manager模块。proxy代理层的轻、薄、高效设计,以及负荷(CPU、Network IO)的离散,对整个集群的稳定、健康是非常有利的,特别是对于分布式系统来讲也是更理想、更友好的!
左侧的manager模块在分布式实例下,不参与redis节点探活和主从failover流程,聚焦于管理服务。
下面是分布式实例架构的一些特点:
分层设计
分布式实例从上到下分为四层:
loadbalance集群层
proxy集群层
redis集群层
redis-sentinel集群层。
其中loadbalance层用于负载均衡,通过DR模式把应用的客户端请求分发给proxy集群,再由proxy集群对业务数据进行分片,计算key的哈希值把数据分片到各个group的redis主节点上,每个group也是主从双副本配置。redis-sentinel集群监控所有group下的redis节点,判断主节点存活状态并完成failover逻辑,同时proxy订阅redis-sentinel的主从切换频道,实时获取redis主节点状态变化信息,并完成切换到新的redis主节点功能。
去中心化设计
节点判活选主:redis节点状态判断以及新主节点的选举,由官方redis-sentinel套件以集群投票(Raft协议)的形式完成;
数据分片规则:proxy集群的数据分片规则不是由manager统一管理,而是由各个proxy节点按ketama hash ring来分片。
容灾设计
loadbalance集群:LVS+keepalived主从高可用;
proxy集群:无状态节点,异常时由loadbalance自动摘除,同时多节点冗余;
redis集群:每个group主从双副本,部署在不同的AZ(available zone,可用域,可以理解为不同物理机);
redis-sentinel集群:多节点冗余,部署在不同的AZ;
virtual server:数据主从双副本,分布在不同云主机、不同AZ之上,所以一台云主机宕机不影响系统的可用性和数据的可靠性。
管理服务
manager模块规划有高可用,但考虑到私有云以及实例数据已经持久化至数据库的前提,优先级就不是很高了。除正常的增、删、改、查功能外,还支持以下功能:
一键升级:支持线上集群的配置文件、脚本、二进制程序一键升级,支持版本比较、失败回滚等功能;
故障恢复:支持主机级别的故障自动恢复功能:按原IP重新创建云主机,并恢复其上的各种节点;
实例扩容:支持实例的纵向(scale up)和横向(scale out)扩容功能。
更多技术分享,请大家关注网易视频云官方网站或者官方微信(vcloud163)哦!
- 上一篇:拒绝躺平,Redis 实现了自己的 VM
- 下一篇:怎么测试 Redis 的连通性?
相关推荐
- 【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...
- Pure Storage推出统一数据管理云平台及新闪存阵列
-
PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...
- 对Java学习的10条建议(对java课程的建议)
-
不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...
- SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!
-
官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...
- JDK21有没有什么稳定、简单又强势的特性?
-
佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...
- 「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了
-
在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...
- Java面试题及答案最全总结(2025版)
-
大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...
- 数据库日常运维工作内容(数据库日常运维 工作内容)
-
#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...
- 分布式之系统底层原理(上)(底层分布式技术)
-
作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...
- oracle 死锁了怎么办?kill 进程 直接上干货
-
1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)