前语

新能源轿车现已成为我国轿车商场再次兴起的要害支柱,跟着新能源轿车商场的快速开展,不同类型的品牌造车厂商呈现出百花齐放的态势。极氪轿车是吉利控股集团旗下高端纯电轿车新品牌,2021 年 4 月极氪发布首款高端智能电动车型–极氪 001,大获商场好评,截至 2022 年 12 月,001 车型累计交给量打破 7 万台。接连 3 个月问鼎自主品牌 30 万以上奢华纯电车型销量冠军。

极氪坚持不止于车的服务体会,除了为客户供给杰出产品的一起,还经过极氪 APP 与用户树立连接。极氪 APP 推出线上社区、订阅出行、好物商城、极氪日子等多元立异行动,完结了极氪产品的全生命周期办理以及用户旅程的全场景掩盖。从用户想要了解相关车型,到有意向进行购买、提车运用、共享感触以及售后问题迅捷处理方案等各种环节的运用场景,都被集成到了这款 APP 之上。

极氪汽车 APP 系统云原生架构转型实践

“我之前对极氪轿车并不是很了解,极氪这款软件对我的协助十分大,我觉得这是很好的,一起也在极氪软件里面看到了自己想要买的车,关注极氪现已一年了,不只可以了解极氪轿车常识还能得极分换产品期望极氪多多上新实用产品

这是摘自 Apple App Store 的用户评价。极氪 APP 既是用户智能控车随时随地把握车况的车主服务好帮手,又能供给购买用车好物、共享社区活动的极致出行用车体会,便于用户获取触手可得的用车信息,让出行变得更加快捷风趣。

云原生架构探究的实践历程

云原生技能开展

跟着极氪数字事务的飞速开展,背面的 IT 技能也在不断更新迭代。极氪极为注重客户对服务的体会,并将体系安稳性、事务功用的迭代功率、问题的快速定位和处理视为构建中心竞赛力的柱石。 公司副总裁刘昊表明,为快速响运用户的需求,例如缩短一辆车的制作周期、快捷滑润地晋级轿车操作体系等,企业从产品到用户体会到商业模式都需求立异。然而消费互联网和传统工业开展的经验缺乏以彻底满意工业互联网对本钱、功率、质量等方面的高要求。云原生是一个确定性的技能开展趋势,能有效推进工业开展,驱动企业活泼革新。极氪将继续投入,将云原生才干赋能到企业内的研、产、供、销、三电等更广泛的事务范畴。

这些事务现状和云原生架构带来的中心才干不谋而合。 在极氪体系改造上云的过程中,围绕着云原生技能体系,推进极氪的各条事务线进行技能晋级改造,加快数智化开展进程。在技能选型上,极氪始终遵从着2条准则:

一是全面拥抱开源敞开的干流技能规范: 运用开源敞开的干流技能规范,可以确保技能方案的成熟度,更快捷地从开发者社区获取技能资源和最佳实践,也可以协助企业更好的招募技能人才。此外,这样的战略也防止了被封闭技能体系和特定云厂商所绑缚。软件技能的国产化以及自主可控,也是需求考虑的点。

二是尽可能利用云的价值: 将安稳性确保、底层技能完结、技能组件保护、弹性弹性等非功用性需求尽可能交给云厂商处理,让技能团队将更多的精力投入到事务立异上。

这 2 个准则并不矛盾,相反,它们之间可以十分好的融合,这也是一切运用云核算的企业用户都值得学习的架构选型规范。比方 Kubernetes 是典型的满意开源敞开规范的技能规范,阿里云供给的 Kubernetes 产品可以简化用户的搭建本钱,更好地与云核算资源进行集成。一起用户仍然可以依据开源 Kubernetes 的规范协议与 API 运用云产品,这便是 2 条选型准则彼此融合的最好体现。

事务容器化

云原生趋势下,Kubernetes 毫无疑问现已成为了企业新一代云 IT 架构的基础设备。从 2021 年开端,极氪就敞开了微服务和容器化改造计划,将 IT 体系的底座逐渐从虚拟机迁移到 Kubernetes。

在 Kubernetes 渠道的挑选上,依据技能选型的 2 条准则,极氪挑选了阿里云容器服务 ACK 。ACK 以阿里云牢靠安稳的 IaaS 渠道为底座,向下封装了 30+ 款云产品,形成了主动化运维和云渠道交互的新界面,从而进步企业事务体系的弹性和主动化运维才干。

极氪汽车 APP 系统云原生架构转型实践

依据容器服务 ACK 的易用性以及集成才干,极氪 IT 体系容器化改造作业比料想中的要顺畅得多。关于每一个事务体系而言,从虚拟机迁移到 Kubernetes ,仅仅是底层的承载发生了改变,不会涉及到太多的改造本钱。在容器化改造的过程中,当极氪技能团队遇到疑难问题的时分,可以第一时刻从阿里云取得最佳实践辅导,包括集群规划、渠道运维、运用适配、安全防护、可观测等多个方面,这也更进一步的进步了容器化改造的速度。

现在,极氪 APP 以及 SCRM 等体系,现已 100% 依据 Kubernetes。相比传统的依据虚拟机布置方法,容器化协助极氪在资源利用率上进步了 20%,在运维功率上进步了 50%。 在 2022 年 9 月经过了中国信通院云原生技能架构成熟度评价, 一起极氪的技能团队也在容器化改造的过程中,把握了办理超大规模 Kubernetes 集群的才干,并促成了更多云原生新技能的运用。

共同微服务架构

与容器化改造简直同步进行的是对微服务架构的共同。在此之前,极氪的各个事务单元多种技能栈并存,彼此之间彼此通讯杂乱度高,项目成员的交代往往要耗费巨大的精力,极大程度上阻碍了数字化转型的进展,因而微服务架构共同势在必行。

极氪经历了 2 年多时刻完结了这一项艰巨的作业,尽管投入精力巨大,但收益是马到成功的,而且可以继续发挥效果:不论是内部团队还是三方 ISV ,在技能结构上都有共同的规范可以遵从,各团队共享技能栈后,研制功率成倍进步。

关系到未来多年的 IT 战略,在微服务架构的选型上,高敞开性、高成熟度、高遍及度这三条规范缺一不可,考虑到极氪以 Java 为首要开发语言,Spring Cloud Alibaba 就成为了微服务结构的最佳挑选。

极氪汽车 APP 系统云原生架构转型实践

Spring Cloud Alibaba 致力于供给微服务开发的一站式处理方案,包含开发分布式运用微服务的必需组件,方便开发者经过 Spring Cloud 编程模型轻松运用这些组件来开发分布式运用服务。这些组件一部分以 SDK 的方法集成到代码中,一部分以中间件的方法独立作业,后者往往可以挑选托管版云产品,以下降开发者的作业量。比方阿里云微服务引擎 MSE 就进步了开箱即用的注册装备中心 Nacos,以及云原生网关。

安稳性与功率问题益发凸显

可以料想的,跟着极氪 APP 的上线,注册车主数量呈现出了爆发式的添加,用户的运用场景也不断扩大。在这个过程中,APP 的用户运用体会变得益发重要,怎样在用户规模高速添加的一起可以确保 APP 的安稳性、敏捷性, APP 的微服务开发功率怎样确保,这些都给研制团队带来了必定的应战。

事务接连性差短少容量规划

远程控车、在线地图、3C 商城等 APP 中心服务对事务接连性要求十分严苛,均需确保 7*24 小时继续在线。特别是面临旺季出售活动、新车型发布、突发热门事情等状况, APP 面临着高并发大流量压力,常常会发生功用失效、页面打不开、推迟过高,乃至 APP 彻底无法拜访的异常,对用户体会造成严重影响。

功用版别发布迭代速度慢

跟着用户场景需求的添加,越来越多的功用等候发布上线,对迭代频率的要求越来越高,但由于 APP 服务端短少全链路灰度发布才干,为了确保事务安稳性,每次发布客户只能挑选在清晨的事务低峰期进行,开发、运维、测验同学苦不堪言,急需完结随时发版无损发布才干。

技能架构短少全体规划

公司成立之初,为了完结 APP 快速上线,关于技能架构全体规划考虑缺乏,体现在事务间高度耦合、体系链路过长、技能完结规范不一、云产品选型不合理等诸多问题,例如经过调研制现某中心接口恳求链路过长,导致推迟颤动率很高,影响用户运用体会。

研制团队意识到,跟着事务开展的向好,这些应战也会也越来越大。在事务快速开展中,既要确保好已有事务的安稳性,又要快速地迭代新功用,而且需求确保开发的功率并不会跟着事务添加而大幅下降,毕竟存在团队招聘节奏跟不上事务开展的问题。总结来说,团队处理 APP 运用快速迭代演进的要害便是处理安稳性与功率的问题。

  • 安稳性: 用户数多起来之后,体系的安稳性就显得比较重要,无论是用户在某段时刻遇到异常报错增多,还是某一个功用点继续性地报错,再大到体系有一段时刻彻底不可用,这些都会影响产品在用户中的口碑,终究这种彻底不可用的场景,乃至还可能成为微博等社交网络上的言论热门。

  • 功率: 跟着用户的增多,相应的需求也越来越多,事务场景也越来越杂乱,在这个时分测验可不是内部测验就能掩盖一切的场景,需求加大在测验上的投入。尽管功用需求越来越多,但是迭代的速度却要求越来越快,由于商场中现已有不少竞赛者,咱们竞赛的一个要害便是速度,事务更需求跑得更快,开发节奏要快,测验节奏要快,发版节奏也要快。

针对以上问题,研制团队依据事务架构从流量进口到微服务再从全局视角进行微服务的体系优化与调优,围绕着本钱、安稳性以及功率进行深化的微服务化探究。

极氪汽车 APP 系统云原生架构转型实践

事务链路进口晋级

极氪架构中的网关架构并不共同,各种网关都起了必定的效果。咱们可以从上图中看到流量网关、API 网关、微服务网关等众多网关存在,他们具有了安全(WAF)、API 办理、流量分发等效果,考虑一下,假如一个恳求链路经过多个网关,那么这个事情对本钱与安稳性都有必定的应战。

在这个时分 MSE 云原生网关呈现在研制团队的视界中,云原生网关将流量网关(Kubernetes Ingress、Nginx)和微服务网关(Spring Cloud Gateway、Zuul 网关等)二合一,下降 50%资源本钱,一起缩短了恳求时刻,下降运维杂乱度。

作为面向南北向的公网网关,运用 Waf 防护异常流量是很惯例的需求,而且跟着互联网环境变得越来越杂乱,用户对防护的诉求是继续增强的,惯例做法是将流量先接入Waf安全网关,过滤后再将流量转发给流量网关,终究抵达微服务网关;那么晋级云原生网关后,进一步需求考虑的事情是,进口流量的安全才干是否还可以具有?

云原生网关经过内置 Waf 模块直接对接阿里云的 Waf 云产品,使得用户的恳求链接只经过云原生网关就可以一起完结 Waf 防护才干,大大下降了网关的运维杂乱度,图示如下:

极氪汽车 APP 系统云原生架构转型实践

网关作为链路流量的进口,除了安全才干之外,还承接着进口流量/容量的办理、高可用等职责。

微服务高可用探究

无损上下线,进步微服务安稳性

客户 APP 运用运用的是微服务架构,当进行事务发版、弹性扩缩容等场景时,会遇到恳求失利率升高,POD 不断重启等问题。针对此问题,结合 MSE 产品才干,经过运用下线过程中自适应等候和主动告诉、运用上线过程中就绪查看、服务预热等手段,完结微服务无损上下线发布,有效规避了发布过程中的流量丢失,下降事务拜访失利风险。一起经过引进MSE流量防控才干,针对中心事务场景落地相应技能手段,如接口限流降级、MQ 削峰填谷、数据库慢 SQL 限流管理等,进步服务全体安稳性。

水平拆分,进步事务弹性弹性才干

跟着事务的快速开展,极氪 APP 原架构下容量缺乏问题益发杰出,在面临新车发布、出售活动、突发热门状况时,无法快速进行水平扩展,而且很多中心事务库都放在同个数据库实例上,简略呈现“一损俱损”。阿里云服务团队引荐运用 Polardb-X 产品,将事务库逐一剥离出来,并经过对事务大表水平拆分处理单表过大问题,进步数据库层面水平弹性扩容才干。另外针对微服务弹性才干缺乏的痛点,输出多可用区节点弹性弹性、HPA、CronHPA 等容器弹性方案,进步中心服务在流量突发状况的应对才干。

流量防护与容错

想象一下,在事务高峰期,当某些下流的服务供给者遇到功能瓶颈,乃至影响事务。极氪 APP 团队正是遇到了这样的问题,在某次架构迁移的过程中,遇到意料之外的慢调用,拖慢了体系,导致全体安稳性的颤动。怎样防止这类问题?需求对部分非要害服务消费者装备一个熔断规矩,当一段时刻内的慢调用份额或过错份额到达必定条件时主动触发熔断,后续一段时刻服务调用直接返回 Mock 的结果,这样既可以确保调用端不被不安稳服务拖垮,又可以给不安稳下流服务一些“喘息”的时刻,一起可以确保整个事务链路的正常作业。

突发的事情是十分多的,那么怎样可以做好体系的高可用,让体系在不确定的状况下作业在最优解上?极氪 APP 团队先测验对 APP 大的层面做微服务安稳性管理,防止呈现 APP 全体宕机的状况。然后对中心服务和接口做整理,摸清上下流,对强依靠解耦和改造,而且依据监控、可观测数据,确认中心服务装备什么合理参数。在这之后,多次对服务进行限流降级装备以及演练、优化,总结场景实践规律,拟定恰当的技能规范。

开发测验功率进步:在线服务测验

极氪开端在云上进行布置、发布、测验之后,他们遇到了如下问题:

  1. 布置完运用之后,运用是否健康?当线上呈现了一个问题,怎样可以快速建议一次恳求,进行复现。

  2. 在服务上线之前,怎样快速地验证前史功用是否都正常?

  3. 大版别上线前,修正的内容对功能有什么影响,上量之后会不会服务压力过大?

为了做到安全阻隔,研制环境、测验环境、预发环境、出产环境布置在不同的专有网络 VPC 内,假如自建测验东西,需求处理测验东西到不同环境的网络互通问题,企业 IT 人员明明只想要一个简略的测验东西,却由于上云之后,要处理杂乱的云上网络拓扑,远远没有结束,为了可以在办公网运用该测验东西,还需求确保该测验东西可以被办公网拜访,此时又面临着网络安全的检测。

云上的服务测验、压测便是为了处理这个问题 凭借 FC 的弹性核算才干,一方面打通了云上网络打通的问题,另一方面随用随弹,最大程度处理资源利用率的问题;凭借服务契约供给的内容,服务测验功用可以主动填充测验参数,测验时只需求进行值的修正,就可以建议测验。还可以依据提示将服务测验进行串联,从而到达主动化回归、压测的意图。

全链路管理

全链路灰度发布,完结白日随时发版

跟着极氪轿车出售越发火爆,其注册用户和每日活泼用户快速添加,需求支撑的事务场景和新功用也越来越多,平均两三天一个小版别、半个月一个大版别的晋级频率。为了不影响白日事务高峰,每次发版只能挑选在清晨事务低峰期进行,想象一下假如研制/运维人员每次都集中在晚上发布,那么这些参加发布的同学第二天的作业功率将会受到影响;假如晚上挑选较少的人参加发布,那么当出问题的时分止血措施很可能会来不及实施,故障职责也欠好区分。

阿里云服务团队协助极氪团队一起拟定和落地全链路灰度发布方案,经过布置灰度版别,并依照流量份额或客户特征进行灰度验证,验证结束后进行出产发布并切流,满意了客户小版别白日随时发布的诉求。针对客户中心事务链路上多个微服务一起需求发版的场景,依据MSE云原生网关和流量灰度打标来完结多事务的全链路灰度,覆 CDN、网关、MQ、装备、数据库等灰度场景,经过这种方法让客户在不需求更改任何事务代码的状况下完结多事务白日发版,一起经过逐渐流量放大进行验证,如呈现问题可及时回切流量,下降了白日发布可能导致的安稳性风险。一起经过改造云效流水线,协助客户完结中心事务主动化发布,更好地进步布置功率。

开发环境阻隔

微服务的迭代存在十分多的依靠,事务的开发人员无法在本地完结开发,有必要运用一整套完好的环境,才干正常的进行开发和联调。极氪 APP 体系中的运用数目稀有十个,假如每一个开发环境都保护一整套 APP 体系所具有的微服务环境,需求耗费很多的人力以及资源的本钱。

抱负中的开发环境逻辑阻隔应该是这样的,依据 git-branch 的规划理念,保存一套安稳的基线环境,各个分支的开发同学经过逻辑环境阻隔的方法快速拉起需求开发的 feature 环境。咱们只需求保护一套完好的基线环境,在添加 feature 开发环境时,只需求单独布置这个 feature 所涉及到改动的运用即可,而不需求在每个 feature 环境都布置整套的微服务运用及其配套设备。其中,基线环境包含了一切微服务运用,也包含了服务注册中心、域名、SLB、网关 等其他设备,而 feature 环境中只包含了这个 feature 中需求修正的运用。这样保护 n 套 feature 环境的本钱,就变成了加法,而不是原来的乘法,由 n m 变成了 n + m。这样算下来相当于零本钱添加 feature 环境,这样咱们就可以放心肠扩容出多套 feature 环境。极氪团队运用微服务管理中的全链路灰度方案完结“流量泳道”,做到快速拉起阻隔的开发环境,在进步研制功率的一起节省了一笔不菲的本钱开支。

极氪汽车 APP 系统云原生架构转型实践

全链路压测与调优

为了摸清楚 APP 可以实在承载的并发容量,需求对中心事务接口进行多轮全链路压测和调优。关于体系容量评价、优化与防护首要归纳为四点:压测、观测、限流、扩容。体系高可用体系建设有必要从实践中出真知,极氪团队经过压测对 APP 服务才干进行功能摸底,评价功能是否能承受。假如功能不能承受的话那么需求对功能进行扩容和优化;功能契合预期,那么要装备对应的限流规矩,以防超出预期的流量将服务打垮。

整个压测演练的过程中需求做到边压、边看、边限、边扩,不断对对数据进行反馈调整,终究树立确保事务体系高可用的体系。经过全链路压测,不只让咱们对 APP 体系的功能、容量做到心中稀有,更增强了整套出产体系晋级至云原生架构的信心。

未来展望

极氪 APP 进行云原生架构晋级探究,进步了 C 端事务体系的安稳性和敏捷性,为冲击更高的销量目标供给了坚实的技能支撑。这仅仅是探究的开端,跟着云原生架构的深化,事务的可用性将继续增强,从而为轿车终端用户带来更好的出行体会和趣味。