菜鸟乡村作为服务农村的新型物流业务,通过数字化技术,打造县域、乡镇、村三级共同配送服务体系,帮助乡村物流降本提效,提升乡村消费者快递服务体验;此外,还通过建设产地仓,形成产品分级品控、物流运输一体化,带动乡村农货上行,帮助农民增收。截至目前菜鸟乡村物流已服务 1000 多个区县,服务站点覆盖 30000 多个乡村。
面对高速发展的业务规模,除了不断迭代业务能力的同时,菜鸟乡村也在不断的夯实其技术底座和业务应用的高可用能力。菜鸟乡村的业务完全搭建在大公共云之上,采用了云原生架构,目的是为了借助成熟的云产品能力实现业务快速迭代。在调研多活容灾之初,菜鸟的同学就找到了阿里云原生高可用团队负责业务多活容灾 MSHA 的同学来一起探讨针对菜鸟乡村业务现状和未来业务规划的多活容灾方案。经过 2 个多月的时间,菜鸟乡村联合阿里云原生高可用团队,打造了智能化、集约化的云化同城多活物流系统和共同配送平台,实现了相关系统应用的同城多活容灾架构建设,具备了可用区级流量比例的秒级调控(<10s),以及故障场景的可用区全方位流量(HTTP、RPC、MQ、任务调度)一键切 0 能力,历次演练可用区级故障,一键切 0 生效时间均小于 20 秒,为菜鸟乡村业务提供了有力的容灾保障。对于一家高速发展的公司来说,IT 的建设与运维通常跟不上业务的高速发展与迭代,如何高效、低成本的保障业务稳定成为业务发展中面临的非常重要的挑战与风险。让我们一起来体验菜鸟的乡村的应用多活的改造实践之路。
-
核心业务系统仅在公共云的单一可用区部署,存在可用区级的故障风险。
-
保障业务快速迭代的同时,如何高效且低代价的落地容灾方案。
-
容灾方案的选型问题。目标是灾难发生时尽可能的缩短故障对用户的影响时长,快速恢复业务。
从容灾指标维度分析,在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)中最多只能同时实现两点,不可能三者兼顾。在容灾场景下,多数系统选择 AP 或 CP 模式。
从实施成本维度分析,稳定性和扩展性效益越高,所带来的实施成本也越大。
为了快速补全云上基建的单可用区风险,菜鸟乡村选择通过“同城双活”的容灾架构来快速补齐短板,提升业务的高可用性。
菜鸟乡村与阿里云一起针对所面临问题以及未来业务规划进行了深度沟通与研讨。结合业务容灾的诉求以及业务技术栈,阿里云制定出了同城应用多活架构的解决方案,方案要点如下:
-
可用区级应用双活。从 1 个可用区拓展到 2 个可用区,2 个可用区部署对等容量的应用。基于多活接入网关产品承接所有业务流量,并按照比例或精准路由规则将流量调度到不同可用区的后端应用,多个可用区部署的应用同时对外提供服务,实现应用多活。
-
微服务同可用区优先调用。基于多活产品 Agent 能力,支持开启 Dubbo/SpringCloud 同可用区优先调用功能,从而避免跨可用区调用带来的RT 增长。而当机房内健康的 Provider 数量低于配置的阈值时,则优先调用策略自动失效,避免同可用区 Provider 过少支撑不住上游的流量压力。
-
快速容灾恢复。当某一可用区发生故障时,基于多活产品的一键切流能力,首先通过多活接入网关将 HTTP 流量切换到另一可用区, 同时基于多活产品 Agent 能力将故障可用区内的 RPC(Dubbo/SpringCloud)、MQ(RocketMQ)、定时任务(SchedulerX/XXL-Job)客户端进行故障隔离,实现全局流量的快速容灾切换。
同城双活的搭建能否平稳的运行到线上,预发环境的验证和生产环境的容灾演练是尤为关键的环节。
-
Agent 启动验证。各类中间件的切 0 强依赖 Agent,必须确保 one Agent 能在所有业务容器正常启动、探针可正常上报至 MSHA 管控服务,且 Agent 启动后未影响到其他关联服务。
-
容灾切流能力验证。搭建同城双活是为了能在故障场景下及时切流,那么接入层切 0 能力验证、服务层切 0 能力验证、消息层切 0 能力验证、调度任务层切 0 能力验证、服务层流量封闭策略生效验证等都是必不可少的内容。
容灾演练则是在生产环境下,实际验证容灾的效果。生产环境真实演练选择在业务低谷期,整体验证内容跟预发环境类似,确保业务验证通过,各类中间件、消息、任务的走向符合预期。
菜鸟乡村应用多活的业务价值
借助于阿里云的同城应用多活解决方案,帮助菜鸟乡村实现了在较短的时间内业务同城容灾的目标,实现业务 7*24 小时不间断服务,即使单机房故障也能够分钟级恢复,最大程度保障业务的连续性。
同时菜鸟的业务高可用之路还未停止,如何引入混沌工程进行模拟真实故障注入来进行容灾演练,如何将双活切换进行常态化工作并时刻保鲜都是需要持续去完成的工作,多活容灾之路不止于此,高可用之路也不止于此。菜鸟乡村持续在路上。如今,云原生已经成为企业数字化转型的关键策略,由于应用需要快速开发和交付,这就促使企业采用云原生的方法来开发应用,以提高效率,并增加灵活性。对于身处云原生时代的企业和开发者而言,不仅需要采用云原生的手段来应对业务的高速迭代,更要关注云原生下的高可用建设,同时也建议以开阔的视野和开放的心态去拥抱云原生生态。1 月 11 日,在上海的云原生实战峰会上,阿里云智能研究员丁宇发布了《应用多活技术白皮书》,同时为了推动业界容灾的发展,建立云原生业务容灾标准,阿里云对外开源“应用多活”中间件:AppActive。
我有话说: