Fission:在 Kubernetes 上跑 Serverless,100 毫秒冷启动
文章目录
- Fission:在 Kubernetes 上跑 Serverless,100 毫秒冷启动
- 1、 这东西解决什么问题
- 2、 支持哪些语言
- 3、 触发方式
- 4、 为什么选 Kubernetes 上的 Serverless
- 5、 上手
- 6、 谁在用
- 7、 总结
Fission:在 Kubernetes 上跑 Serverless,100 毫秒冷启动
fission 在 GitHub 上有 8,865 Star。
这是一个 Kubernetes 原生的 Serverless 框架。核心卖点就一个:冷启动延迟大概 100 毫秒。你写一个函数,扔上去,它帮你处理容器、扩缩容、触发器这些事。
1、 这东西解决什么问题
在 Kubernetes 上部署函数,传统做法是自己写 Dockerfile、配 Deployment、搞 Service、写 HPA 规则。一个简单的 HTTP 函数,光基础设施配置就要折腾半天。
Fission 把这些全包了。你只管写代码,它负责打包成容器、部署到集群、管理生命周期。Docker 和 Kubernetes 在正常操作中是透明的,不用碰。
而且它的冷启动快。这是靠一个"暖容器池"实现的——预先拉起一批容器在那等着,函数第一次被调用时,直接从池子里取一个,把函数代码动态加载进去。所以冷启动只要大约 100 毫秒,不是那种要等好几秒的情况。
2、 支持哪些语言
NodeJS、Python、Ruby、Go、PHP、Bash,以及任何能在 Linux 上跑的可执行文件。
语言支持是通过"环境"(Environment)来隔离的。每种语言有自己的运行时环境,Fission 的核心用 Go 写,语言相关的部分都封装在环境里。想加新语言,写一个环境就行。
3、 触发方式
函数不是只响应 HTTP 请求。Fission 支持多种触发器:
- HTTP 请求(最常用)
- 消息队列(Kafka、NATS 等)
- 定时任务(Cron)
- Kubernetes Watch 事件
这意味着你可以用它做事件驱动的后台处理,不光是写 API。
4、 为什么选 Kubernetes 上的 Serverless
Fission 的设计思路是:大多数实际应用不会纯用 Serverless,而是 Serverless 函数和常规微服务混着用。Kubernetes 天然能把这两类工作负载放在一个集群里统一管理。
你在 Kubernetes 上做的运维投入——监控、日志收集、网络策略——对 Fission 部署的函数同样管用。不用另起一套运维体系。
5、 上手
装好 Fission CLI 之后,三步跑一个函数:
# 添加 NodeJS 环境fissionenvcreate--namenodejs--imageghcr.io/fission/node-env# 创建函数fissionfunctioncreate--namehello--envnodejs--codehttps://raw.githubusercontent.com/fission/examples/master/nodejs/hello.js# 调用函数,首次大约 100msfissionfunctiontest--namehello不需要写 Dockerfile,不需要写 YAML,函数代码可以是一个 URL、一个本地文件、甚至 stdin 管道输入。
6、 谁在用
Fission 的用户列表里有几个名字:Apple、Unilever、BD、Babylon。还有 Fareye、Gadget、CinnamonAI 这些技术公司。说明这个项目在生产环境里跑了一段时间了,不是玩具。
7、 总结
Fission 做的事情不复杂:让你在 Kubernetes 上像用 AWS Lambda 一样写函数,但不用离开自己的集群。冷启动快,语言支持多,触发器种类够用。如果你的基础设施已经建在 Kubernetes 上,又想引入 Serverless 的开发模式,Fission 是一个值得试试的选项。
你的基础设施已经建在 Kubernetes 上,又想引入 Serverless 的开发模式,Fission 是一个值得试试的选项。