Fn 是一个事件驱动,开源,可在任何平台运行的 FaaS 计算平台。 主要特性:
- 一次编写
- 跨平台
- 公共私有混合云
- 直接从 Lambda 导入函数 and run them wherever you want
- 易于开发者使用
- 便于运维管理
- 用 Go 编写
- 简单强大的扩展性
- Docker 17.05 或以上版本
- Docker Hub 账号 (Docker Hub) (或其他 Docker 兼容的 registry)
- 登录进 Docker Hub 账号:
docker login
命令行工具不强制安装, 但是使用它会很方便. 安装方法:
如果你使用Mac并且使用 Homebrew 的话, 可使用以下命令安装:
brew install fn
在 Linux 和 MacOS 可以使用以下命令安装:
curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
这条命令会下载一个 shell 脚本并执行. 因为脚本调用了 sudo , 所以有可能需要输入密码.
到 releases 页面下载.
启动 Fn 服务器:
fn start
这条命令会使用内置的数据库和消息队列, 以单服务器模式运行 Fn. 你可以在这里查看所有的配置项. 如果你在 Windows 下运行的话, 看这里.
函数是只完成一个简单任务的小巧强大的代码块. 在编写函数的时候, 不需要关注架构, 只需要关注你要函数处理的任务就可以了.
首先创建一个名为 hello
的空目录,然后 cd 进去.
下面是一个把字符串打印到 STDOUT (标准输出) 的简单的 Go 程序. 把代码复制粘贴到一个文件里面, 把文件命名为 func.go
.
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello from Fn!")
}
现在运行下列 CLI 命令:
# 初始化函数
# 从上面的代码自动检测运行时, 并创建一个 func.yaml 文件
fn init
# 设置 Docker Hub 用户名
export FN_REGISTRY=<DOCKERHUB_USERNAME>
# 对函数进行测试
# 和在服务器上面一样, 函数会在一个容器中运行
fn run
# 把函数部署到 Fn 服务器上(默认为 localhost:8080)
# 这个命令还会为函数创建一个路由
fn deploy --app myapp
现在可以调用你的函数了:
curl http://localhost:8080/r/myapp/hello
# 或者:
fn call myapp /hello
或者在浏览器中: http://localhost:8080/r/myapp/hello
这样就完成了你的第一个函数的部署和调用. 更新你的函数只需要继续编写代码, 然后再次调用 fn deploy myapp
就可以了.
我们还开源了个 Web UI.只需要以下命令就可以运行:
docker run --rm -it --link functions:api -p 4000:4000 -e "API_URL=http://api:8080" fnproject/ui
访问 https://github.com/fnproject/ui 查看更多信息.
- 查看我们的函数系列教程. 这个教程会通过一系列的示例演示一些 Fn 的核心功能. 我们会用大多数主流语言来编写示例代码, 是个很不错的起点教程.
- 查看我们的完整文档
- 查看我们的示例
- 查看我们的YouTube 频道
- 查看我们的API 文档
- 在 StackOverflow 上面提问 , 并打上
fn
的标签 - 加入 Slack 社区