Serverless系统Pulumi、Knative、Kubeless、Spring Cloud Function介绍

以下为你介绍的Serverless系统都可用在Linux系统上:Pulumi(架构即是代码)、Knative(基于 Kubernetes 与 Istio 的 Serverless 架构方案)、Kubeless(Kubernetes 原生 Serverless 框架)、Spring Cloud Function(基于 Spring Boot 的函数计算框架)。

1、Pulumi(架构即是代码)

Serverless系统Pulumi、Knative、Kubeless、Spring Cloud Function介绍

Pulumi 是一个架构即是代码的开源项目,可在任何云上创建和部署使用容器,无服务器功能,托管服务和基础架构的云软件的最简单方法。

只需用您喜欢的语言编写代码,Pulumi就可以使用基础架构即代码方法自动配置和管理您的AWS,Azure,Google Cloud Platform和/或Kubernetes资源。 跳过YAML,使用您已经熟悉和喜爱的标准语言功能,如循环,函数,类和包管理。

如下代码可创建三个 Web 服务器:

let aws = require("@pulumi/aws");

let sg = new aws.ec2.SecurityGroup("web-sg", {

 ingress: [{ protocol: "tcp", fromPort: 80, toPort: 80, cidrBlocks: ["0.0.0.0/0"]}],

});

for (let i = 0; i < 3; i++) {

 new aws.ec2.Instance(`web-${i}`, {

  ami: "ami-7172b611",

  instanceType: "t2.micro",

  securityGroups: [ sg.name ],

  userData: `#!/bin/bash

   echo "Hello, World!" > index.html

   nohup python -m SimpleHTTPServer 80 &`,

 });

}

或者一个简单的无服务器定时器,在每天早上八点半抓取 Hacker News 的信息:

const aws = require("@pulumi/aws");

const snapshots = new aws.dynamodb.Table("snapshots", {

 attributes: [{ name: "id", type: "S", }],

 hashKey: "id", billingMode: "PAY_PER_REQUEST",

});

aws.cloudwatch.onSchedule("daily-yc-snapshot", "cron(30 8 * * ? *)", () => {

 require("https").get("https://news.ycombinator.com", res => {

  let content = "";

  res.setEncoding("utf8");

  res.on("data", chunk => content += chunk);

  res.on("end", () => new aws.sdk.DynamoDB.DocumentClient().put({

   TableName: snapshots.name.get(),

   Item: { date: Date.now(), content },

  }).promise());

 }).end();

});

该项目包含 Pulumi 的命令行工具、语言 SDK 和核心引擎。

下载地址:https://github.com/pulumi/pulumi

2、Knative(基于 Kubernetes 与 Istio 的 Serverless 架构方案)

Serverless系统Pulumi、Knative、Kubeless、Spring Cloud Function介绍

Knative(发音为 kay-nay-tiv)是谷歌开源的一套 Serverless 架构方案,它扩展了 Kubernetes,提供了一组中间件,提高了构建可在本地、云和第三方数据中心等地方运行的现代化、以源为中心且基于容器的应用的能力。

目前已经提供了以下组件:

Build - 源到容器的构建编排。

Eventing - 事件管理和交付。

Serving - 请求驱动的计算。

Knative 专注于解决容器为核心的 Serverless 应用的构建、部署和运行的问题,它构建在 Kubernetes 和 Istio 平台之上,整合了 Kubernetes 提供的 deployment、replicaset 和 pods 等容器管理能力,与 Istio 提供的 ingress、LB、dynamic route 等网络管理功能。

具体来说,Knative 组件将解决如下一系列问题:

部署容器。

在Kubernetes上协调从源到URL的工作流程。

通过蓝/绿部署路由和管理流量。

根据需求自动扩展和调整工作量。

将运行中的服务绑定到事件生态系统。

Knative 的开发人员可以使用熟悉的语言、框架和方式来部署任何工作负载,包括函数、应用与容器。

下载地址:https://github.com/knative

3、Kubeless(Kubernetes 原生 Serverless 框架)

Serverless系统Pulumi、Knative、Kubeless、Spring Cloud Function介绍

Kubeless 是一个基于 Kubernetes 的 Serverless 框架,允许您部署少量代码,而无需担心底层基础架构管道。它利用 Kubernetes 资源提供自动扩展、API 路由、监控、故障排除等功能。

Kuberless 包含以下部分:

持 Python、Node.js、Ruby、PHP、Golang、.NET、Ballerina 和自定义运行时。

CLI 兼容 AWS Lambda CLI。

事件触发器使用 Kafka 消息传递系统和 HTTP 事件。

Prometheus 默认监控函数调用和函数延迟。

Serverless Framework 插件。

下载地址:https://kubeless.io/

4、Spring Cloud Function(基于 Spring Boot 的函数计算框架)

Spring Cloud Function 是基于 Spring Boot 的函数计算框架,它抽象出所有传输细节和基础架构,允许开发人员保留所有熟悉的工具和流程,并专注于业务逻辑。

Spring Cloud Function 有以下高级别的目标:

通过函数促进业务逻辑的实现。

将业务逻辑的开发生命周期与特定运行时分离,以便相同的代码可以作为 Web 端点、流处理器或任务运行。

支持 Serverless 提供商之间的统一编程模型,以及独立运行(本地或 PaaS)的能力。

在 Serverless 提供商上启用 Spring Boot 功能(自动配置、依赖注入、Metrics)。

下载地址:https://github.com/spring-cloud/spring-cloud-function

注明

以上就是Serverless系统Pulumi、Knative、Kubeless、Spring Cloud Function的介绍内容,这些Serverless系统都能使用在Linux操作系统中。

栏目相关文章