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

服务器
Serverless 经常被当做FAAS(函数既服务)。serverless不是说没有服务器。事实上,服务器有很多,甚至性能还很强劲,这是为公共云提供商提供了部署、运行和管理应用程序的服务器。

 Serverless computing 正在改变传统的软件开发。这些开放源码平台将帮助您入门。

最近,serverless一词在越来越多的对话中出现。让我们先弄明白这个概念以及与之相关的一些东西,例如无服务器计算和无服务器平台。

Serverless 经常被当做FAAS(函数既服务)。serverless不是说没有服务器。事实上,服务器有很多,甚至性能还很强劲,这是为公共云提供商提供了部署、运行和管理应用程序的服务器。

[[249899]]

Serverless computing是一个新兴的技术,改变了开发人员构建和交付软件的方式。它将基础设施和代码分离来简化开发过程,降低成本并提升效率。我相信,Serverless computing和FaaS将在帮助定义企业IT的下一个时代、云本地服务和混合云方面发挥重要作用。

Serverless平台提供api,允许用户运行代码函数(也称为操作)并返回每个函数的结果。无服务器平台还提供HTTPS终端,允许开发人员检索函数结果。这些终端可以用作其他函数的输入,从而提供相关函数的触发事件(或链接)。

在大多数serverless平台上,用户在执行函数之前部署(或创建)函数。serverless平台拥有所有必要的代码,以便在需要的时候执行这些函数。serverless函数的执行可以由用户通过命令手动调用,也可以由事件源触发,该事件源配置为在响应cron作业告警、文件上传或其他事件时激活函数。

以下7个开源平台提供了serverless computing

• Apache OpenWhisk 是一个无服务器的开源云平台,允许您在任何规模的事件响应中执行代码。它是用Scala语言编写的。框架响应类似HTTP请求这样的触发事件,然后运行JavaScript或Swift代码片段。

• Fission 是一个serverless computing框架,使开发人员能够使用Kubernetes构建函数。它允许程序员用任何编程语言编写函数,并将其与任何事件触发器(如HTTP请求)进行映射。

• IronFunctions 是一个通过集成它现有的服务和Docker来提供了微服务的serverless computing框架。他要求开发人员使用Go语言编写函数。

• Fn Project 是一个开源的容器本地化服务器平台,您可以在任何地方、任何云上或在本地运行。它易于使用,支持每一种编程语言,具有高扩展性和高性能。

• OpenLambda 是一个apache授权的基于Linux容器,使用Go编写serverless computing项目。 OpenLambda的主要目标是探索新的serverless computing方法。

• Kubeless 是一个kubernets原生的serverless框架,允许您部署细粒度的代码,而不必担心底层基础设施。它利用Kubernetes资源提供自动缩放、API路由、监控、故障恢复等功能。

• OpenFaas 是一个使用Docker和Kubernetes构建serverless功能的框架,它为metrics提供了一流的支持。任何程序都可以打包为函数,使您能够使用一系列web事件,而无需重复编写样板代码。

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

• 快速部署无服务器容器

• 自动扩容或者缩容至零

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

• 代码和配置的实时快照

Knative 元件焦距在解決如何更好的在本地云上构建、运行应用程序上。例如将运行行服务绑定到事件生态系统上、在部署期间的路由和流量管理、按需自动扩展及调整工作负载的大小。Istio是一个开放的平台,能有效连接并保护微服务,并且设计考虑多个角色交互的框架,包括开发商、运营商和平台提供商。

例如,您可以使用Knative服务在本地Minishift平台上部署一个JavaScript无服务器负载,代码片段如下:

  1. ## Dockerfile 
  2.  
  3. FROM bucharestgold/centos7-s2i-nodejs:10.x 
  4.  
  5. WORKDIR /opt/app-root/src 
  6.  
  7. COPY package*.json ./ 
  8.  
  9. RUN npm install 
  10.  
  11. COPY . . 
  12.  
  13. EXPOSE 8080 3000 
  14.  
  15. CMD ["npm""start"
  16.  
  17. ## package.json 
  18.  
  19.  
  20. "name""greeter"
  21.  
  22. "version""0.0.1"
  23.  
  24. "private"true
  25.  
  26. "scripts": { 
  27.  
  28. "start""node app.js" 
  29.  
  30. }, 
  31.  
  32. "dependencies": { 
  33.  
  34. "express""~4.16.0" 
  35.  
  36.  
  37.  
  38. ## app.js 
  39.  
  40. var express = require("express"); 
  41.  
  42. var app = express(); 
  43.  
  44. var msg = (process.env.MESSAGE_PREFIX || "") + "NodeJs::Knative on OpenShift"
  45.  
  46. app.get("/"function(req, res, next) { 
  47.  
  48. res.status(200).send(msg); 
  49.  
  50. }); 
  51.  
  52. app.listen(8080, function() { 
  53.  
  54. console.log("App started in port 8080"); 
  55.  
  56. }); 
  57.  
  58. ## service.yaml 
  59.  
  60. apiVersion: serving.knative.dev/v1alpha1 
  61.  
  62. kind: Service 
  63.  
  64. metadata: 
  65.  
  66. name: greeter 
  67.  
  68. spec: 
  69.  
  70. configuration: 
  71.  
  72. revisionTemplate: 
  73.  
  74. spec: 
  75.  
  76. container: 
  77.  
  78. image: dev.local/greeter:0.0.1-SNAPSHOT 
  79.  
  80. Build your Node.js serverless application and deploy the service on local Kubernetes platform. Install Knative, Istio, Knative Serving on Kubernetes (or Minishift) as prerequisites. 

在本地Kubernetes平台构建你的Node.js serverless应用程序并部署服务前需要提前在安装Knative、Istio、Knative组件。

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

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

2.使用Jib命令构建一个serverless应用程序容器映像:

  1. ./mvnw -DskipTests clean compile jib:dockerBuild 

3. 把serverless服务如Minishift部署到您的Kubernetes集群:

  1. kubectl apply -f service.yaml 

结语

上面的示例展示了在何处以及如何开始使用本地云平台(如Kubernetes、Knative service和Istio)开发无服务器应用程序。

原文链接:

https://opensource.com/article/18/11/open-source-serverless-platforms

责任编辑:武晓燕 来源: 今日头条
相关推荐

2018-11-21 09:00:33

开源无服务器云平台

2022-01-05 09:28:31

无服务器计算服务器应用程序

2019-04-30 10:27:46

无服务器云计算安全

2022-10-10 09:01:21

JavaQuarkus

2023-08-25 13:25:00

云计算云平台

2018-03-01 10:26:25

无服务器计算架构

2022-03-18 20:54:24

无服务器计算无服务器服务器

2019-04-01 13:47:57

无服务器计算云服务

2020-02-13 11:29:46

服务器架构技术

2018-02-28 11:19:41

服务器云计算公共云

2019-03-08 10:26:29

无服务器云计算德勤

2017-11-27 10:45:48

无服务器计算容器

2018-05-02 09:00:26

开源 Web 服务器

2018-10-17 09:08:58

无服务器计算Oracle

2023-08-27 15:20:58

Serverless架构开发

2020-03-25 11:06:46

无服务器开源安全工具

2020-10-10 07:00:00

无服务器计算容器

2023-07-05 08:00:45

架构

2022-07-01 13:41:32

无服务器容器企业

2018-02-24 10:15:36

无服务器容器云计算
点赞
收藏

51CTO技术栈公众号