日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Dapr:用于構(gòu)建分布式應(yīng)用程序的便攜式事件驅(qū)動(dòng)運(yùn)行時(shí)

來源: 責(zé)編: 時(shí)間:2023-11-17 08:50:22 286觀看
導(dǎo)讀簡介:分布式應(yīng)用程序變得越來越流行,因?yàn)樗鼈儽葌鹘y(tǒng)的整體應(yīng)用程序具有許多優(yōu)勢(shì)。然而,構(gòu)建和運(yùn)行分布式應(yīng)用程序可能非常復(fù)雜且具有挑戰(zhàn)性。Dapr 是一個(gè)可移植的事件驅(qū)動(dòng)運(yùn)行時(shí),可以輕松跨云和邊緣構(gòu)建和運(yùn)行分布式應(yīng)用

簡介:

分布式應(yīng)用程序變得越來越流行,因?yàn)樗鼈儽葌鹘y(tǒng)的整體應(yīng)用程序具有許多優(yōu)勢(shì)。然而,構(gòu)建和運(yùn)行分布式應(yīng)用程序可能非常復(fù)雜且具有挑戰(zhàn)性。Dapr 是一個(gè)可移植的事件驅(qū)動(dòng)運(yùn)行時(shí),可以輕松跨云和邊緣構(gòu)建和運(yùn)行分布式應(yīng)用程序。它提供了一組構(gòu)建塊,開發(fā)人員可以使用它們輕松構(gòu)建和運(yùn)行微服務(wù)、事件驅(qū)動(dòng)應(yīng)用程序和有狀態(tài)應(yīng)用程序。在這篇博文中,我們將介紹 Dapr 并討論其優(yōu)點(diǎn)和功能。我們還將向您展示如何通過構(gòu)建簡單的微服務(wù)應(yīng)用程序來開始使用 Dapr。bCH28資訊網(wǎng)——每日最新資訊28at.com

什么是Dapr?

Dapr是一個(gè)可移植、事件驅(qū)動(dòng)的運(yùn)行時(shí),使任何開發(fā)人員都可以輕松構(gòu)建在云和邊緣運(yùn)行的彈性、無狀態(tài)和有狀態(tài)應(yīng)用程序,并支持多種語言和開發(fā)框架。利用 sidecar 架構(gòu)的優(yōu)勢(shì),Dapr 可以幫助您應(yīng)對(duì)構(gòu)建微服務(wù)所帶來的挑戰(zhàn),并使您的代碼平臺(tái)保持獨(dú)立。分布式應(yīng)用程序運(yùn)行時(shí)簡介:Dapr 是一種可移植、事件驅(qū)動(dòng)的運(yùn)行時(shí),使任何開發(fā)人員都可以輕松構(gòu)建在云和邊緣運(yùn)行的彈性、無狀態(tài)和有狀態(tài)應(yīng)用程序,并支持多種語言和開發(fā)框架。任何語言、任何框架、任何地方:bCH28資訊網(wǎng)——每日最新資訊28at.com

bCH28資訊網(wǎng)——每日最新資訊28at.com

隨著當(dāng)前云采用的浪潮,Web + 數(shù)據(jù)庫應(yīng)用架構(gòu)(例如經(jīng)典的三層設(shè)計(jì))更趨向于本質(zhì)上是分布式的微服務(wù)應(yīng)用架構(gòu)。您不必成為分布式系統(tǒng)專家才能創(chuàng)建微服務(wù)應(yīng)用程序。這就是 Dapr 的用武之地。Dapr 將構(gòu)建微服務(wù)應(yīng)用程序的最佳實(shí)踐編入開放、獨(dú)立的 API(稱為構(gòu)建塊)中。Dapr 的構(gòu)建模塊:bCH28資訊網(wǎng)——每日最新資訊28at.com

  • 使您能夠使用您選擇的語言和框架構(gòu)建可移植應(yīng)用程序。
  • 是完全獨(dú)立的
  • 對(duì)您的應(yīng)用程序中使用的數(shù)量沒有限制

使用 Dapr,您可以逐步將現(xiàn)有應(yīng)用程序遷移到微服務(wù)架構(gòu),從而采用云原生模式,例如橫向擴(kuò)展/收縮、彈性和獨(dú)立部署。Dapr 與平臺(tái)無關(guān),這意味著您可以運(yùn)行您的應(yīng)用程序:bCH28資訊網(wǎng)——每日最新資訊28at.com

  1. 本地
  2. 在任何 Kubernetes 集群上
  3. 在虛擬機(jī)或物理機(jī)上
  4. 在 Dapr 集成的其他托管環(huán)境中。

這使您能夠構(gòu)建可以在云和邊緣運(yùn)行的微服務(wù)應(yīng)用程序。bCH28資訊網(wǎng)——每日最新資訊28at.com

托管環(huán)境

Dapr 可以托管在多種環(huán)境中,包括:

  • 在 Windows/Linux/macOS 機(jī)器上自托管,用于本地開發(fā)
  • 在 Kubernetes 或生產(chǎn)中的物理機(jī)或虛擬機(jī)集群上

自托管本地開發(fā):

在自托管模式下,Dapr 作為單獨(dú)的 sidecar 進(jìn)程運(yùn)行,您的服務(wù)代碼可以通過 HTTP 或 gRPC 調(diào)用該進(jìn)程。每個(gè)正在運(yùn)行的服務(wù)都有一個(gè) Dapr 運(yùn)行時(shí)進(jìn)程(或 sidecar),配置為使用狀態(tài)存儲(chǔ)、發(fā)布/訂閱、綁定組件和其他構(gòu)建塊。您可以使用Dapr CLI在本地計(jì)算機(jī)上運(yùn)行啟用 Dapr 的應(yīng)用程序。在下圖中,Dapr 的本地開發(fā)環(huán)境是使用 CLIinit命令配置的。使用入門示例嘗試一下這一點(diǎn)。bCH28資訊網(wǎng)——每日最新資訊28at.com

bCH28資訊網(wǎng)——每日最新資訊28at.com

Kubernetes:

Kubernetes 可用于:

  • 本地開發(fā)(例如,使用minikube和k3S),或者
  • 生產(chǎn)中。

在 Kubernetes 等容器托管環(huán)境中,Dapr 作為 sidecar 容器運(yùn)行,應(yīng)用程序容器位于同一 Pod 中。bCH28資訊網(wǎng)——每日最新資訊28at.com

Daprdapr-sidecar-injector和dapr-operator控制平面服務(wù)提供一流的集成:

  • 將 Dapr 作為 sidecar 容器在與服務(wù)容器相同的 pod 中啟動(dòng)
  • 提供集群中配置的 Dapr 組件更新通知

該dapr-sentry服務(wù)是一個(gè)證書頒發(fā)機(jī)構(gòu),可在 Dapr sidecar 實(shí)例之間啟用相互 TLS 以實(shí)現(xiàn)安全數(shù)據(jù)加密,并通過Spiffe提供身份。有關(guān)該Sentry服務(wù)的更多信息,請(qǐng)閱讀安全概述將支持 Dapr 的應(yīng)用程序部署并運(yùn)行到 Kubernetes 集群中就像向部署方案添加一些注釋一樣簡單。bCH28資訊網(wǎng)——每日最新資訊28at.com

bCH28資訊網(wǎng)——每日最新資訊28at.com

實(shí)踐和入門:

無論您的開發(fā)人員背景和選擇的語言如何,該項(xiàng)目的啟動(dòng)和運(yùn)行都非常容易。我能夠按照入門指南在我的 MacOS 上立即運(yùn)行各種快速入門。以下是我大致遵循的步驟。bCH28資訊網(wǎng)——每日最新資訊28at.com

安裝 Dapr CLI:

Dapr CLI 是執(zhí)行 Dapr 相關(guān)任務(wù)的主要工具,例如使用 Dapr 運(yùn)行應(yīng)用程序、查看日志、運(yùn)行 Dapr 儀表板或?qū)⑺袃?nèi)容部署到 Kubernetes。bCH28資訊網(wǎng)——每日最新資訊28at.com

brew install dapr/tap/dapr-cli

安裝 CLI 后,我們有幾個(gè)不同的選項(xiàng)來安裝和運(yùn)行 Dapr。我將從要求最低且靈活的選項(xiàng)開始,并從那里開始進(jìn)展。bCH28資訊網(wǎng)——每日最新資訊28at.com

選項(xiàng) 1:不使用 Docker 安裝 Dapr:

這是運(yùn)行 Dapr 的最輕量但不是最有用的方式。bCH28資訊網(wǎng)——每日最新資訊28at.com

dapr init - slim

在此精簡模式下,機(jī)器上僅安裝 daprd 和放置二進(jìn)制文件,這足以在本地運(yùn)行 Dapr sidecar。bCH28資訊網(wǎng)——每日最新資訊28at.com

運(yùn)行 Dapr sidecar:

以下命令將啟動(dòng)一個(gè)名為 no-app 的 Dapr sidecar,在 HTTP 端口 3500 和隨機(jī) gRPC 端口上偵聽。bCH28資訊網(wǎng)——每日最新資訊28at.com

dapr run - app-id no-app - dapr-http-port 3500

恭喜,您的第一個(gè) Dapr Sidecar 正在運(yùn)行。您可以通過以下命令查看 sidecar 實(shí)例:bCH28資訊網(wǎng)——每日最新資訊28at.com

Dapr list

查詢其健康狀態(tài):

curl -i http://localhost:3500/v1.0/healthz

Dapr sidecar 應(yīng)該與應(yīng)用程序一起運(yùn)行,而不是單獨(dú)運(yùn)行。讓我們停止該實(shí)例并使用應(yīng)用程序運(yùn)行它。bCH28資訊網(wǎng)——每日最新資訊28at.com

dapr stop - app-id no-app

使用 Dapr sidecar 運(yùn)行一個(gè)簡單的應(yīng)用程序bCH28資訊網(wǎng)——每日最新資訊28at.com

對(duì)于本演示,我們將使用一個(gè)簡單的 NodeJS應(yīng)用程序:bCH28資訊網(wǎng)——每日最新資訊28at.com

git clone https://github.com/dapr/samples.gitcd samples/hello-dapr-slimnpm install

這是 Dapr 的 Hello World 方式,其要點(diǎn)如下:bCH28資訊網(wǎng)——每日最新資訊28at.com

app.post('/neworder', bodyParser.json(), (req, res) => {  const data = req.body.data;  const orderId = data.orderId; res.status(200).send("Got a new order! Order ID: " + orderId); });

該應(yīng)用程序有一個(gè)/neworder端點(diǎn)正在偵聽端口3000。我們可以使用以下命令運(yùn)行該應(yīng)用程序和 sidecar:bCH28資訊網(wǎng)——每日最新資訊28at.com

dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 node app.js

該命令在端口 3000 上啟動(dòng) NodeJS 應(yīng)用程序,在 3500 上啟動(dòng) Dapr HTTP 端點(diǎn)。一旦您在日志中看到應(yīng)用程序已成功啟動(dòng),我們就可以戳它。但我們不會(huì)直接在端口 3000 上訪問 /neworder 端點(diǎn),而是通過 sidecar 與應(yīng)用程序交互。我們使用 Dapr CLI 來做到這一點(diǎn),如下所示:bCH28資訊網(wǎng)——每日最新資訊28at.com

dapr invoke --verb POST --app-id nodeapp --method neworder --data '{"data": { "orderId": "41" } }'

并查看應(yīng)用程序的響應(yīng)。如果您注意到,CLI 只需要 app-id(而不是主機(jī)和端口)即可定位服務(wù)運(yùn)行的位置。CLI 只是與服務(wù)交互的一種便捷方式。這似乎太神奇了,我們也可以使用簡單的curl命令:bCH28資訊網(wǎng)——每日最新資訊28at.com

curl -XPOST -d @sample.json -H "Content-Type:application/json" http://localhost:3500/v1.0/invoke/nodeapp/method/neworder

此命令使用服務(wù) Dapr 的調(diào)用 API 與應(yīng)用程序同步交互。這是剛剛發(fā)生的情況的直觀表示:bCH28資訊網(wǎng)——每日最新資訊28at.com

bCH28資訊網(wǎng)——每日最新資訊28at.com

通過 Dapr sidecar 調(diào)用端點(diǎn)

現(xiàn)在,通過請(qǐng)求路徑上的 Dapr,我們可以獲得 Daprized 服務(wù)調(diào)用的優(yōu)勢(shì),例如重試、超時(shí)、斷路器、并發(fā)控制等彈性策略;可觀察性增強(qiáng),例如:指標(biāo)、跟蹤、日志;安全增強(qiáng)功能,例如 mTLS、允許列表等。此時(shí),您可以嘗試元數(shù)據(jù)、指標(biāo)端點(diǎn)、使用配置選項(xiàng),或者在 Dapr 儀表板中查看單個(gè)微服務(wù)。bCH28資訊網(wǎng)——每日最新資訊28at.com

Dapr表板

我們運(yùn)行的精簡模式非常適合 Hello World 場景,但不是本地開發(fā)目的的最佳設(shè)置,因?yàn)樗鄙贍顟B(tài)存儲(chǔ)、發(fā)布/訂閱、度量服務(wù)器等。讓我們使用之前的命令(或CTL +C),并刪除 slim Dapr 二進(jìn)制文件:bCH28資訊網(wǎng)——每日最新資訊28at.com

dapr卸載

要記住的一件事是,此命令不會(huì)刪除通常位于 ~/.dapr 文件夾中的默認(rèn)配置和組件規(guī)范文件。到目前為止,我們沒有在步驟中創(chuàng)建任何文件,但如果您遵循其他教程并更改這些文件,它們將保留并應(yīng)用于將來的每個(gè) dapr 運(yùn)行命令(除非被覆蓋)。這給我?guī)砹艘恍├Щ螅?qǐng)記住。bCH28資訊網(wǎng)——每日最新資訊28at.com

選項(xiàng) 2:使用 Docker 安裝 Dapr:

這是出于開發(fā)目的在本地運(yùn)行 Dapr 的首選方式,但它需要 Docker。讓我們來設(shè)置一下:bCH28資訊網(wǎng)——每日最新資訊28at.com

Dapr初始化

該命令將下載并運(yùn)行 3 個(gè)容器bCH28資訊網(wǎng)——每日最新資訊28at.com

  • 與 actor 一起使用的 Dapr 放置容器(我希望這是一個(gè)可選功能)
  • Zipkin 用于從我們的 sidecar 收集跟蹤信息
  • 以及用于狀態(tài)存儲(chǔ)、發(fā)布/訂閱、分布式鎖實(shí)現(xiàn)的單節(jié)點(diǎn) Redis 容器。

您可以驗(yàn)證這些容器何時(shí)運(yùn)行并準(zhǔn)備好開始。bCH28資訊網(wǎng)——每日最新資訊28at.com

docker ps

運(yùn)行快速入門:

我的下一步是嘗試快速入門,演示服務(wù)調(diào)用、發(fā)布/訂閱、狀態(tài)存儲(chǔ)、綁定等的構(gòu)建塊。這些快速入門的很棒之處在于,它們以多種方式演示相同的示例:bCH28資訊網(wǎng)——每日最新資訊28at.com

  • 使用 Dapr SDK,并且不依賴于 Dapr SDK,即僅使用 HTTP。
  • 多種語言:Java、Javascript、.Net、Go、Python 等。

您可以在同一示例中混合和匹配不同的語言和交互方法(SDK 或本機(jī)),以演示 Dapr 的多語言特性。bCH28資訊網(wǎng)——每日最新資訊28at.com

選項(xiàng) 3:在 Kubernetes 上安裝 Dapr:

如果您已經(jīng)走到這一步,您應(yīng)該對(duì) Dapr 可以為您做什么有一個(gè)很好的高層理解。下一步是在 Kubernetes 上部署 Dapr,其中大多數(shù) Dapr 功能都可用并且最接近生產(chǎn)部署。為此,我在本地使用了 minikube,使用默認(rèn)設(shè)置,沒有自定義調(diào)整。bCH28資訊網(wǎng)——每日最新資訊28at.com

dapr init — kubernetes — 等待

如果成功,此命令將在 dapr-system 命名空間中啟動(dòng)以下 pod:bCH28資訊網(wǎng)——每日最新資訊28at.com

  • dapr-operator:管理狀態(tài)存儲(chǔ)、發(fā)布/訂閱、配置等的所有組件
  • dapr-sidecar-injector:將 dapr sidecar 注入帶注釋的部署 Pod
  • dapr-placement:僅需要演員。
  • dapr-sentry:管理服務(wù)之間的 mTLS 并充當(dāng)證書頒發(fā)機(jī)構(gòu)。
  • dapr-dashboard:一個(gè)簡單的 Web 應(yīng)用程序,用于探索 Dapr 集群中正在運(yùn)行的內(nèi)容

這些 Pod 共同代表 Dapr控制平面。bCH28資訊網(wǎng)——每日最新資訊28at.com

注入 sidecar

從現(xiàn)在開始,將 Dapr sidecar 添加到應(yīng)用程序(這將是 Dapr dataplane)就像將以下注釋添加到 Kubernetes 部署一樣簡單:bCH28資訊網(wǎng)——每日最新資訊28at.com

 annotations:     dapr.io/enabled:“true”     dapr.io/app-id:“nodeapp ”     dapr.io/app-port:“3000 ”

該dapr-sidecar-injector 服務(wù)使用 dapr.io/enabled 注釋監(jiān)視新的 Pod,并daprd在 pod 內(nèi)注入包含進(jìn)程的容器。它還將 DAPR_HTTP_PORT 和 DAPR_GRPC_PORT 環(huán)境變量添加到您的容器中,以便它可以輕松與 Dapr 通信,而無需硬編碼 Dapr 端口值。要在 Kubernetes 上部署完整的應(yīng)用程序,我建議使用此分步示例。它有一個(gè)提供者和消費(fèi)者服務(wù),它對(duì)我來說第一次起作用。bCH28資訊網(wǎng)——每日最新資訊28at.com

透明代理與顯式代理:

請(qǐng)注意,Dapr sidecar 注入的侵入性比具有透明 sidecar 的典型服務(wù)網(wǎng)格(例如 Istio 的 Envoy)的侵入性要小。為了注入透明代理,Pod 通常還會(huì)注入一個(gè)在 Pod 啟動(dòng)時(shí)運(yùn)行的 init 容器,并重新配置 Pod 網(wǎng)絡(luò)規(guī)則,以便所有入口和出口流量或應(yīng)用程序容器都通過 sidecar。對(duì)于 Dapr,情況并非如此。注入了一個(gè) sidecar,但您的應(yīng)用程序可以控制何時(shí)以及如何通過其定義良好的顯式(非透明)API 與 Dapr 進(jìn)行交互。透明服務(wù)網(wǎng)格代理在運(yùn)營團(tuán)隊(duì)通常使用的較低網(wǎng)絡(luò)層運(yùn)行,而 Dapr 提供開發(fā)人員所需的應(yīng)用程序?qū)釉Z。如果您對(duì)此主題感興趣,這里很好地解釋了 Dapr 與服務(wù)網(wǎng)格的差異和重疊。bCH28資訊網(wǎng)——每日最新資訊28at.com

概括:

總之,Dapr 作為一個(gè)多功能且事件驅(qū)動(dòng)的運(yùn)行時(shí)出現(xiàn),為構(gòu)建分布式應(yīng)用程序提供了一個(gè)適合初學(xué)者的解決方案。憑借其便攜性和對(duì)簡化開發(fā)復(fù)雜性的重視,Dapr 使新手能夠無縫地駕馭構(gòu)建分布式系統(tǒng)的復(fù)雜性。作為初學(xué)者指南,這篇文章闡明了 Dapr 的基本功能,為開發(fā)人員踏上分布式應(yīng)用程序開發(fā)領(lǐng)域的旅程提供了一個(gè)途徑。bCH28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-27611-0.htmlDapr:用于構(gòu)建分布式應(yīng)用程序的便攜式事件驅(qū)動(dòng)運(yùn)行時(shí)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 簡潔編程之道,十個(gè)Python Itertools方法助你事半功倍

下一篇: 業(yè)內(nèi)人士:臺(tái)積電獲得主要云服務(wù)廠商AI芯片訂單 包括微軟5nm芯片訂單

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 九龙城区| 定远县| 弥渡县| 珠海市| 沐川县| 三穗县| 内乡县| 武宣县| 宿州市| 武城县| 香河县| 雅安市| 铁力市| 梓潼县| 方山县| 永城市| 长乐市| 桂平市| 巴马| 延吉市| 屏东市| 承德县| 茌平县| 梧州市| 罗平县| 会泽县| 郎溪县| 林甸县| 霍山县| 荃湾区| 大竹县| 惠水县| 连云港市| 长子县| 二手房| 临夏市| 宜昌市| 商都县| 马山县| 苏州市| 晋宁县|