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

當前位置:首頁 > 科技  > 軟件

Dapr:用于構建分布式應用程序的便攜式事件驅動運行時

來源: 責編: 時間:2023-11-17 08:50:22 329觀看
導讀簡介:分布式應用程序變得越來越流行,因為它們比傳統的整體應用程序具有許多優勢。然而,構建和運行分布式應用程序可能非常復雜且具有挑戰性。Dapr 是一個可移植的事件驅動運行時,可以輕松跨云和邊緣構建和運行分布式應用

簡介:

分布式應用程序變得越來越流行,因為它們比傳統的整體應用程序具有許多優勢。然而,構建和運行分布式應用程序可能非常復雜且具有挑戰性。Dapr 是一個可移植的事件驅動運行時,可以輕松跨云和邊緣構建和運行分布式應用程序。它提供了一組構建塊,開發人員可以使用它們輕松構建和運行微服務、事件驅動應用程序和有狀態應用程序。在這篇博文中,我們將介紹 Dapr 并討論其優點和功能。我們還將向您展示如何通過構建簡單的微服務應用程序來開始使用 Dapr。Pvk28資訊網——每日最新資訊28at.com

什么是Dapr?

Dapr是一個可移植、事件驅動的運行時,使任何開發人員都可以輕松構建在云和邊緣運行的彈性、無狀態和有狀態應用程序,并支持多種語言和開發框架。利用 sidecar 架構的優勢,Dapr 可以幫助您應對構建微服務所帶來的挑戰,并使您的代碼平臺保持獨立。分布式應用程序運行時簡介:Dapr 是一種可移植、事件驅動的運行時,使任何開發人員都可以輕松構建在云和邊緣運行的彈性、無狀態和有狀態應用程序,并支持多種語言和開發框架。任何語言、任何框架、任何地方:Pvk28資訊網——每日最新資訊28at.com

Pvk28資訊網——每日最新資訊28at.com

隨著當前云采用的浪潮,Web + 數據庫應用架構(例如經典的三層設計)更趨向于本質上是分布式的微服務應用架構。您不必成為分布式系統專家才能創建微服務應用程序。這就是 Dapr 的用武之地。Dapr 將構建微服務應用程序的最佳實踐編入開放、獨立的 API(稱為構建塊)中。Dapr 的構建模塊:Pvk28資訊網——每日最新資訊28at.com

  • 使您能夠使用您選擇的語言和框架構建可移植應用程序。
  • 是完全獨立的
  • 對您的應用程序中使用的數量沒有限制

使用 Dapr,您可以逐步將現有應用程序遷移到微服務架構,從而采用云原生模式,例如橫向擴展/收縮、彈性和獨立部署。Dapr 與平臺無關,這意味著您可以運行您的應用程序:Pvk28資訊網——每日最新資訊28at.com

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

這使您能夠構建可以在云和邊緣運行的微服務應用程序。Pvk28資訊網——每日最新資訊28at.com

托管環境

Dapr 可以托管在多種環境中,包括:

  • 在 Windows/Linux/macOS 機器上自托管,用于本地開發
  • 在 Kubernetes 或生產中的物理機或虛擬機集群上

自托管本地開發:

在自托管模式下,Dapr 作為單獨的 sidecar 進程運行,您的服務代碼可以通過 HTTP 或 gRPC 調用該進程。每個正在運行的服務都有一個 Dapr 運行時進程(或 sidecar),配置為使用狀態存儲、發布/訂閱、綁定組件和其他構建塊。您可以使用Dapr CLI在本地計算機上運行啟用 Dapr 的應用程序。在下圖中,Dapr 的本地開發環境是使用 CLIinit命令配置的。使用入門示例嘗試一下這一點。Pvk28資訊網——每日最新資訊28at.com

Pvk28資訊網——每日最新資訊28at.com

Kubernetes:

Kubernetes 可用于:

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

在 Kubernetes 等容器托管環境中,Dapr 作為 sidecar 容器運行,應用程序容器位于同一 Pod 中。Pvk28資訊網——每日最新資訊28at.com

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

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

該dapr-sentry服務是一個證書頒發機構,可在 Dapr sidecar 實例之間啟用相互 TLS 以實現安全數據加密,并通過Spiffe提供身份。有關該Sentry服務的更多信息,請閱讀安全概述將支持 Dapr 的應用程序部署并運行到 Kubernetes 集群中就像向部署方案添加一些注釋一樣簡單。Pvk28資訊網——每日最新資訊28at.com

Pvk28資訊網——每日最新資訊28at.com

實踐和入門:

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

安裝 Dapr CLI:

Dapr CLI 是執行 Dapr 相關任務的主要工具,例如使用 Dapr 運行應用程序、查看日志、運行 Dapr 儀表板或將所有內容部署到 Kubernetes。Pvk28資訊網——每日最新資訊28at.com

brew install dapr/tap/dapr-cli

安裝 CLI 后,我們有幾個不同的選項來安裝和運行 Dapr。我將從要求最低且靈活的選項開始,并從那里開始進展。Pvk28資訊網——每日最新資訊28at.com

選項 1:不使用 Docker 安裝 Dapr:

這是運行 Dapr 的最輕量但不是最有用的方式。Pvk28資訊網——每日最新資訊28at.com

dapr init - slim

在此精簡模式下,機器上僅安裝 daprd 和放置二進制文件,這足以在本地運行 Dapr sidecar。Pvk28資訊網——每日最新資訊28at.com

運行 Dapr sidecar:

以下命令將啟動一個名為 no-app 的 Dapr sidecar,在 HTTP 端口 3500 和隨機 gRPC 端口上偵聽。Pvk28資訊網——每日最新資訊28at.com

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

恭喜,您的第一個 Dapr Sidecar 正在運行。您可以通過以下命令查看 sidecar 實例:Pvk28資訊網——每日最新資訊28at.com

Dapr list

查詢其健康狀態:

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

Dapr sidecar 應該與應用程序一起運行,而不是單獨運行。讓我們停止該實例并使用應用程序運行它。Pvk28資訊網——每日最新資訊28at.com

dapr stop - app-id no-app

使用 Dapr sidecar 運行一個簡單的應用程序Pvk28資訊網——每日最新資訊28at.com

對于本演示,我們將使用一個簡單的 NodeJS應用程序:Pvk28資訊網——每日最新資訊28at.com

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

這是 Dapr 的 Hello World 方式,其要點如下:Pvk28資訊網——每日最新資訊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); });

該應用程序有一個/neworder端點正在偵聽端口3000。我們可以使用以下命令運行該應用程序和 sidecar:Pvk28資訊網——每日最新資訊28at.com

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

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

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

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

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

此命令使用服務 Dapr 的調用 API 與應用程序同步交互。這是剛剛發生的情況的直觀表示:Pvk28資訊網——每日最新資訊28at.com

Pvk28資訊網——每日最新資訊28at.com

通過 Dapr sidecar 調用端點

現在,通過請求路徑上的 Dapr,我們可以獲得 Daprized 服務調用的優勢,例如重試、超時、斷路器、并發控制等彈性策略;可觀察性增強,例如:指標、跟蹤、日志;安全增強功能,例如 mTLS、允許列表等。此時,您可以嘗試元數據、指標端點、使用配置選項,或者在 Dapr 儀表板中查看單個微服務。Pvk28資訊網——每日最新資訊28at.com

Dapr表板

我們運行的精簡模式非常適合 Hello World 場景,但不是本地開發目的的最佳設置,因為它缺少狀態存儲、發布/訂閱、度量服務器等。讓我們使用之前的命令(或CTL +C),并刪除 slim Dapr 二進制文件:Pvk28資訊網——每日最新資訊28at.com

dapr卸載

要記住的一件事是,此命令不會刪除通常位于 ~/.dapr 文件夾中的默認配置和組件規范文件。到目前為止,我們沒有在步驟中創建任何文件,但如果您遵循其他教程并更改這些文件,它們將保留并應用于將來的每個 dapr 運行命令(除非被覆蓋)。這給我帶來了一些困惑,請記住。Pvk28資訊網——每日最新資訊28at.com

選項 2:使用 Docker 安裝 Dapr:

這是出于開發目的在本地運行 Dapr 的首選方式,但它需要 Docker。讓我們來設置一下:Pvk28資訊網——每日最新資訊28at.com

Dapr初始化

該命令將下載并運行 3 個容器Pvk28資訊網——每日最新資訊28at.com

  • 與 actor 一起使用的 Dapr 放置容器(我希望這是一個可選功能)
  • Zipkin 用于從我們的 sidecar 收集跟蹤信息
  • 以及用于狀態存儲、發布/訂閱、分布式鎖實現的單節點 Redis 容器。

您可以驗證這些容器何時運行并準備好開始。Pvk28資訊網——每日最新資訊28at.com

docker ps

運行快速入門:

我的下一步是嘗試快速入門,演示服務調用、發布/訂閱、狀態存儲、綁定等的構建塊。這些快速入門的很棒之處在于,它們以多種方式演示相同的示例:Pvk28資訊網——每日最新資訊28at.com

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

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

選項 3:在 Kubernetes 上安裝 Dapr:

如果您已經走到這一步,您應該對 Dapr 可以為您做什么有一個很好的高層理解。下一步是在 Kubernetes 上部署 Dapr,其中大多數 Dapr 功能都可用并且最接近生產部署。為此,我在本地使用了 minikube,使用默認設置,沒有自定義調整。Pvk28資訊網——每日最新資訊28at.com

dapr init — kubernetes — 等待

如果成功,此命令將在 dapr-system 命名空間中啟動以下 pod:Pvk28資訊網——每日最新資訊28at.com

  • dapr-operator:管理狀態存儲、發布/訂閱、配置等的所有組件
  • dapr-sidecar-injector:將 dapr sidecar 注入帶注釋的部署 Pod
  • dapr-placement:僅需要演員。
  • dapr-sentry:管理服務之間的 mTLS 并充當證書頒發機構。
  • dapr-dashboard:一個簡單的 Web 應用程序,用于探索 Dapr 集群中正在運行的內容

這些 Pod 共同代表 Dapr控制平面。Pvk28資訊網——每日最新資訊28at.com

注入 sidecar

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

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

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

透明代理與顯式代理:

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

概括:

總之,Dapr 作為一個多功能且事件驅動的運行時出現,為構建分布式應用程序提供了一個適合初學者的解決方案。憑借其便攜性和對簡化開發復雜性的重視,Dapr 使新手能夠無縫地駕馭構建分布式系統的復雜性。作為初學者指南,這篇文章闡明了 Dapr 的基本功能,為開發人員踏上分布式應用程序開發領域的旅程提供了一個途徑。Pvk28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-27611-0.htmlDapr:用于構建分布式應用程序的便攜式事件驅動運行時

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

下一篇: 業內人士:臺積電獲得主要云服務廠商AI芯片訂單 包括微軟5nm芯片訂單

標簽:
  • 熱門焦點
  • 7月安卓手機性價比榜:努比亞+紅魔兩款新機入榜

    7月登場的新機有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產品,而且努比亞和紅魔也一貫有著不錯的性價比,所以在本次的性價比榜單
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就“胡錫進炒股是否知道認真報道”展開討論。有
  • OPPO、vivo、小米等國內廠商Q2在印度智能手機市場份額依舊高達55%

    7月20日消息,據外媒報道,研究機構的報告顯示,在全球智能手機出貨量同比仍在下滑的大背景下,印度這一有潛力的市場也未能幸免,出貨量同比也有下滑,多家廠
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預測小
Top 主站蜘蛛池模板: 聂荣县| 淳化县| 榆林市| 姜堰市| 申扎县| 南和县| 苏尼特右旗| 大新县| 乐清市| 东安县| 上虞市| 乌恰县| 长治县| 通山县| 图木舒克市| 义马市| 重庆市| 陕西省| 承德市| 新绛县| 武威市| 岳阳市| 宜章县| 合山市| 宁陵县| 河间市| 芦山县| 凤台县| 山西省| 临海市| 旬阳县| 徐闻县| 龙泉市| 金阳县| 榆社县| 库尔勒市| 淳化县| 赣州市| 同心县| 鸡西市| 成安县|