关于云原生:高德-Serverless-平台建设及实践
作者 | 邓学祥(祥翼)起源 | Serverless 公众号 高德从 FY21 财年开始启动 Serverless 建设,至今一年了,高德 Serverless 业务的峰值超过十万 qps 量级,平台从 0 到 1,qps 从零到十万,成为阿里团体内 Serverless 利用落地规模最大的 BU,这两头的过程是怎么样的?遇到过哪些问题?高德为什么要搞 Serverless/Faas?是如何做 Serverless/Faas 的?技术计划是什么样的?目前停顿怎么样?后续又有哪些打算?本文将和大家做一个简略的分享。 1. Why-高德为什么要搞 Serverless高德为什么要搞 Serverless?背景起因是高德 FY21 财年启动了一个客户端上云我的项目。客户端上云我的项目的次要目标是为了晋升客户端的开发迭代效率。 以前客户端业务逻辑都在端上,产品需要的变更须要走客户端发版能力公布,而客户端发版须要走各种测试流程、灰度流程,解决客户端解体等问题,目前的节奏是一个月一个版本。 客户端上云之后,某些易变的业务逻辑放到云上来。新的产品需要在云端来开发,不必走月度的版本公布,放慢了需要的开发迭代效率,离产研同频的现实指标又近了一步(为什么要说“又”,是因为高德之前也做了一些优化往产研同频的方向致力,然而咱们心愿云端一体化开发能够是其中最无效的一个技术助力)。 1.1 指标:客户端开发模式--端云一体尽管开发模式从以前的端开发转变为当初的云 + 端开发,开发同学应该还是原来负责相应业务的同学,然而大家晓得,服务端开发和客户端开发显然是有差别的,客户端开发是面向单机模式的开发,服务端开发通常是集群模式,须要思考分布式系统的协调、负载平衡、故障转移降级等各种简单问题。如果应用传统的服务端模式来开发,这个过渡危险就会比拟大。 Faas 很好地解决了这一问题。咱们联合高德客户端现有的 xbus 框架(一套客户端上的本地服务注册、调用的框架),扩大了 xbus-cloud 组件,使得云上的开发就像端上开发一样,指标是一套代码、两地运行,一套业务代码既能在客户端上运行,也能在服务端上运行。 高德客户端次要有三个端:IOS、android、车机(类 Linux 操作系统)。次要有两种语言:C++ 和 Node.js。传统地图功能:如地图显示、导航门路显示、导航播报等等,因为须要跨三个端,采纳的 C++ 语言来开发。地图导航根底之上的一些地图利用性能,如行前/行后卡片、举荐目的地等,次要用 Node.js 来开发。 FY20 财年淘系前端团队开发了 Node.js Faas runtime。高德客户端上云我的项目,Node.js 的局部就采纳了现有的淘系的 Node.js runtime,来接入团体的 Faas 平台,实现 Node.js 这部分的一些业务上云。2020 年十一期间很好地撑持了高德的十一出行节业务。 C++ Faas 没有现有的解决方案,因而咱们决定在团体的基础设施之上做加法,新建 C++ Faas 根底平台,来助力高德客户端上云。 ...