文章目录
原理
技术简介
OpenFaaS是golang编写的一个使用Docker和Kubernetes构建的serveless框架
和Fnproject 有点像,只是 Openfaas 并不是直接抓取容器的标准输出,而是写一个 Function Watchdog 作为容器的启动进程,暴露 http 服务,用于和调度系统交互,然后直接调用进程运行 Function 获取输出。
Prometheus:监控系统报警框架
watchdog:https://news.ycombinator.com/item?id=15116834
Swarm:提供 Docker 容器集群服务
架构
当Gateway作为一个入口,当CLI或者web页面发来要部署或者调用一个函数的时候,Gateway会将请求转发给Provider,同时会将监控指标发给Prometheus。AlterManager会根据需求,调用API自动伸缩函数。
结构分析
- 基本的安全验证
- 和函数相关的代理转发
- 同步函数
- 列出函数
- 部署函数
- 删除函数
- 更新函数
- 同步函数
- 异步函数
- Prometheus的监控
- ui
- 自动伸缩
- 根据每秒请求数来做伸缩
- 最小/最大副本数 通过向函数添加标签, 可以在部署时设置最小 (初始) 和最大副本数。
- 通过内存和CPU的使用量。
性能
社区活跃度
Dec 18, 2016 – Dec 27, 2018
https://kenfdev.o6s.io/github-stats-page#/
1.社区活动
开发工作量平均每周大约5个commits
2.社区规模
github核心开发人员3名
3.社区表现
issues的平均close周期比较长
5.社区多样性
Pony factor:1
性能表现
环境
非生产环境
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Model name: Intel Xeon E312xx (Sandy Bridge)
Stepping: 1
CPU MHz: 1999.999
BogoMIPS: 3999.99
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
NUMA node0 CPU(s): 0,1
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
对象
http://192.168.44.204:8080/function/figlet 0.016
http://192.168.44.204:8080/function/nodeinfo 0.2
http://192.168.44.204:8080/function/echoit 0.02
数据
单任务
#!/bin/bash
rm -rf ab.log
for i in $(cat url.txt)
do
if [ "$1" == "" ]
then
echo "is empty"
elif [[ "$2" == "" ]]
then
if [ "$3" == "" ]
then
Echo "c = $1,no t,no n"
ab -c $1 $i >> ab.log &
continue
else
Echo "c = $1,no t,n = $3 "
ab -t $2 -n $3 $i >> ab.log &
continue
fi
elif [[ "$3" == "" ]]
then
Echo "c = $1,t = $2 ,no n"
ab -c $1 -t $2 $i >> ab.log &
continue
else
Echo "c = $1,t = $2 ,n = $3 "
ab -c $1 -t $2 -n $3 $i >> ab.log &
continue
fi
done
多函数
Figlet/nodeino/echoit
http://192.168.44.204:8080/function/figlet
http://192.168.44.204:8080/function/nodeinfo