Fission:在 Kubernetes 上跑 Serverless,100 毫秒冷启动 文章目录Fission在 Kubernetes 上跑 Serverless100 毫秒冷启动1、 这东西解决什么问题2、 支持哪些语言3、 触发方式4、 为什么选 Kubernetes 上的 Serverless5、 上手6、 谁在用7、 总结Fission在 Kubernetes 上跑 Serverless100 毫秒冷启动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 等定时任务CronKubernetes Watch 事件这意味着你可以用它做事件驱动的后台处理不光是写 API。4、 为什么选 Kubernetes 上的 ServerlessFission 的设计思路是大多数实际应用不会纯用 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 是一个值得试试的选项。