7 个开源平台助你入门无服务器计算

无服务器计算正在改变传统的软件开发模式。这些开源平台将帮助你入门。
578 位读者喜欢这篇文章。
3 cool machine learning projects using TensorFlow and the Raspberry Pi

Opensource.com

术语 无服务器 最近在越来越多的对话中被提及。让我们澄清一下这个概念,以及与其相关的概念,例如无服务器计算无服务器平台

无服务器 通常与术语 FaaS (函数即服务) 交替使用。但无服务器并不意味着没有服务器。事实上,有很多服务器——有服务器——因为公共云提供商提供了部署、运行和管理你的应用程序的服务器。

无服务器计算 是一个新兴的类别,代表着开发者构建和交付软件系统方式的转变。将应用程序基础设施从代码中抽象出来可以大大简化开发过程,同时引入新的成本和效率优势。我相信无服务器计算和 FaaS 将在定义企业 IT 的下一个时代中发挥重要作用,与云原生服务和 混合云 一起。

无服务器平台 提供 API,允许用户运行代码函数(也称为操作)并返回每个函数的结果。无服务器平台还提供 HTTPS 端点,允许开发者检索函数结果。这些端点可以用作其他函数的输入,从而提供相关函数的序列(或链式调用)。

在大多数无服务器平台上,用户在执行函数之前部署(或创建)函数。然后,无服务器平台拥有执行函数所需的所有代码,以便在收到指令时执行函数。无服务器函数的执行可以由用户通过命令手动调用,也可以由事件源触发,事件源配置为响应事件(例如定时任务警报、文件上传等)来激活函数。

7 个开源平台助你入门无服务器计算

  • Apache OpenWhisk 是一个无服务器开源云平台,允许你响应任何规模的事件来执行代码。它使用 Scala 语言编写。该框架处理来自 HTTP 请求等触发器的输入,然后在 JavaScript 或 Swift 上触发代码片段。

  • Fission 是一个无服务器计算框架,使开发者能够使用 Kubernetes 构建函数。它允许程序员使用任何编程语言编写生命周期短暂的函数,并将它们与任何事件触发器(例如 HTTP 请求)映射。

  • IronFunctions 是一个无服务器计算框架,通过集成其现有服务并拥抱 Docker,提供了一个有凝聚力的微服务平台。开发者使用 Go 语言编写函数。

  • Fn Project 是一个开源的容器原生无服务器平台,你可以在任何地方运行——在任何云或本地部署环境中。它易于使用,支持所有编程语言,并且具有可扩展性和高性能。

  • OpenLambda 是一个 Apache 许可的无服务器计算项目,使用 Go 语言编写,并基于 Linux 容器。OpenLambda 的主要目标是探索无服务器计算的新方法。

  • Kubeless 是一个 Kubernetes 原生的无服务器框架,让你能够部署小段代码,而无需担心底层基础设施。它利用 Kubernetes 资源来提供自动伸缩、API 路由、监控、故障排除等功能。

  • OpenFaas 是一个使用 Docker 和 Kubernetes 构建无服务器函数的框架,它为指标提供一流的支持。任何进程都可以打包成函数,使你能够使用各种 Web 事件,而无需重复编写样板代码。

Kubernetes 是管理无服务器工作负载和微服务应用容器的最流行平台,它使用精细的部署模型来更快更轻松地处理工作负载。借助 Knative Serving,你可以在 Kubernetes 上构建和部署无服务器应用程序和函数,并使用 Istio 进行扩展并支持高级场景,例如

  • 快速部署无服务器容器

  • 自动向上和向下扩展至零

  • Istio 组件的路由和网络编程

  • 已部署代码和配置的时间点快照

Knative 专注于在云原生平台上构建和运行应用程序的常见任务,用于编排从源代码到容器的构建、将服务绑定到事件生态系统、在部署期间路由和管理流量以及自动伸缩工作负载。Istio 是一个开放平台,用于连接和保护微服务(实际上是 Envoy 代理 的服务网格控制平面),并且在设计时考虑了与框架交互的多种角色,包括开发者、运维人员和平台提供商。

例如,你可以使用以下代码片段在本地 Minishift 平台上使用 Knative Serving 部署 JavaScript 无服务器工作负载

## Dockerfile
FROM bucharestgold/centos7-s2i-nodejs:10.x
WORKDIR /opt/app-root/src
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080 3000
CMD ["npm", "start"]


## package.json
{
  "name": "greeter",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "~4.16.0"
  }
}

## app.js
var express = require("express");
var app = express();

var msg = (process.env.MESSAGE_PREFIX || "") + "NodeJs::Knative on OpenShift";

app.get("/", function(req, res, next) {
  res.status(200).send(msg);
});

app.listen(8080, function() {
  console.log("App started in port 8080");
});

## service.yaml
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  name: greeter
spec:
  configuration:
    revisionTemplate:
      spec:
        container:
          image: dev.local/greeter:0.0.1-SNAPSHOT

构建你的 Node.js 无服务器应用程序,并在本地 Kubernetes 平台上部署该服务。安装 Knative、Istio、Kubernetes 上的 Knative Serving (或 Minishift) 作为先决条件。

1. 使用以下命令连接到 Docker 守护进程

(minishift docker-env) && eval(minishift oc-env)

2. 使用以下命令和 Jib 构建无服务器应用程序容器镜像

./mvnw -DskipTests clean compile jib:dockerBuild

3. 将无服务器服务(例如 Minishift)部署到你的 Kubernetes 集群

kubectl apply -f service.yaml

结论

上面的示例展示了如何以及在哪里开始使用云原生平台(例如 KubernetesKnative ServingIstio)开发无服务器应用程序。

下一步阅读
danieloh
技术营销, 开发者倡导者, CNCF 大使, 公开演讲者, 出版作家, Quarkus, Red Hat Runtimes

1 条评论

© . All rights reserved.