提升业务高峰孵化云平台对象存储服务性能的新方法

/ 2

提升业务高峰孵化云平台对象存储服务性能的新方法

周芯亦,周轩亦

中国移动通信集团青海有限公司,青海 西宁 810000  中国移动通信集团设计院有限公司新疆分公司,青海 西宁 810000  

一、背景

青海移动孵化云平台是承载技术服务和业务服务的公有云平台,实现资源与应用的联动,实现业务能力的共享和复用。同时是加强云计算资源统一运营管控能力,助力省内云资源的协同化、一致化、集中化,促进企业内部系统的架构标准化和资源共享的服务平台。

该云平台承载的上层应用系统规模广,重要性高,业务量大,而对象存储的性能将直接影响上层应用系统的可用性,需要引入新技术,创新新方法,提升对象存储服务处理能力,以满足业务快速增长的需要。

二、存在的问题

孵化云平台目前有对象存储物理磁盘3PB,按照4+2冗余方式,可提供1PB的对象存储服务能力,随着视频云业务的逐步迁入,存储需求的快速攀升,孵化云平台承载的业务系统和承载业务量会越来越多,对象存储服务能力需求会达到100PB以上,以视频云业务为例,对象存储的IOPS由年初的2.8亿笔/核心交易;增长到年底的4.4亿笔/核心交易。

2021年初孵化云平台的对象存储服务峰值吞吐量达到了2.8亿笔/日,其中视频云业务系统所产生的交易量占当前孵化云平台对象存储服务吞吐量的98%,随着孵化云业务系统业务量的增长,预计2021年底孵化云平台对象存储服务吞吐量将大幅增加,为满足业务需求,需要进一步提升孵化云平台对象存储服务能力。

目前业务量的情况下,对象存储服务在月底月初业务高峰期间已经出现了IO缓慢、视频读取延迟等现象,其可扩展性和处理效率都无法满足2021年底的业务增长需求,需要对其性能进行提升。

三、总体方案构建

针对已经存在的问题,为了提升业务高峰孵化云平台对象存储服务性能,总体的方案是:基于缓存集群+对象存储库服务的解决方案。该方案的实施过程为:在业务应用调用数据访问层前建立缓存集群,业务调用对象存储服务的所有数据请求先通过缓存集群进行缓存,然后批量提交存储库修改。

针对系统的特点,总体可以分成技术架构和系统部署两个方面来实施方案。

对于技术架构方面,有:1.利用Redis作为数据访问缓存集群的技术架构方案;2.数据访问的方式选择为集中模式。

系统部署方面则是:1.可靠性的保障方案选择是运行状态非集中管理;2.最终的部署模式则选择主从复制模式部署。

方案的具体实施对策步骤如下:

1、搭建Redis集群:(1)Redis缓存集群搭建(2)开发消息二阶段提交机制(3)调整外部数据服务调用流程;目标为:Redis集群性能大于3.5万条/秒。

2、搭建对象存储库主从集群:(1)实现分库规则(2)实现路由协议(3)搭建对象存储库主从复制集群;目标为:对象存储库主从集群性能大于7500条/秒。

3、对象存储服务运行状态非集中管理可靠性保障:(1)对redolog日志进行记录和保存(2)实现中心节点对redolog日志的保存;目标为:日志记录对处理性能的影响小于2%。

4、研发对象存储服务容器化部署:(1)对对象存储服务进行容器化封装(2)借助孵化云平台的容器管理能力对对象存储服务容器进行纳管。目标为:通过容器弹性扩展,2分钟内实现自动扩展100个对象存储服务实例。

四、具体对策实施方案

4.1 对策实施一:搭建Redis缓存集群

(1)对策实施

搭建Redis缓存集群,优化数据访问流程。

【措施一:Redis缓存集群搭建】

通过Redis分布式缓存技术,搭建Redis集群,可以支撑业务高峰时期,大量并发的业务访问需求,Redis集群可以做到快速响应,不影响实时交易的处理。这种Redis集群模式适合数据量巨大的缓存要求。

【措施二:开发消息二阶段提交机制】

在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败。当一个数据调用请求跨越多个存储库节点时,需要引入一个作为协调者的组件来统一掌控所有节点(称作参与者)的操作结果并最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等)。

【措施三:调整对象存储服务调用流程】

为搭建好的Redis缓存集群创建外部数据访问API,外部数据访问API将业务服务对数据库的调用请求传递至Redis缓存集群队列。

(2)效果检查

针对Redis缓存集群搭建后的性能利用“正交实验法”进行数据库调用的并发试验测试,并对结果进行分析。

查正交实验表确定可安排水平数为3,试验次数安排9次【L9 (33)】。

该实验分别通过:数据访问请求数、数据库数量、单库数据量这三个因素分为A、B、C三个实验组,每组做三次实验。其中A组分别为10、50、100个数据访问请求;B组分别为30、60、90个数据库;C组分别为1000万、2000万、3000万条单库数据量。实验完成后各个组的极差分别为:8.57、0.58、0.29

三个因素对结果影响的重要程度:按照极差的排序为(从大到小):A->B->C;则我们可以通过实验结果得出的最佳组合为A2B1C1,即采用50个进程,30个数据库实例,每个数据库1000万条数据的方式部署Redis集群。

在获得最佳组合后,继续进行25次跟踪实验,根据最终的实验数据我们可以知道Redis性能波动幅度很小,且稳定在3.745万条/秒。该项实施有效。

4.2 对策实施二:搭建对象存储库主从复制集群

创新研发出对象存储库复制集群与Redis集群组合提供高速持久化存储,用于孵化云平台对象存储服务。创新的使用数据访问请求到对应的用户数字编号的动态路由模式。

(1)对策实施

【措施一:实现分库分表规则】

按照实际物理节点数划分存储库,并对存储库顺序编号。在存储库内按照时间间隔对数据分子库。保证每个子库数据在1000万以内。

【措施二:实现路由协议】

通过用户ID和用户基本信息对实际物理节点数目取余结果获取其对应的存储库编号,按照业务线及业务请求时间获得其所在子库。

【措施三:搭建对象存储库主从复制集群】

通过搭建对象存储库主从复制集群实现数据的多处自动同步及弹性扩展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升对象存储库的吞吐性能。

(2)效果检查

按照2020年春节对象存储服务吞吐量日峰值业务量进行对象存储库主从模式性能测试记录测试结果和平均吞吐量。

根据最终的实验结果我们可以知道对象存储服务的平均读写性能可以达到20321条/秒。该项实施有效。

4.3 对策实施三:运行状态非集中管理可靠性保障

(1)对策实施

【措施一:对重做日志进行记录和保存】

记录存储库关键操作的上下文环境和执行结果状态,实现在异常情况下,即结果状态没有或者异常时可以根据记录的上下文环境完成对数据的回滚和继续处理。

【措施二:实现中心节点对重做日志位置的保存】

将redo日志的位置信息保存在中心节点中,实现对所有存储库可见,可以在能够获取失败操作重做日志的任意主机上启动新的对象存储服务实例来恢复业务。

(2)效果检查

对日志生成所带来的性能损耗进行测试,该测试分为10组,且每组分别进行未开启redo日志CPU使用率以及开启redo日志CPU使用率两次实验,最终的测试结果如下:

(1)10%、10%;(2)9%、9%;(3)11%、11%;(4)10%、11%;(5)10%、10%;(6)12%、12%;(7)11%、12%;(8)10%、10%;(9)9%、10%;(10)10%、10%;

从实验结果可以看出,开启日志之后CPU使用率上升稳定在0-1%间,运行状态的非集中管理只需要极低性能损耗即可进行运行日志的生成。该实施有效。

4.4 对策实施四:研发对象存储服务容器化部署

(1)对策实施

【措施一:对对象存储服务进行容器化封装】

将对象存储服务及其依赖的运行环境封装为Docker容器,通过虚拟化技术实现对象存储服务与物理主机的隔离,使对象存储服务可以运行在任何支持Docker容器的主机上。

【措施二:借助孵化云平台的容器管理能力对对象存储服务容器进行纳管】

借助孵化云平台的容器管理能力,对封装了对象存储服务的容器的部署和运维提供方便的管理,实现对象存储服务的自动扩容、缩容和快速部署等功能。

最终实验的结果相关数据为(单位:秒):最小值:90;最大值:119;极差:29;分组数:10;组距:2.9。

根据实验所得的结果绘制直方图,按照1000个容器进行弹性扩展,所需部署时间稳定分布在99秒-105秒区间内,小于设定的120秒目标值。该实施有效。

五、最终成果效益

1、经济效益

节约成本:新方法使用之前,需要92台服务器部署对象存储服务和存储库,新方法使用后,68台服务器可以实现业务支撑。节省了近35%的主机,按照X86服务器10万/台计算,节省硬件成本240万元。

2、社会效益

(1)能提高青海移动孵化云平台对象存储服务支撑能力,提升孵化云平台数据处理性能,且还能够提升面向外部客户的服务支撑系统的应用处理能力,提升了客户满意度。

(2)首次将Redis集群+对象存储库主从复制模式应用于青海移动孵化云平台,在全网起到了标杆作用。

(3)通过创新的技术应用给技术部门注入新鲜血液,调动了部门人员的工作热情,提升了部门人员的技术水平。