
▏摘要
为保障核心系统安全、稳定、连续运行,中国联通启动集约化核心系统的异地双活建设,各多活节点数据始终保持一致,当某一个城市数据中心不可用时,可随时切换到另外一个城市的数据中心,消除核心系统的单点隐患,实现故障分钟级快速恢复,保障终端用户的使用感知。异地双活建设有效扩展双活应急场景,系统在运营实践过程中,在容灾场景覆盖度、冗灾效果等方面均获得显著效果。
▏关键发现
• 设计业务双活分流规则时,中国联通通过多维度评价指标体系考虑分流规则,包括技术栈、单元化、容灾等级、系统规模、系统耦合度、资源池等,通过对多维度的分析设计双活分流规则,并对应用进行必要改造,例如微服务化、解耦业务长度,将业务逻辑封闭在单元中,避免跨地域操作;
• 并非所有业务都要双活改造,企业需要考虑成本产出比,长尾业务的使用量不高、涉及用户不多,从成本考虑,可以将长尾业务放在中心节点;对于强中心业务,需要在一个点完成读写然后同步到不同多活节点,这一类业务也需要由中心节点统一完成;
• 异地双活的关键点是数据同步,中国联通结合实际网络带宽、业务场景等考虑数据同步工具,实现数据的强一致性或弱一致性,选择实时或异步等方式进行同步,降低风险概率。例如数据库、订单库需要进行实时的双向同步,参数库、产品库与强业务中心类似需要放在中心库上,采用单向同步方式,由中心库完成读写,然后复制在双活结点;各类中间件采用双写方式,将数据写到应用所在的数据机房,同时异步写到不同地域的机房,实现业务的真正双活。
分享专家:王晓峰,联通软件研究院公共平台与架构研发事业部副总经理
作者:沙丘社区分析师团队
01
案例企业
中国联合网络通信集团有限公司(以下简称“中国联通”)于2009年1月6日由原中国网通和原中国联通合并重组而成,公司在国内31个省(自治区、直辖市)和境外多个国家和地区设有分支机构,以及130多个境外业务接入点,拥有覆盖全国、通达世界的现代通信网络和全球客户服务体系。
02
项目背景
中国联通集约化业务系统上线后,4G业务全部由核心业务支撑系统cBSS统一支撑,从零用户起步,逐步升级演进,支撑现在中国联通全部的业务和用户。随着系统能力不断增强,原有在省分公司的各个核心系统逐步割接迁移到cBSS系统中,最终实现省分公司核心系统的全部下线。截至目前,cBSS系统支撑中国联通全部4.2亿用户,核心业务的受理、计费、出账全部由统一cBSS系统支撑。
核心系统的重要性毋庸置疑,一旦出现问题,会影响全国用户。因此,中国联通软件研究院按照规划陆续启动集约化核心系统的异地双活建设,消除核心系统的单点隐患,进而实现故障分钟级快速恢复,保障终端用户的使用感知,确保系统可用性。
cBSS集中系统已成为中国联通生产运营和业务发展的最核心系统,系统承载4.2亿+用户,是全球规模最大的运营商支撑系统。
为了支撑整体的用户规模,中国联通针对系统稳定在应用侧采取了系统优化、应急预案等多种保障措施,依然无法彻底解决系统安全问题。例如单机房或单DC基础设施出现故障时,承载的核心系统必然会遭到中断,系统受到高可靠性挑战,对业务安全提出更高要求。机房目前部署在北京亦庄,随着业务快速发展,单DC的基础设施对系统扩展造成限制。此外,冗灾处理能力不足,面对极端地域级灾难情况下,仍然会导致大面积业务终端和数据恢复困难。因此,中国联通急需建设核心应用异地多活冗灾系统。
业务系统多活建设前,中国联通进行了投入产出比的综合考量,期望收益目标有三方面,高可用冗灾、系统容量扩展和新技术创新应用保障,建设投入成本也包括三方面,基础设施投资、业务应用改造投资、运营支撑体系重构投资。
第一,异地冷备。该种方式可以保障数据安全,但某一节点发生故障时,难以保证切换可靠性,用户体验中断。
第二,同城双活。在这种模式下,数据还是由双活的两个节点访问同一个数据库,对一套数据库进行读写操作,同时通过同步机制复制一份作为只读节点。这种模式下,应用改造的工作量较小,但无法做到跨省机房间的无缝切换。
第三,两地三中心。这种模式下,用户随机访问不同的数据中心,数据通过异步复制方式放到异地数据中心,最大限度保证数据安全,当一个城市出现极端灾害情况下,数据依然可以保证完整。但在极端情况下的用户访问依然会产生终端,需要大量时间进行恢复。
第四,异地多活。这种模式下,各多活节点的数据始终保持一致,用户正常情况下作为负载均衡访问不同城市的数据中心,当某一个城市数据中心发生问题不可用时,可以随时切换到另外一个城市的数据中心,对业务的影响在分钟级,且保证数据安全。这种方式对各种灾害的抵抗能力最强,但同时对技术复杂度提出更高要求,需要进行基础设施层面、数据库层面、应用层面的改造和扩容工作。
参考应用容灾发展的各种解决方案,结合中国联通侧具体需求以及基础设施现状,确定采用应用多活建设模式,分两步走,第一步先完成异地双活构建,第二步逐步迭代优化并扩展为异地多活模式。
中国联通cBSS集约化系统的规模和复杂度非常高,涉及业务服务3300个、数据库实例2300+,大量使用分布式数据库,建立多活能力时,如何解耦系统并保障整体系统平稳演进是系统性难题。
中国联通核心业务系统架构演进历程如下:在支撑2G、3G业务时,更多是分省建设,如果一个节点出现问题,影响的用户最多是一个省,规模可控;发展到4G、5G时代,系统完成全国、全业务集中,省里已经没有任何核心系统,一旦系统出现问题,就会对全国用户产生影响,同时系统架构进行了全域化设计,具备向双活架构演进的基础条件。
围绕异地双活系统建设,中国联通期望达到以下三个目标:
第一,提升核心系统容灾能力。由冷备演进为多活互备,有效提高核心数据安全性;实现地域级容灾(如地震、雷击、病毒、火灾等地域级灾害)。
第二,保障核心系统业务连续性。电商接入出现突发峰值时,可以利用系统弹性能力进行快速扩展,突破单DC限制,期望数据不丢失,RPO≈0,恢复时间在10-15分钟,对用户影响可控。
第三,促进精细化运营水平提升。合理规划DC布局,双DC常态承载业务流量,与之前冷备相比,所有设备得到充分利用,降低运营成本,在双活环境下,新技术应用条件更好,发版时可以在单节点上先发布,版本出现问题时快速切流,保障用户体验不下降,当遇到重大活动时,可以在实际环境进行压测等,保证对突发流量激增情况的应对。
03
解决方案
中国联通异地双活系统建设的技术方案如下:
• 基础设施层:在异地新建数据机房、必要的网络和服务器。
• 应用层:首先,接入层实现按照规则进行流量导流,规则包括按集群切流、按省份访问ID切流、按照多系统和单系统切流,用户在使用系统时,首先判断用户所在省份,根据规则导流到不同IDC中;其次,进入应用层后需要判断访问中心情况,进行流量纠错,如果不落在中心节点,就切流到双活节点。
• 数据层:包括数据双向同步以及对中间件的双写动作。
在设计业务双活分流规则时,中国联通通过多维度评价指标体系考虑分流规则,包括技术栈、单元化、容灾等级、系统规模、系统耦合度、资源池等,通过对多维度的分析设计双活分流规则,并对应用进行必要改造,例如微服务化、解耦业务长度,将业务逻辑封闭在单元中,避免跨地域操作。
并非所有业务都要做双活,需要考虑成本产出比,长尾业务的使用量不高、涉及用户不多,从成本考虑,将长尾业务放在中心节点;对于强中心业务,需要在一个点完成读写然后同步到不同多活节点,这一类业务也需要由中心节点统一完成。
异地双活的关键点是数据同步,中国联通结合实际网络带宽、业务场景等考虑数据同步工具,实现数据的强一致性或弱一致性,选择实时或异步等方式进行同步,降低风险概率。例如数据库、订单库需要进行实时的双向同步,参数库、产品库与强业务中心类似需要放在中心库上,采用单向同步方式,由中心库完成读写,然后复制在双活结点;各类中间件采用双写方式,将数据写到应用所在的数据机房,同时异步写到不同地域的机房,实现业务的真正双活。

在进行双活部署时,需要重点考虑部署地点、网络、时延、带宽等,同时基于完全统一的技术架构实现双活部署。核心系统部署在北京、西安、无锡三地,离线业务放在呼和,需要考虑不同DC之间带宽和时延的情况。
双活依赖于数据库和数据库同步工具,当前中国联通核心系统使用多种数据库,面向不同类型的数据库,为了实现统一的数据库开通、运维、同步,避免应用侧使用数据库的复杂度,中国联通自研CDAS工具,集成12种商业和开源的数据库产品,实现统一纳管,形成统一运维、操作、安全管控、智能诊断、自动处理等能力,这些能力直接开放给应用侧,满足应用对数据库产品常态化管理,降低应用对专职DBA的需求。
CDAS工具包括常规数据库操作,如SQL转型、变更审批等;生产运维操作,如实时监控、一键巡检等;数据库分析,如容量分析、参数分析、资源分析、链接分析;数据库治理,如慢SQL治理、索引治理等。
在软件研发支撑体系方面,中国联通数字化研发平台构建了标准化、自动化、高质量的适应研发体系的DevOps工具,实现敏捷研发和持续交付。软件在经过流水线发布时,面临的测试区和生产区不同,生产区可能是多个机房、多个地域的环境,借助流水线,可以将制品按照业务规则准确发布到不同生产节点上,实现复杂系统版本的持续迭代。
核心系统双活分阶段建设,第一期主要实现客服系统异地双活建设,完成客服系统的全国集中,不但在系统层面完成集约化,在业务层面也实现了一定程度的集约,过去每个省都有自己的客服中心,双活建设后将全国各省的客户中心集中到4个客服业务中心,承担全国客服的话务量。用户咨询、投诉等问题都会接入到4个业务中心,然后业务中心访问智慧客服系统,保障系统7*24小时高可用。
智慧客服系统双活建设经历较长周期,2019年4月正式启动项目调研和方案交流,经过了近三年的建设和持续优化,目前双活能力已全部建设完成并取得明显效果。
前期在系统建设时就已经考虑到未来需要完成双活部署,同时在底层考虑到双活环境及平台搭建,保证数据可以进行双向同步工作。除了双活系统的实施外,更重要的是演练和验证,需要在不断的演练中缩短切流时间,提高系统可用性,降低用户感知。在切流过程中,可以分中心、分场景、分省切流。
日常冗灾使用过程中,例如系统升级时,可以先升级一个节点,将用户全部切流到另外一个节点,保证系统升级过程中不会中断,当升级完成、运转稳定时,再将流量切回到原来的节点。未来,中国联通将继续完善自动化切流能力升级。
04
价值与效果
通过双活系统建设,中国联通有效扩展电信行业特点应用的双活应急场景,在系统运营实践过程中,在容灾场景覆盖度、冗灾效果等方面,均获得显著效果,具体来看:
双活系统帮助中国联通提高系统切换能力,从切换场景上看实现单集群切换、单业务切换、多业务级联切换;从切换级别上看实现数据中心级、省分级、单业务级切换;从切换时长上看,数据中心内部故障5分钟可完成切换,跨数据中心级故障15分钟可完成切换。
2022年,中国联通共计完成15次生产故障切换,有效压缩故障时长超700min,同时对系统升级起到支撑,业务系统不间断情况下,完成3次平台设备下电升级。
同时,中国联通在实践中逐步形成高效敏捷的故障处理体系:
事前:场景梳理、注重演练。日常生产中梳理细化故障可能发生的场景,明确场景清单列表;加强切换演练,厘清切换脉络,积累经验,22年双活演练超18次。
事中:高效协同、快速切换。通过在线风险评估,评估故障影响范围、修复时长,决策是否启用双活切换;当需要决策切换时,软研+区域+省分共同参与,在线协同,快速实施双活切换,恢复业务。
事后:查缺补漏、日益完善。完善切换流程,缩短切换时长,降低影响范围;同时,分析定位故障根本原因,制定完善双活方案。