Serverless计算正在改变传统软件开发。这些开源平台将帮助您入门。最近,serverless一词出现在越来越多的话题中。让我们弄清楚这个概念以及与之相关的一些东西,例如无服务器计算和无服务器平台。无服务器通常被称为FAAS(功能即服务)。Serverless并不意味着没有服务器。事实上,有许多甚至功能强大的服务器为公共云提供商提供部署、运行和管理应用程序的服务器。无服务器计算是一种新兴技术,它改变了开发人员构建和交付软件的方式。它将基础架构和代码分离,以简化开发过程,降低成本并提高效率。我相信无服务器计算和FaaS将在帮助定义企业IT、云原生服务和混合云的下一个时代方面发挥重要作用。无服务器平台提供API,允许用户运行代码函数(也称为操作)并返回每个函数的结果。无服务器平台还提供HTTPS端点,允许开发人员检索函数结果。这些终端可用作其他功能的输入,为相关功能提供触发事件(或链接)。在大多数无服务器平台上,用户在执行功能之前部署(或创建)功能。无服务器平台具有在需要时执行这些功能所需的所有代码。无服务器功能的执行可以由用户通过命令手动调用,也可以由配置为激活功能以响应cron作业警报、文件上传或其他事件的事件源触发。以下7个开源平台提供无服务器计算?ApacheOpenWhisk是一个无服务器开源云平台,允许您在任何规模的事件响应中执行代码。它是用Scala语言编写的。框架响应HTTP请求等触发事件,然后运行??JavaScript或Swift代码片段。?Fission是一种无服务器计算框架,使开发人员能够使用Kubernetes构建函数。它允许程序员用任何编程语言编写函数,并将它们映射到任何事件触发器,例如HTTP请求。?IronFunctions是一种无服务器计算框架,通过将其现有服务与Docker集成来提供微服务。他要求开发人员用Go语言编写函数。?FnProject是一个开源容器本地化服务器平台,您可以在任何地方、任何云端或本地运行。它易于使用,支持每种编程语言,具有高可扩展性和高性能。?OpenLambda是一个获得apache许可的基于Linux的容器,它使用Go来编写无服务器计算项目。OpenLambda的主要目标是探索无服务器计算的新方法。?Kubeless是一种kubernets-native无服务器框架,允许您部署细粒度代码而无需担心底层基础设施。它利用Kubernetes资源提供自动缩放、API路由、监控、故障恢复等功能。?OpenFaas是一个使用Docker和Kubernetes构建无服务器函数的框架,它为指标提供一流的支持。任何程序都可以打包为函数,使您能够使用一系列Web事件而无需重复样板代码。Kubernetes是最流行的无服务器和微服务管理平台,它使用细粒度的部署模型来更快、更轻松地处理工作负载。使用Knative服务,您可以在Kubernetes上构建和部署无服务器应用程序和功能,并使用Istio扩展和支持高级场景,例如:?快速部署无服务器容器?自动扩展或缩减为零?Istio组件的路由和网络编程?代码和配置的实时快照Knative组件专注于如何更好地在云中本地构建和运行应用程序。示例包括将运行时服务绑定到事件生态系统、部署期间的路由和流量管理、按需自动缩放和调整工作负载大小。Istio是一个能够有效连接和保护微服务的开放平台,其设计考虑了包括开发者、运营者和平台提供者在内的多个角色的交互。例如,您可以使用Knative服务在本地Minishift平台部署一个JavaScriptserverlesspayload,代码片段如下:##DockerfileFROMbucharestgold/centos7-s2i-nodejs:10.xWORKDIR/opt/app-root/srcCOPYpackage*.json./RUNnpminstallCOPY..EXPOSE80803000CMD["npm","start"]##package.json{"name":"greeter","version":"0.0.1","private":true,"scripts":{"start":"nodeapp.js"},"dependencies":{"express":"~4.16.0"}}##app.jsvarexpress=require("express");varapp=express();varmsg=(process.env.MESSAGE_PREFIX||"")+"NodeJs::KnativeonOpenShift";app.get("/",function(req,res,next){res.status(200).send(msg);});app.listen(8080,function(){console.log("Appstartedinport8080");});##service.yamlapiVersion:serving.knative.dev/v1alpha1kind:Servicemetadata:name:greeterspec:configuration:revisionTemplate:spec:container:image:dev.local/greeter:0.0.1-SNAPSHOTBuildyourNode.js无服务器应用程序并将服务部署在本地Kubernetes平台上。在Kubernetes(或Minishift)上安装Knative、Istio、KnativeServing作为先决条件。在本地Kubernetes平台上构建Node.jsserverless应用程序并部署服务之前,您需要提前安装Knative、Istio和Knative组件。1.使用以下命令连接到Docker守护进程:(minishiftdocker-env)&&eval(minishiftoc-env)2.使用Jib命令构建无服务器应用容器镜像:./mvnw-DskipTestscleancompilejib:dockerBuild3。将Minishift等无服务器服务部署到您的Kubernetes集群:kubectlapply-fservice。yaml结语上面的示例展示了从何处以及如何开始使用原生云平台(例如Kubernetes、Knative服务和Istio)开发无服务器应用程序。原文链接:https://opensource.com/article/18/11/open-source-serverless-platforms
