函数计算框架OpenFaaS架构解析

函数计算框架OpenFaaS架构解析

简介

OpenFaas的项目目标就是通过Docker容器简化Serverless函数,使开发人员可以轻松地将事件驱动函数和微服务部署到Kubernetes,而无需重复的样板编码。将代码或现有二进制文件打包到Docker映像中,以获得具有自动扩展和可度量的度量的高度可扩展的endpoint。

分层架构

核心组件

  • API网关: API网关提供所有function的注册和路由

  • Function Watch Dog: 每个container中都包含一个watchdog,在用户和函数间提供一个通用的接口,将API网关转发来的HTTP request转化为函数的调用

  1. Openfaas 中的watchdog有两种,一个是默认的classic watchdog:

  2. of-watchdog 提供高吞吐量带来了新的功能,并支持重用重要资源比如数据库连接池或机器学习模型。主要的区别是在调用之间保持函数进程warm状态的能力。classic watchdog为每个请求folk一个进程,提供最高级别的可移植性,但较新的版本启用了http mode,在这种模式下,同一进程可以重复使用,以减少folk带来的延迟。

  • NATS Streaming:提供异步执行和排队
  • Prometheus:提供指标并通过AlertManager启用自动缩放
  • AlertManager: Alert manager从Prometheus获取指标数据,执行scaleup/scaledown
  • Registry:包含每个可以通过API部署在OpenFaaS上的不可变工件。

业务流

  • API网关可以通过其REST API、CLI或UI访问, 所有服务或函数都会暴露默认路由,但自定义domain也可以用于每个端点。
  • Prometheus收集可通过网关API获得的度量,并用于自动扩展。
  • 通过将函数的URL从/function/NAME 更改为 /async-function/NAME,可以使用NATS Streaming在队列中运行调用, 还可以传递可选的回调URL。
  • faas-netes是OpenFaaS最受欢迎的编排提供商,但Docker Swarm、Hashcorp Nomad、AWS Fargate/ECS和AWS Lambda也是由社区开发的,provider程序是使用faas-provider SDK构建的。

参考

(完)