1、开源云原生计算时代论坛专题论坛(深圳)百度 何守芬 2021年08月01日本期议题:EasyFaaS:从一个函数计算单机引擎说起EasyFaaS2021/4/6 百度函数计算引擎EasyFaaS 开源!函数计算引擎重榜!https:/ Function as a Service代码部署定义函数逻辑funcfuncfuncfuncfuncfuncPython/Java/Nodejs.降低运营成本 减少维护工作 提升研发效率EasyFaaS设计初衷源于边缘计算场景集群环境复杂外部依赖重运维成本高易受网络质量影响适配性强依赖轻资源占用少 无状态 自治设计要点EasyFaaS小而美的函数计算引擎 降低
2、成本运维成本:一键式安装,适配多环境资源成本:系统模块少研发成本:模块化,易插拔 提高效能业务价值:核心函数计算功能集,易于构建Serverless解决方案高性能:热启动性能在1ms左右轻量:系统资源占用少标准化:遵循社区标准EasyFaaS功能架构函数信息管理产品功能代码包管理版本管理灰度发布请求控制与容器调度请求调度并发限制错误重试缓存加持容器管控容器多并发健康检查容器隔离容器动态大小运行时动态挂载多语言运行时容器与网络技术容器网络设置EasyFaaSEasyFaaS技术架构对比功能EasyFaaSKnativeOpenFaasOpenWhisk外部依赖只依赖Linux内核,存储(可选本地
3、目录)IstioAltermanagerPrometheusNatsCouchDBKafka,NginxRedis,Zookeeper适用平台docker/k8s/裸机k8sdocker/k8sdocker/k8s开箱即用是安装相比之下较为复杂是是多语言支持是是,Docker镜像是,Docker镜像是EasyFaaS核心技术高内聚 依赖轻:EasyFaaS只依赖Linux内核,不强制依赖Docker、Kubernetes等外部服务 资源少:模块少,服务系统模块占用更小 无状态:EasyFaaS引擎为最小服务单元,本身无状态且内部自治 适配性强:EasyFaaS可以运行在多种系统环境,包括Doc
4、ker、Kubernetes及裸机等高性能 多级缓存:提供多层缓存机制,提高请求调度转发性能。预启动资源池:使用预启动base容器资源池,降低冷启动时延。高弹性 动态容量调整:支持动态调整函数实例的容量资源大小。动态挂载:动态挂载/卸载函数的运行时及代码等相关资源。使用EasyFaaS构建函数计算平台 GatewayKubernetesDBDBFunc-Registrycontrollerrunner-runtimefunclet用户函数容器用户函数容器用户函数容器Python/Nodejs/Java客户端网关服务基础consoleCLIOpenAPI SDKWebIDECloud Event
5、shttp触发器定时任务触发器函数工作流服务函数计算服务 公共服务函数触发服务EasyFaaS函数计算引擎pod日志服务监控服务项目管理组织管理用户函数容器元数据代码包链路追踪 鉴权认证场景案例一:应用后端服务 服务端渲染SSR l痛点:服务端渲染SSR方案一般采用Node.js进行部署,需要应用自行构建并实现高可用及监控等能力,成本较高。l解决思路:应用通过函数计算实现SSR方案,只需在函数内部实现SSR逻辑即可,无需再关心部署、高可用、监控等问题。l1 使用基于Nuxt/Next等SSR框架封装Serverless SSR工程模板,开发人员能一键搭建SSR工程l2 将Vue/React等框架的服务端同构基础方案注册为基础服务,开发人员能以页面粒度按需调用l3 在函数中直接编写服务端模板,能解决某些原始DOM结构庞大的页面纯客户端渲染的性能瓶颈。场景案例二:批量场景 文本核对 l痛点:在批量文本核对任务对数据库进行分库之后,需要多个节点运行支撑,由于文本核对任务不定期执行,存在大量空闲时间段资源冗余问题。l解决思路:抽取共性的数据获取、数据加工、数据持久化和数据回传等关键文本核对步骤为函数,通过函数计算平台弹性执行;依托函数计算服务,实现定时或kafka消息触发的方式触文本核对任务执行。利用函数工作流机制编排执行函数任务。Eas