EasyFaaS亮相GOTC | 小而美的函数计算引擎是如何炼成的?

2021年09月16日 阅读数:1
这篇文章主要向大家介绍EasyFaaS亮相GOTC | 小而美的函数计算引擎是如何炼成的?,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

百度云原生导读:近日,由开放原子开源基金会与Linux基金会联合开源中国发起的GOTC全球开源技术峰会在深圳会展中心召开,百度云原生团队的高级研发工程师何守芬带来了《 EasyFaaS:从一个函数计算单机引擎提及》为主题的演讲,引起了与会者的普遍关注。编程

 

 

这次演讲主要分为三个部分:小程序

1. 为何要开源 EasyFaaS后端

2.EasyFaaS 的前世此生缓存

3.将来规划服务器

 

 

1. 为何要开源 EasyFaaS

 

随着云计算技术演进,Serverless 因其在下降运营成本,提高研发效率方面的优点愈来愈受到关注。Serverless 技术通常被定义为 FaaS(函数即服务) + BaaS(后端即服务)。百度于2017年开始进行 Serverless 布局,发布了公有云的函数计算产品 CFC,通过3年多的发展,CFC 支撑了公司内网多个业务场景,如小度 Dueros 自定义技能服务,百度小程序等等,同时在私有化领域也展开始露头脚,在金融等领域完成了落地。微信

 

为了推广Serverless技术,百度云原生团队于今年4月份开源了一款单机函数计算引擎:EasyFaaS网络

 

何为函数计算?函数计算就是上文中提到的FaaS(Function as a Service),它提供一种基于事件触发的、高可用的、弹性伸缩的、按需使用、按需付费的无服务器云端计算能力。 架构

 

对于开发者而言,无需再关注物理服务器或者容器资源等等的申请扩容等运维工做,只须要使用本身熟悉的编程语言编写业务代码逻辑成一个个函数,在函数计算平台上配置好相应的触发器便可,好比须要定时执行一个函数,那么配置好定时任务触发器就好,函数计算平台会负责定时触发执行函数任务。并发

 

函数计算是事件触发的,按需加载按需付费,所以当用户的函数不使用时,资源被其余用户使用,下降了运营的成本;同时开发者无需关注服务器部署,资源扩容缩容,减小了运维工做;固然研发效率也会极大提高: 函数自己已是最小的功能粒度,业务将功能拆分红函数会更方便功能迭代。less

 

 

2. EasyFaaS 的前世此生

 

2.1 EasyFaaS 的设计初衷

 

据何守芬介绍,EasyFaaS 来源于百度云原生团队对 CDN 边缘计算的一些业务场景探索。在 CDN 节点上,有不少关于在边缘上基于用户自定义的一些请求的裁剪,视频编解码等这样须要将算力放到边缘的需求,很是适合使用函数计算来知足用户这样的需求。

 

团队以前在作的时候首先想到的是直接将云上咱们已有的函数计算服务部署在边缘,但在调研过程当中发现边缘计算场景与云端IDC机房有很大差异,它的集群环境更加复杂,中心与边缘节点之间的通讯容易受到网络质量影响,同时公有云上函数计算产品有不少依赖好比ETCD,中心的K8S等服务,中心组件的运维成本比较高,所以团队想要设计适合边缘计算场景的函数计算引擎,拥有适配性强,资源占用少,依赖轻,能是无状态和自治的,所以就有了 EasyFaaS。

 

EasyFaaS是一款小而美的函数计算引擎,可以很方便使用它构建本身的函数计算平台方案,主要优点包括:

 

  • 下降成本:体如今下降运维成本,资源成本,研发成本上。EasyFaaS支持一键式安装,可以使用Docker/Docker compose/K8S 进行部署;EasyFaaS的核心系统模块只有三个,占用资源少,同时EasyFaaS 的代码都是模块化的,易插拔,易于开发者进行二次开发。

 

  • 提高效能:EasyFaaS是核心函数计算功能集,用户可以很容易使用它构建 Serverless 解决方案;热启动性能能在1ms左右;轻量体现依赖比较少,系统资源占用少;EasyFaaS 也是标准化的,积极拥抱开源遵循社区标准。

 

2.2 EasyFaaS 的功能及架构优点

 

在产品功能方面可以支持基本的函数信息管理,代码包管理,版本管理等;请求与资源调度方面支将请求调度到函数实例,并发控制,错误重试等,固然底层还依赖容器与容器技术,如运行时动态挂载,多语言运行时支持等等。

 

 

EasyFaaS 的核心组件都部署在 K8S 最小资源单位 pod 中,外侧是一个函数元信息和代码的管理服务。上面的部分是函数调用请求端,能够是直接发起的请求,也能够是云端各类触发器发起的请求。

 

再来看一下 EasyFaaS 的核心组件,包含2个常驻工做容器,首先是 controller 容器,负责流量转发,并发控制等,其次是 Funclet 容器,主要负责二层工做容器池的维护,包括 warmup 工做容器及回收工做容器;以及 runner-runtime 的容器,它做为一个 init 容器,负责准备工做容器的 rootfs 及多语言运行时 runtime 的准备工做,准备工做完成后该容器就退出。

 

EasyFaaS 的核心技术,主要体现为:高内聚,高弹性,高性能

 

 

高内聚体如今了上文所述的设计要点,再也不多赘述;高弹性是指可以动态调整函数实例的容量,动态挂载运行时和代码等相关资源;高性能主要使用了多层缓存机制,预先启动资源池,来下降冷启动的延时问题。

 

2.3 基于 EasyFaaS 搭建本身的函数计算平台

 

 

如何使用EasyFaaS搭建函数计算平台?上图展现一个基于 K8S 集群环境搭建函数计算平台的方案。

 

首先函数计算服务自己能够经过使用K8S deployment 这种工做负载进行多副本部署,构建函数实例资源池,经过使用 K8S service 在集群内暴露服务;func-registry提供函数元信息及代码的管理,能够替换成更合适的或者已有的存储;固然函数触发服务除了经常使用的触发器,还能够开发自定义的触发器,知足更多样的触发场景。

 

用户也能够基于现有函数计算服务之上搭建工做流服务,支持函数编排;做为平台服务自己,能够借助开源已有的解决方案构建平台的公共服务,如日志使用经典ELK,监控使用Peomethus等等。

 

最上面这里是客户端即控制面数据面的入口,包含控制台,接下来是Gateway,用来作路由等,这里能够用Nginx ingress等等,这样就搭建好了一个函数计算平台服务。  

 

会上,何守芬还介绍了两个在金融行业使用这套函数计算平台的典型应用场景。

 

一是后端服务SSR的一个场景,解决的痛点是可以提高开发者效率。

 

 

第二个是批量任务的场景,解决的痛点是可以高效弹性地使用资源。

 

 

3. EasyFaaS 的后续规划

 

 

将来 EasyFaaS 会引入一个 gateway ,提供更全的资源池视角,作更全面的资源调度和资源控制;开源一个更高效更快更符合函数触发场景的自动扩缩容组件。

 

在基于通用云端事件规范的基础之上开源更丰富的通用触发器,知足更多样的触发场景;基于通用函数编排规范支持函数工做流,知足函数编排需求等等。

 

欢迎广大开发者一块儿加入,一块儿打磨 EasyFaaS。

 

 

- End -

 

聊聊 EasyFaaS

 

扫码添加小助手便可申请加入,必定要备注:名字-公司/学校-地区,根据格式备注,才能经过且邀请进群。

了解更多微服务、云原生技术的相关信息,请关注咱们的微信公众号【云原生计算】