和彩云多节点架构技术研究

2022-07-16 13:11焦容
广东通信技术 2022年6期
关键词:路由表彩云呼和浩特

[焦容]

1 引言

和彩云业务是中国移动的云存储类业务,用户可以将个人数字资产存储在和彩云,上传下载速度较快,不限速;且利用https 等进行传输,安全性较好。如何提升和彩云架构的高可靠性和健壮性是非常重要的课题,将直接影响业务的体验。

和彩云在2019 年前一直采用1+1 架构,即一个用户节点与一个存储节点支撑业务运行,用户节点与存储节点均设置在广州。用户节点负责用户登录、元数据管理、流程实现等,是和彩云架构的主要节点;存储节点负责用户上传下载、在线与离线转码、人脸聚类等,关系到用户上传下载体验,也是重要的节点。

1+1 架构有如下缺陷。

(1)单点故障

用户节点与存储节点均存在单点故障。如果用户节点发生故障,将导致和彩云用户无法登录,查询用户资产、上传下载等业务流程更无法运行,也就是说业务完全不可用,发生业务全阻现象;如果存储节点发生故障,虽然用户能登录、查询用户资产,但无法使用上传下载、在线播放等核心业务,属于严重故障。

(2)容量无法持续扩容

受限于机房机柜的数量、数据库的容量等制约因素,单个用户节点的容量上限为6 000 万APP 月活,很难向上突破,这将大大制约和彩云业务的发展。

如何避免业务全阻或上传下载等核心业务不可用,扩充用户节点容量,本文设计了一套和彩云多节点方案,并成功实现。

2 原架构及分析

和彩云2018 年前的架构如图1 所示。为1+1 架构,1个用户节点加1 个存储节点。

图1 单节点架构

下面说明用户上传文件的流程。

(1)用户上传文件操作前,去用户节点进行用户登录鉴权,并查看用户空间是否有空余空间;如果条件满足用户节点将用户调度到存储节点,进行上传文件操作。

(2)上传文件完成后存储节点记录该用户上传的文件ID、文件大小、存储在哪个存储节点、MD5 等信息。

(3)向用户节点发信令,告知用户节点该文件上传成功,用户节点记录文件ID、文件名称、文件上传时间等信息。

从以上流程可以看出,因用户节点与存储节点都只有一个,任何一个节点出现故障,都将导致用户无法正常上传下载,上传下载是和彩云业务的核心流程。就是第一章所说的单点故障。另外也存在前面提到的容量无法持续扩容的缺陷。

3 多节点架构

3.1 多存储节点架构

2018 年6 月成功上线了呼和浩特存储节点,首次实现了多存储节点架构,形成了1+2 架构,如图2 所示。

图2 多存储节点架构

多存储节点方案的关键技术如下。

3.1.1 重构上传下载流程

3.1.1.1 路由选择

本方案重构了和彩云上传下载流程,用户节点存储了一张路由表,将31 个省的地市区号按照距离远近分别归属到广州和呼和浩特存储节点,然后按路由表将用户路由到相应的存储节点进行上传下载操作。从和彩云系统导出的部分路由表如表1 所示。例如将河北用户路由到呼和浩特存储节点进行上传下载操作,而不是路由到广州存储节点。

表1 存储节点路由表

3.1.1.2 异构存储的支持

将用户路由到某存储节点后,支持该存储节点内部有不同类型的存储,也支持不同厂商的存储。比如广州存储节点同时支持文件存储与对象存储,也同时支持阿里、腾讯、中国移动云能力中心的文件存储,也同时支持阿里与中国移动云能力中心的对象存储。异构存储集群选择的算法是:

(1)计算存储空闲率

某存储节点有多个不同类型不同厂商的存储集群,某个集群的空闲率的算法是:currentFreeRatio=(100-cloudStorage.getUsedRatio())*cloudStorage.getWeight()*MANUFACTURERWEIGHT。

公式中各参数的含义如下。

currentFreeRatio:集群的空闲率。

cloudStorage.getUsedRatio():该存储集群的使用率,比如该集群为5P,使用了4P,则使用率为80%。

cloudStorage.getWeight():指该集群的权重,跟集群存储容量大小、使用的是对象存储还是文件存储有关,由和彩云运营商配置。

MANUFACTURERWEIGHT:指厂商的权重,根据不同厂商的存储性能情况分配不同的权重。

(2)创建hash 环

某个存储节点有多个集群,根据集群的空闲率(currentFreeRatio)创建hash 环。例如图3 的存储节点有4个集群,创建的hash环有4个域(range)。currentFreeRatio值越大,则该集群的域值越大,在hash 环占的弧长越大,文件被随机分配到某个域的概率则越高。

图3 存储节点hash 环

3.1.1.3 上传下载流程

多存储节点架构下用户上传下载文件的过程是,在用户进行文件上传操作时,向用户节点获取用户归属哪个存储节点的信息,然后用户节点调度用户到归属存储节点进行上传操作,实现用户存储访问就近接入,用户的文件下载操作原理类似。用户上传下载文件的数据与信令流如图4 所示。

图4 用户上传下载文件数据与信令流

3.1.1.4 用户体验分析

呼和浩特存储节点上线后,相比单存储节点架构北方用户上传速度提升了1 倍,达到1.2 Mbit/s,下载速度提升了70%,达到2.4 Mbit/s。如图5 所示。

图5 呼和浩特存储节点上线前后速度对比

3.1.2 设置容灾机制

和彩云系统用户归属哪个存储节点的路由表是可配置的,如果某个存储节点出现故障,可以临时修改路由表,将该存储节点对应的所有地区区号配置到另一个存储节点。这样用户可以继续正常上传下载。例如如果广州存储节点出现故障,10 分钟内可以修改路由表并生效,南方用户临时归属呼和浩特存储节点,从而保障南方用户正常使用业务。广州存储节点与呼和浩特存储节点互为容灾。

3.2 多用户节点+多存储节点架构

2021 年12 月和彩云上线了呼和浩特用户节点,2022年3月上线了东莞存储节点,形成了2+3架构,如图6所示。

图6 多用户节点+多存储节点架构

多用户节点架构的关键技术如下。

3.2.1 用户调度

将单用户节点改为双用户节点后,用户访问和彩云系统时,需要先确定用户访问哪个用户节点,我们新建了一个调度节点解决该问题。将和彩云域名对应调度节点的IP地址配置在DNS 中,调度节点还保存了一张表,记录广州用户节点与呼和浩特用户节点分别对应的地区区号,原则上广州用户节点管理南方用户,呼和浩特用户节点管理北方用户。用户访问和彩云系统时,可以根据该表查询到该用户归属哪个用户节点,然后调度节点将该用户路由到相应的用户节点。

广州用户节点与呼和浩特用户节点根据地区区号进行灵活配置。

3.2.2 数据资产的割接

在2021 年12 月前,所有用户的文件信息都存储在广州用户节点。12 月将内蒙乌海60 万用户割接到了呼和浩特用户节点。割接当晚12 点和彩云系统暂停对外服务,从广州用户节点的200 亿条数据记录中筛选出乌海用户的用户信息、上传文件信息等数据,然后用SQL 语句写的批量复制工具将乌海的数据复制到呼和浩特用户节点,再将乌海用户路由到呼和浩特用户节点,进行业务测试验证。测试通过且乌海用户业务运行正常后才能将存在于广州用户节点的乌海用户数据删除。

3.2.3 文件跨站点转存

外链是和彩云文件分享的一种形式,某用户生成了URL 外链,其他用户可以通过访问链接,查看或者转存该文件至自己的和彩云空间。跨用户节点转存外链文件时,需要把文件元数据(文件名、文件ID、文件目录树型结构等)从一个用户节点批量复制到另外一个用户节点,但物理文件共用一份。

4 结束语

如上所述,为确定用户归属,引入了调度节点,调度节点功能相对简单,且为12 台服务器组成的一个集群,本身具备较强的容灾能力,但依然存在单点故障,因此如何解决调度节点的单点故障,是下一步需要解决的问题。

广州用户节点出故障后,虽然呼和浩特用户依然可以正常使用业务,但南方用户将无法使用业务,如何做到广州用户节点与呼和浩特用户节点双活,一个节点出故障后,将无缝切换到另一个节点,是另外一个需要解决的有较高难度的问题。

猜你喜欢
路由表彩云呼和浩特
彩云之南
王彩云美术作品
呼和浩特之旅
一路彩云奔小康
当时明月在,曾照彩云归
一种无线自组网通信协议设计
最近的草原休闲游
IP 路由技术与RIP 协议探析