开发者社区> 开发者小助手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

高德 Serverless 落地实践

简介: FaaS在高德复杂场景如何落地?
+关注继续查看

为什么选择 Serverless


image.png

早期,高德将所有资源逻辑都置于因此它是一个重端App。它在端上依赖于厂商,更新时涉及到发版。业务变化快,但迭代很慢,迭代生命周期长,因而导致用户体验受损代码堆积量很大时,测试成本非常高。因此,很小的改动会引起很多大的变化。因此,客户端瘦身迫在眉睫。


此外,低电量和端云一体化也是大势所趋。最终,为了加速迭代,强化用户体验,让出行变得更加美好,我们决定对架构进行调整。


image.png

Serverless的第一个特点为环境统一早期的容器化硬隔离,而硬隔离带来的问题在于环境的统一需要通过模板实现,构建模板时间很长,因此无法在短期内做变更。且需要维护多套模板,运维成本非常高。


此外,在环境统一的情况下,依赖的系统底层版本如何维护也需要解决。容器实现较为简单,但过程比较复杂,它依赖于安全级别隔离CG groupNameSpace,依然需要构建一套自己的环境。


Docker实现了软隔离,有了Docker可以通过编排将线上环境搬到本地,通过 IDE 和 Docker 的挂载将线上环境完整带到本地,实现环境统一。而环境统一之后带来的好处在于运维更安全更方便,可以通过镜像直接拉起容器。同时,镜像还可以带来弹性伸缩的能力。


另外,Serverless能够根据业务的潮汐流量特点实现按需付费节省成本。


Serverless的架构多样化也与我们的业务需求相符。它提供了BaaSFaaS(粒度较小的函数,只代表请求中的点)、Sffserverless for front)以及BffBackend for front),其中SFFBff主要解决前端流量后端化的问题。


👉函数计算 FC :https://www.aliyun.com/product/fc?


image.png

我们将端和云区分开,将端上的计算和功能去放在云变为云端一体化。早期开发阶段的网关层基本 APIGateway聚合模式通过路由将接口聚合一起返回内容。随着服务越来越多,一个小的改动可能会对链路带来很大问题,测试成本也很高


而现在,我们通过 Serverless替代了这一层,从端请求到云上运行FaaS 函数,将单一的点拆解运行,可以根据实际流量自动扩缩,无需担心下线或改动影响服务状态


未来,我们会将大量计算放在云端,使客户端越来越小,性能越来越快,不仅能够实现端云一体化,还能实现产研同频,加快产品迭代速度。


解决了架构问题后,我们还需面临运维成本较大的问题Serverless架构的免运维仅仅面向容器和函数,每个场景每个流程运维依然需要通过体系化的模式构建,需要完善的CICD


image.png

CICD解决了可观隔离性。可观主要用于快速发现问题,包括日志收集鹰眼监控等。随着架构的升级,其粒度越来越小服务治理和环境治理的成本越来越高,可观测性的重要性也日益凸显。


代码管理方面,底层机制保证了 tag 和代码管理可以走不一样的流程。通过代码管理发布到环境,通过环境隔离的角度进行验证,验证后再通过权限手段控制安全性,并通过环境的隔离实现了安全模式


完善的 CICD 保证了产品的高效迭代,并且降低了试错成本。

image.png

有了完善的CICD后,即可进行通用型FaaS的平台架构设计。不同的团队之间相互调用FaaSSFF 通过调前端的 FaaS 进行请求解决了 API 聚合问题。业务场景往下是网关端上 FaaS(自己写逻辑) 再往下是业务层,业务层存在相互的之间调用填充,最终到业务FaaS


image.png

FaaS的周期通过Runtime 进行约束。该套Runtime 设计可以实现小时级的 FaaS 开发部署。


架构分为四层,最上层为User Faas通过 Runtime 叠加自己的逻辑即可;第二层为FaaS SDK 上行流量下行流量需要有统一的标准,否则会导致用户不稳定;第三层为Runtime实现并封装很多协议,比如长链接协议用于做中间件对外的代理,使用时只需要将 Runtime 引入即可;最底层FC 函数引擎, FaaS 最大的缺点在于冷启动需要加载状态、实例等,会耗费大量时间而有些状态可以进行屏蔽基于此,FC对其进行了优化,可以预留实例,实现秒起。


以上流程可以理解为有了一个 web server 入口实现函数,再通过平台调度,通过 CICD 流程发布,最终实现高效的迭代


image.png

稳定性保障负责保证日常情况下函数维护。上线三板斧分别为可灰度、可监控、可回滚。Serverless架构较轻,可以通过version控制其上线流程。比如优化前后的版本分别为version1version2,可以通过不同的流量机制进行分流,版本随时增加,增加版本时老版本依然可以正常运行


可观测性方面,可以通过完整的日志链路挖掘问题,也提供了智能化手段帮助发现业务问题。


预留实例解决冷启动问题,避免了冷启动对请求时长的影响。完备的流程化链路排查机制指可以在日志上打标签,通过日志在流程上快速挖掘问题定位问题以及大促保障

image.png

Serverless在高德的落地场景包括但不限于以上四个,能够保证弹起、开发较快,通过配置化保证卡片可以快速上下线。

image.png

FaaS带给我们的最终收益是降本提效,主要体现在以下三个方面:


  • 开发提效:Bff&runtime加速开发,快读迭代业务。
  • 运维提效:完备的生命周期,完全的弹性
  • 降低成本:潮汐流量,按需计费。


Q&A:


Q使用Serverless开发相关的功能时,功能的粒度拆分特别细。比如用户请求进来,可能后端有十几个 Serverless 相互调用,Serverless之间的调用延时比较大,如何进行优化?


A:使用异步请求方式然后汇总元组,将元组再进行解析它依赖于最大短板在工具上我们实现了timeout,以异步超时的方式不必要的长耗时请求进行快速拦截,进行汇总并最终返回至端上。出于业务上的考虑,我们没有对长耗时请求直接熔断。


Q:函数本身执行速度较快,但函数之间的调用耗时较长,应如何解决?


A:需要平台解决。我们目前把它看作正常请求,暂未对该问题进行优化。此前,我们曾对另一种模式进行过优化依赖于平台提供函数的路由在资源重用和调度上做了很大优化。此外,在调用平台时,平台与函数之间的协议沟通也尤为重要比如慢连接时如何沟通滑动窗口满了后如何沟通。gRPC 可以保障某一时刻不会慢,但启动的初始阶段依然耗时较长。


🌏更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。


👉点击直达函数计算官网!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何进行容器镜像加速?| 深度揭秘阿里云 Serverless Kubernetes(3)
容器相比虚拟机最突出的特点之一便是轻量化和快速启动。相比虚拟机动辄十几个 G 的镜像,容器镜像只包含应用以及应用所需的依赖库,所以可以做到几百 M 甚至更少。但即便如此,几十秒的镜像拉取还是在所难免,如果镜像更大,则耗费时间更长。
194 0
阿里云 Serverless 应用引擎(SAE)发布 v1.2.0,支持一键启停、NAS 存储、小规格实例等实用特性
11月26日,阿里云 Serverless 应用引擎(SAE)发布 v1.2.0版本,新版本实现了以下新功能/新特性: 一键启停开发测试环境:企业开发测试环境一般晚上不常用,长期保有应用实例,闲置浪费很高。
6123 0
降本增效利器,阿里云Serverless应用引擎(SAE)节省闲置计算资源最高达 57%!
降本增效是企业IT部门永恒的话题。通过技术手段,可以降低企业每年的IT支出,提高企业的运作效率。 企业上云后,借助云的弹性,降低了企业过去购买服务器等各类硬件设备的一次性成本投入,也缩短了企业上线应用的时间。
3390 0
1元包年,阿里云HBase Serverless开启大数据学习与测试的新时代
阿里云HBase Serverless 版是基于HBase,使用Serverless架构构建的一套新型的HBase 服务。 阿里云HBase Serverless版真正把HBase变成了一个服务,用户无需提前规划资源,选择CPU,内存资源数量,购买集群。在应对业务高峰,业务空间增长时,也无需进行扩容
4190 0
免运维,低成本,应用上云新模式 | 阿里云Serverless应用引擎 SAE 邀您公测
您是否遇到过: 资源利用率低,多数服务器CPU平均利用率在10%以下,用户需为大量闲置资源买单。 感知 IaaS 购买和集群运维,人员技能要求高,运维效率低。 想拥抱 Kubernetes、微服务架构来解决业务痛点,但学习曲线陡。
9659 0
Serverless助力AI计算:阿里云ACK Serverless/ECI发布GPU容器实例
ACK Serverless(Serverless Kubernetes)近期基于ECI(弹性容器实例)正式推出GPU容器实例支持,让用户以serverless的方式快速运行AI计算任务,极大降低AI平台运维的负担,显著提升整体计算效率。
9610 0
使用阿里云Serverless函数计算实现HTTP健康检查+故障短信通知
定时对网站/API进行请求,根据请求响应判断服务是否可用,网站是否存在宕机,当发生宕机时,发送短信通知管理员.
1625 0
1月3日云栖精选夜读 | 阿里云宣布进入 Serverless 容器时代,推出弹性容器实例服务 ECI
阿里云宣布弹性容器实例 ECI(Elastic Container Instance)正式商业化。
3417 0
文章
问答
来源圈子
更多
专注 Serverless、微服务、函数计算、Serverless 应用引擎、云原生技术
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
高德 Serverless 平台建设及实践
立即下载
闲鱼Serverless云端一体化研发实践
立即下载
《飞猪基于Serverless的云+端实践》
立即下载