4. OpenFaaS组件
OpenFaaS组件分析
基础组件
(重要组件加粗):
Gateway 网关
Provider 应用编排调度器提供方(我的理解)
WatchDog 函数监控
Queue-worker 消息队列服务
其他组件:
Promethus 用于监控
AlterManager
Grafana 图表可视化
UI界面,Gateway内置的
函数商店
以下依次分析基础组件:
Gateway 网关
为函数调用提供路由,起到一个基础转发的功能
内置UI界面,可访问函数商店
Promethus收集监控指标
接受AlterManager通知,自动扩缩容

在上面的图中,
用户通过
faas-cli
、UI或REST API请求访问OpenFaaS的Gateway网关/function/<name>
、/ui
;请求会被转发到Provider,如图中的Kubernetes;
Provider会调用函数,具体是通过Watchdog调用forked process
Prometheus从Gateway收集监控数据
AlertManager根据设置的报警规则,通知Gateway
/system/alert
自动扩缩容。函数可以通过使用
faas-idler
或REST API再缩容到0。
除了自动扩缩容,也可以手动调用扩缩容API。
Provider
目前官方支持的Provider有:
faas-netes- Kubernetes provider
faas-swarm - Docker Swarm provider
其他参考https://github.com/openfaas/faas/blob/master/community.md#openfaas-providers。
OpenFaaS是少数支持Nomad的FaaS运行时

Provider封装提供的接口应该有:
List/Delete/Create 函数
设置函数副本数
获取函数副本数
部署函数的细节也是通过Provider提供的接口完成的


WatchDog 函数监控
经典的WatchDog,如下,每个请求都会fork一个函数进程执行。经典的WatchDog模式有很高的可移植性,但性能不高。

新的WatchDog项目of-watchdog,具有更高的性能,默认http模式。

此版本的监视程序为高吞吐量带来了新功能,并允许重用昂贵的资源,如数据库连接池或机器学习模型。主要区别在于能够在调用之间保持函数进程温暖,可以重复使用相同的进程来抵消fork进程时的延迟。
Queue-worker
Queue-worker组件提供消息队列服务,用于异步地处理事件。目前Kafaka还在PR中。
Queue-worker使用NATS和NATS Streaming。Gateway是发布者,Queue-worker是订阅者。

同步异步的区别
项
同步
异步
路由
/function/<name>
/async-function/<name>
函数执行
等待结果
立即返回202
即时响应码
函数调用结束
明确知道处理结果
在Queue-worker中调用函数,默认情况下处理结果丢弃


异步有一步入队dequeue
的过程,然后在queue-worker中执行函数。异步通常基于事件、回调函数机制。
在异步请求的headers中,加入X-Callback-Url
可以在执行完成后回调通知。回调的URL请求还会设置其他请求头,标识哪一条异步请求、异步请求的处理状态、时间。

AlertManager
AlterManager触发自动扩缩容的步骤:
获取现有副本数
计算新的副本数
调用Provider接口,设置新的副本数。如faas-netes 调用Kubernetes的API
参考:
OpenFass 介绍及源码分析 https://www.youtube.com/watch?v=bZtgrAVR9HQ
Last updated
Was this helpful?