云音乐贵州机房迁移总体方案回顾

2023年确定要将云音乐整体服务搬迁至贵州机房,项目需要在各种限制条件下,保障2000+应用、100w+QPS的服务稳定迁移,是云音乐历史上规模最大、人员最多、难度最高的技术项目。在此过程中,解决了大量历史技术债务,同时化解了大量新增系统性风险。以下为总体方案回顾。

大团队/领域之间的迁移方案尽可能解耦,分不同批次搬迁。好处:

云音乐服务端需要将流量闭环在同一个机房,避免产生跨区域调用。

云音乐经过微服务之后,目前存在千+服务,各服务间依赖复杂。在贵州机房与杭州机房之间网络延迟约30ms的背景下,每产生一次跨区域调用,则RT上升30ms。

关于此处,会有同学认为优先B端可能会更稳,但优先采用B端优先,会有如下问题:

迁移期间,需要在贵州准备与杭州同等规模的机器资源,因此批次不可能不受到资源的限制。其主要受限制资源为:

因此,按照以上原则进行分批后,若资源仍不足,再根据团队/领域拆分出第二批

能够按照用户ID、设备ID、IP、流量标几个维度逐步灰度切流。

尽管做了各种稳定性保障来避免回滚,但是如遇到极端情况,仍有整体回滚的可能性。因此搬迁方案必须可回滚。

在切流过程中,杭州和贵州之间会有大量的服务访问、数据传输,从而可能突破长传带宽200Gbps的限制。因此切流方案中必须减少不必要的跨区域流量。

服务端整体通用架构简化后,如上图所示,因此有如下几个切入点:

云音乐业务场景较多,不同场景下对数据一致性的要求也不一样,例如:营收下的订单类场景需要数据强一致性,而点赞需要数据最终一致性即可。

在涉及不同的存储时,也有着多种多样的迁移策略。对此,中间件以及各存储层支持了不同的迁移策略选择,各个业务基于不同的场景,选择正确的策略。迁移策略主要如下:

因此整个项目组也在摸着石头过河,在此过程中,既有大的方案的设计,也有细枝末节的问题发现和推进处理。总结起来,我们总共从以下几个方面着手进行稳定性保障:

盘点梳理机器资源情况、网络带宽、迁移期间服务可用性要求等全局限制条件,从而确定分批方案、迁移思路。

主要盘点核数、内存。在此过程中,也推进了资源利用率优化、废弃服务下线等事宜。通过如下公式计算机器资源缺口:搬迁机器缺口=搬迁所需数量-(可用数量+可优化数量)

需要控制云音乐的长传带宽总量<=相对安全的带宽量相对安全的带宽量=(长传带宽总量/2x0.8)-已被占用带宽量

若业务允许全站停服迁移、或仅保障少量核心服务不挂,那么整体迁移方案会简单很多。因此业务对迁移期间的可用性要求,关乎着搬迁方案如何设计。最终讨论后确定,需要:迁移不产生P2及以上事故

基于Trace链路,预测分批情况下RT增长情况。

此次贵州迁移主要带来的新增系统性风险是:

贵州公网质量如何?迁移至贵州之后是否会因公网质量问题,导致用户体验差?由于云音乐用户基数大,且注重用户体验,这个是必须提前摸清的问题。若公网质量真的存在较大问题,云音乐可能会停止贵州迁移项目。

对此,我们通过如下方式进行了公网质量验证和保障:

云音乐C端服务当前的RT普遍在5~70ms之间,若增加30ms,可能会导致请求堆积、线程池打爆等风险。为避免此风险,我们从如下几个方面入手:

跨机房网络的现状和参考数据:

基于以上现状,需要重点考虑并解决:

在贵州迁移项目中,我们对以上重点问题进行了梳理和解决,并制定了各种应急预案和极端情况下的回滚方案。

因杭州和贵州机房同时部署,带来的服务节点数量、API数量、RPC数量翻倍风险

在服务节点数量、API数量、RPC数量翻倍后,主要对底层依赖带来连接、重连上的冲击,以及原有连接数上限的冲击。

在我们实际搬迁中,也因遗漏了这一点,导致线上ZK出现瓶颈,进而ZK挂掉的问题。其主要表现为在网关场景下存在数据推送瓶颈。最终通过网关侧的ZK拆分解决该问题。

除此之外,DB、Memcached、Redis、MQ等资源的连接数也可能会超过原先设定的上限,需要评估后进行调整。

大规模数据变更的场景包含但不限于:

针对以上风险,我们重点对配置中心、K8S、贵州迁移管控平台等系统进行了性能优化,以支撑整体迁移。

因新机房建设、搬迁带来的底层基础设施风险包含但不限于:

在贵州迁移前,已经有多次发生因配置变更错误带来的事故。而此项目带来从未有过的全域迁移,全域协作,大范围变更&发布,风险不可谓不高。在此过程中,通过了许多方式来保障事项的落地,其中比较关键的点,也是项目成功的关键点包括:

在贵州迁移项目中,比较突出的历史债务处理有:

ZK的不稳定已导致云音乐最高出现P1级事故,在贵州迁移项目中,因网络环境、机房环境、迁移复杂度等因素,ZK服务挂掉的概率极大,因此必须不能对其强依赖。

Nydus作为云音乐主力MQ产品,相较开源Kafka有更好的监控、运维等能力,Kafka在云音乐在线业务中已不再推荐使用。在贵州迁移中,MQ也需要进行两地切换/切流。

主要收益:

在推进层面:

在贵州迁移项目中,需要做大量的配置迁移、变更。其主要为:机房名、集群名、机器IP、机器Ingress域名的变化。而这些在配置中心、代码、自动化脚本、JVM参数中均有存在,此外,IP黑白名单还可能涉及到外部厂商的改造变更。

在具体推进上,采用自动化扫描+人工梳理结合,并辅以标准化改造指引文档。

核心应对杭州与贵州跨机房30msRT和长传网络不稳定的风险。对循环调用、不合理依赖、强依赖进行改造。

因贵州需要与杭州同等容量部署,可能存在资源不足的情况。对此需要:

在此次迁移中,存在较多的元信息不准确的问题,例如:

以上问题在迁移中,通过脚本、1对1沟通确认、手动梳理等多种方式进行了临时处理,在贵州迁移后,仍需再全面的系统性规划。

在迁移中期,我们进行了自动升级平台建设,基本支持以上升级流程自动化。

因此次迁移涉及全部的应用在不同环境的部署,全部人工操作的效率过低,因此我们在非线上环境均由脚本自动化部署,而测试环境由于维护不足,部署成功率较低。

当前贵州迁移时整体会按照应用维度进行迁移、切流到贵州。因此对于中台租户型应用、多地域注册类型的应用需要拆分。

除了以上提到的历史技术债务处理和新增系统性风险,公共技术侧大都提供了标准化的接入、改造治理方式。例如:

在监控告警层面,主要提供了:

在贵州迁移期间,基于以上风险,主要准备如下应急预案:

业务技术侧方案重点包含但不限于:

此次贵州迁移,在各应用标准化治理之后,通过系统批量工具完成贵州各项环境的搭建、测试环境的批量部署。

在测试演练开始前,我们重点做了如下准备:

因测试环境和线上环境仍存在较大的差异,需要摸清线上真实情况,在演练原则和演练目标上均较测试环境演练有更严格、细致的要求。

在云音乐主站正式切流前,先对云音乐旗下独立App进行了线上搬迁验证,保障云音乐迁移时的稳定性。

SOP即标准作业程序(StandardOperatingProcedure),源自传统工业领域,强调将某项操作以标准化、流程化的方式固化下来。

SOP平台将标准化、流程化的操作进行系统化呈现,并对接各中间件平台,实现操作效率的提升。在贵州迁移过程中,能够实现多部门信息同步、信息检查,并显著降低批量操作的出错概率、执行效率,降低人因风险。同时也可为后续其他大型项目提供基础支撑。

自动升级平台串联代码升级变更、测试部署、测试验证、线上发布、线上检测,实现升级生命周期重要节点的自动化。在贵州迁移过程中,显著提升整体升级、验证、部署效率。同时可为后续的大规模组件升级、组件风险治理、组件兼容性摸查、Sidecar式升级提供基础支撑。

精准筛选出每项事宜涉及的范围,是顺利进行各项风险治理的前提条件。在此次贵州机房迁移中也暴露出元信息建设不足的问题。

在贵州迁移过程中,做了历史技术债务处理、标准化接入方式,后续可针对各项元信息的创建、更新、销毁进行标准化、系统化建设。例如:

目前应用可做配置的入口有:配置中心、properties文件、props文件、JVM参数、硬编码。不同的中间件提供出的配置方式也各有不同,所以各应用的配置比较五花八门。因此可做如下改进:

在贵州机房迁移中,除了SOP平台和自动升级平台的系统沉淀外,业务中间件、Horizon部署平台都提供了一定的工具支撑,从而在一定程度上提升了整体迁移的效率。在之后,随着对效率、系统间融合的要求的提高。需要继续在功能、性能、稳定性等多个层面,继续对批处理、系统间融合进行系统化建设。例如:

在贵州迁移中,ZK的问题相对突出,对此也投入了比较多的人力去排查、解决以及推进风险治理。后续仍需要在ZK的稳定性、可维护性上探讨进一步优化的可能性:

尽管在贵州机房迁移中,做了大量的稳定性保障措施,但依赖每个研发对各自负责领域的理解、运维能力。是否能在团队管理、设施管理、服务管理、稳定性管理、架构设计等多方面,探索出一套可持续的长效保障机制?并进行一定的稳定性系统化建设?从而避免点状问题随机发生。

贵州迁移中涉及大量的组件变更与发布,以及业务侧组件升级与治理。组件可以从生产侧和使用侧进行分析,而组件生命周期主要由2条主线贯穿:

THE END
1.您好在心遇这种正规聊天平台聊天获得收益算诈骗吗您好,诈骗是指以非法占有为目的,虚构事实或者隐瞒真相的行为。https://china.findlaw.cn/ask/question_64204693.html
2.心遇聊天软件女的能赚钱吗?(揭秘女性用户在心遇上的收益)心遇聊天软件女性用户收益揭秘 在当今的数字时代,心遇聊天软件作为一款主打陌生人社交的平台,凭借其独特的社交模式和多样化的互动方式,吸引了大量用户的关注。 兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设https://www.jianshu.com/p/dae29352c00e
3.心遇免费聊天是真的吗?心遇免费找对象会盗钱吗?心遇作为交友的APP,不仅可以帮你免费找女朋友,大家也可以和心仪的对象在上面聊天,不过也有人疑惑在心遇同城交友免费吗?会不会损失财产吗?下面就和小编一起来看看吧。 心遇免费聊天是真的吗? 在1对1的聊天页面拨打语音通话或视频通话,拨打方需要付费,被拨打方根据会话时间获得一定的系统奖励收益,具体付费金额和奖励收https://www.qqtn.com/article/article_327510_1.html
4.交友APP诈骗黑幕:有组织手把手传授引诱充值套路合聊平台被骗如果想做聊天员代理,知道收益如何。一张截图显示,该公会的代理可分为6个级别。其中一级代理的团队业绩需要在0元到5000元之间,提成比例为15%,六级代理的团队业绩则需要高于50万元,提成比例也相应提高至25%。 一个名为“博弘传媒”的聊天公会,只和“心遇”APP一个平台合作,该公会管理员还表示,他们并不从聊天员处https://blog.csdn.net/xingxincsdn/article/details/127216062
5.心遇女的聊天能分多少提成心遇女的聊天能分多少提成与聊天方式、回复时长、是否真人认证等因素有关。具体如下: 1、文字聊天。根据用户的权益以及消息回复时长给积分,若T≤2分钟,收益方可获得0.7积分;若收益方当前未进行真人认证,则收益积分对应减半;同时,收益规则会不定期调整,具体以实际收益页面展示为准。另外,也有说法认为文字聊天一句话10https://m.51dongshi.com/eedfrcrcegcdd.html
6.心遇APP中怎样查看我的收益心遇APP中怎样查看我的收益 简介 心遇APP中怎样查看我的收益?下面小编教您如何操作,具体步骤如下:工具/原料 华为nova5z HarmonyOS3.0.0 心遇6.0.17 方法/步骤 1 第一步:打开手机心遇APP,点击右下角【我的】2 第二步:在出现的页面中点击【主播数据】3 第三步:在出现的页面中点击【我的收益】4 第https://jingyan.baidu.com/article/ac6a9a5ef963b46a653eac87.html
7.女生聊天赚钱的软件最赚得多的平台通过在平台上进行聊天互动,用户可以获得相应的收益。每一种聊天方式都有对应的价值收益,只要达到平台规定https://ask.zol.com.cn/x/15503378.html
8.Android启动优化实践:将启动时间降低50%51CTO博客值得注意的是,我们并没有去除 loading 页,当判断用户未登录的情况下,就会进入 loading 页面,进行原有的打点和登录路由的工作。由于在绝大多数情况下,用户都是在已登录的情况下使用应用,所以这么做的收益最大并且修改成本最小。 为了实现这个流程,我们需要处理好首页实例和首页任务编排的问题: https://blog.51cto.com/u_16163480/6534902