新聞中心
這7個(gè)開(kāi)源平臺(tái)幫你入手無(wú)服務(wù)器計(jì)算
譯文
作者:布加迪編譯 2018-11-21 09:00:33
服務(wù)器
開(kāi)源
云計(jì)算 無(wú)服務(wù)器常常與FaaS(函數(shù)即服務(wù))這個(gè)術(shù)語(yǔ)互換使用。但無(wú)服務(wù)器并不意味著沒(méi)有服務(wù)器。事實(shí)上有好多服務(wù)器,即公共云提供商提供為你部署、運(yùn)行和管理應(yīng)用程序的服務(wù)器。

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供石城企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、HTML5、小程序制作等業(yè)務(wù)。10年已為石城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。
【51CTO.com快譯】無(wú)服務(wù)器一詞最近出現(xiàn)在更多的對(duì)話(huà)中。不妨澄清一下這個(gè)概念及相關(guān)的概念,比如無(wú)服務(wù)器計(jì)算和無(wú)服務(wù)器平臺(tái)。
無(wú)服務(wù)器常常與FaaS(函數(shù)即服務(wù))這個(gè)術(shù)語(yǔ)互換使用。但無(wú)服務(wù)器并不意味著沒(méi)有服務(wù)器。事實(shí)上有好多服務(wù)器,即公共云提供商提供為你部署、運(yùn)行和管理應(yīng)用程序的服務(wù)器。
無(wú)服務(wù)器計(jì)算是新興的類(lèi)別,代表開(kāi)發(fā)人員構(gòu)建和交付軟件系統(tǒng)的方式發(fā)生了轉(zhuǎn)變。通過(guò)代碼將應(yīng)用軟件基礎(chǔ)設(shè)施抽取出來(lái)可大大簡(jiǎn)化開(kāi)發(fā)過(guò)程,同時(shí)在成本和效率方面帶來(lái)新的好處。我認(rèn)為,無(wú)服務(wù)器計(jì)算和FaaS將在與云原生服務(wù)和混合云一同幫助定義企業(yè)IT的下一個(gè)時(shí)代方面發(fā)揮重要作用。
無(wú)服務(wù)器平臺(tái)提供的API讓用戶(hù)可以運(yùn)行代碼函數(shù)(又叫操作),并返回每個(gè)函數(shù)的結(jié)果。無(wú)服務(wù)器平臺(tái)還提供HTTPS端點(diǎn),讓開(kāi)發(fā)人員可以檢索函數(shù)結(jié)果。這些端點(diǎn)可以用作其他函數(shù)的輸入,從而提供一連串相關(guān)函數(shù)。
在大多數(shù)無(wú)服務(wù)器平臺(tái)上,用戶(hù)在部署(或創(chuàng)建)函數(shù)后再執(zhí)行函數(shù)。然后,無(wú)服務(wù)器平臺(tái)擁有被告知執(zhí)行時(shí)執(zhí)行函數(shù)所需的所有代碼。用戶(hù)可以通過(guò)命令手動(dòng)調(diào)用無(wú)服務(wù)器函數(shù)的執(zhí)行,也可以由事件源觸發(fā),事件源被配置成一旦遇到計(jì)劃任務(wù)警報(bào)、文件上載或其他許多事件之類(lèi)的事件,就激活函數(shù)。
入手無(wú)服務(wù)器計(jì)算的7個(gè)開(kāi)源平臺(tái)
1.Apache OpenWhisk
Apache OpenWhisk是一個(gè)無(wú)服務(wù)器開(kāi)源云平臺(tái),讓你可以執(zhí)行代碼以響應(yīng)任何規(guī)模的事件。它用Scala語(yǔ)言編寫(xiě)。該框架處理來(lái)自HTTP請(qǐng)求等觸發(fā)器的輸入,然后運(yùn)行一小段JavaScript或Swift代碼。
2.Fission
Fission是一個(gè)無(wú)服務(wù)器計(jì)算框架,使開(kāi)發(fā)人員能夠使用Kubernetes構(gòu)建函數(shù)。它讓程序員可以用任何編程語(yǔ)言編寫(xiě)短暫的函數(shù),并將這些函數(shù)映射到任何事件觸發(fā)器(比如HTTP請(qǐng)求)。
3.IronFunctions
IronFunctions是一個(gè)無(wú)服務(wù)器計(jì)算框架,通過(guò)集成其現(xiàn)有服務(wù)和擁抱Docker,提供了一個(gè)連貫一致的微服務(wù)平臺(tái)。開(kāi)發(fā)人員用Go語(yǔ)言來(lái)編寫(xiě)函數(shù)。
4.Fn Project
Fn Project是一個(gè)開(kāi)源容器原生無(wú)服務(wù)器平臺(tái),可以在任何地方運(yùn)行它:任何云或內(nèi)部環(huán)境。它易于使用,支持各種編程語(yǔ)言,還具有可擴(kuò)展性和高性能。
5.OpenLambda
OpenLambda是一個(gè)采用Apache許可證的無(wú)服務(wù)器計(jì)算項(xiàng)目,用Go編寫(xiě),基于Linux容器。OpenLambda的主要目標(biāo)是讓用戶(hù)能夠探究無(wú)服務(wù)器計(jì)算的新方法。
6.Kubeless
Kubeless是一個(gè)Kubernetes原生無(wú)服務(wù)器框架,讓你可以部署少量代碼,無(wú)需擔(dān)心底層基礎(chǔ)設(shè)施。它利用Kubernetes資源來(lái)提供自動(dòng)擴(kuò)展、API路由、監(jiān)控和故障排除等功能。
7.OpenFaas
OpenFaas是一個(gè)用Docker和Kubernetes構(gòu)建無(wú)服務(wù)器函數(shù)的框架,為指標(biāo)提供一流的支持。任何進(jìn)程可以打包成函數(shù),那樣你就可以使用眾多Web事件,無(wú)需重復(fù)編寫(xiě)樣板代碼。
Kubernetes是管理無(wú)服務(wù)器工作負(fù)載和微服務(wù)應(yīng)用容器的最流行平臺(tái),使用精細(xì)的部署模型以便更快速、更輕松地處理工作負(fù)載。使用Knative Serving(https://github.com/knative/serving),你可以在Kubernetes上構(gòu)建和部署無(wú)服務(wù)器應(yīng)用程序和函數(shù),并使用Istio(https://istio.io/)來(lái)擴(kuò)展和支持高級(jí)場(chǎng)景,比如:
- 快速部署無(wú)服務(wù)器容器
- 自動(dòng)擴(kuò)展和縮小到零
- 面向Istio組件的路由和網(wǎng)絡(luò)編程
- 已部署的代碼和配置的時(shí)間點(diǎn)快照
Knative(https://github.com/knative/)專(zhuān)注于在云原生平臺(tái)上構(gòu)建和運(yùn)行應(yīng)用程序的常見(jiàn)任務(wù),用于編排源代碼到容器構(gòu)建、將服務(wù)綁定到事件生態(tài)系統(tǒng)、部署期間路由和管理流量以及自動(dòng)擴(kuò)展工作負(fù)載。
Istio是一個(gè)開(kāi)放平臺(tái),用于連接和保護(hù)微服務(wù)(在Envoy代理看來(lái)實(shí)際上就是服務(wù)網(wǎng)格控制平面),并旨在考慮與框架交互的多個(gè)角色,包括開(kāi)發(fā)人員、操作人員和平臺(tái)提供者。
比如說(shuō),你可以使用以下代碼片段,在本地Minishift(https://github.com/minishift/minishift)平臺(tái)上使用Knative Serving部署JavaScript無(wú)服務(wù)器工作負(fù)載:
- ## 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
構(gòu)建你的Node.js無(wú)服務(wù)器應(yīng)用程序,并將服務(wù)部署到本地Kubernetes平臺(tái)上。在Kubernetes(或Minishift)上安裝Knative、Istio和Knative Serving這些必要的基本組件。過(guò)程如下:
1.使用以下命令連接到Docker守護(hù)程序:
- (minishift docker-env) && eval(minishift oc-env)
2.使用以下命令和Jib(https://github.com/GoogleContainerTools/jib)構(gòu)建無(wú)服務(wù)器應(yīng)用程序容器映像:
- ./mvnw -DskipTests clean compile jib:dockerBuild
3.將Minishift等無(wú)服務(wù)器服務(wù)部署到Kubernetes集群:
- kubectl apply -f service.yaml
結(jié)論
上面這個(gè)例子表明了在哪里并如何借助Kubernetes、Knative Serving和Istio之類(lèi)的云原生平臺(tái)開(kāi)始開(kāi)發(fā)無(wú)服務(wù)器應(yīng)用程序。
文章名稱(chēng):這7個(gè)開(kāi)源平臺(tái)幫你入手無(wú)服務(wù)器計(jì)算
分享URL:http://m.5511xx.com/article/dppcjjd.html


咨詢(xún)
建站咨詢(xún)
