背景
Dapr 是一個開源的分布式應用運行時,幫助開發者構建松耦合的分布式應用程序,具有良好的可擴展性和可維護性。Rainbond 是一款企業級的云原生應用管理平臺,提供了豐富的功能和工具,方便開發者管理和部署應用。Rainbond 和 Dapr 結合可以提供以下價值點:
「1.為Dapr擴展云原生支持:」Rainbond 提供了一套完整的云原生應用支持方案,包括應用開發、應用編排、應用交付、應用運維等應用全生命周期管理能力,而 Dapr 只是應用開發框架,包括應用開發模型、服務發現、事件驅動等功能。將 Rainbond 和 Dapr 結合起來可以提供更完整的云原生應用支持,幫助開發人員更快地構建和部署應用。
「2.讓Dapr應用可移植性增強:」Rainbond提供應用模版能力,Dapr開發的應用以模版的方式打包,可以方便交付和遷移到其他平臺運行。
「3.為Rainbond擴充服務治理能力:」Rainbond 支持通過插件擴展服務治理能力,和 Dapr結合,可以通過Dapr的方式實現服務治理。將二者結合起來,可以提供更完整的服務治理功能,幫助開發人員更好地管理和控制應用中的服務。
「4.為Rainbond增加BaaS能力:」在Rainbond上開發軟件,需要自己安裝后端數據庫和中間件,而Dapr將后端能力以API的方式對外提供,開發者只需要通過API統一訪問后端能力,實現了BaaS體驗。
總之,Dapr和Rainbond能互相補充能力不足,Rainbond 解決了應用生命周期管理的問題,開發者不需要懂底層技術,但還是需要了解后端服務, Dapr 補足了這塊能力,讓開發者更加專注業務。
Rainbond和Dapr的整合思路

在 Dapr 微服務框架的業務體系中,Daprd 是整個業務的核心,應用程序通過運行時 API 發送請求給 Daprd,Daprd 負責處理這些請求,并與底層服務進行交互。Daprd 是由 Dapr Services 中的 dapr-sidecar-injector 服務進行注入的,當 Pod 滿足注入條件后進行注入。同時 Dapr Services 中的 dapr-operator 會監聽整個集群下的 Dapr 配置資源(CRD),當捕獲到有 Dapr 配置類資源的創建后,會記錄在內存中,再次注入的 Daprd 如果 Pod 聲明了使用該配置,則會提供對應的能力。
「Dapr Service 的安裝」:Rainbond 將 Dapr Services 資源進行了整合,作為一個插件應用上架到了應用商店,通過安裝便可以快速讓我們的集群具備 dapr 微服務架構能力,避免了集群中執行 dapr init -k命令,同時解決了國外鏡像拉取的問題。
「DaprD注入」:傳統注入方式我們需要手動添加注入條件字段,費時費力且不易維護還容易出錯;Rainbond 支持通過切換應用的治理模式的方式,為我們的 Pod 添加不同屬性字段以滿足不同微服務架構的注入條件,從而達到批量注入,快速使用、便于管理的效果。
「Dapr配置」:Dapr 提供了四種配置 Daprd 的資源來擴展我們的服務治理能力,分別為Configuration、Component、Resiliency、Subscription,我們需要通過編寫 Yaml 的形式在集群中創建這些資源供業務組件使用,Rainbond 平臺在應用的 k8s 資源的管理入口,其效果與kubectl有些類似但比kubectl更易于管理。其中 Configuration 資源用于存儲應用程序的配置信息,例如連接字符串、密鑰、證書等,需要為 Pod 配置的 annotations屬性去聲明才可使用,Rainbond 的組件視圖提供對annotations屬性配置,簡化了我們配置的流程。
「Dapr Component安裝和對接」:Rainbond 的應用商店已經有很多后端實現,如 MySQL、Redis等,在Rainbond里可以一鍵安裝便可使用。在Dapr應用的K8s資源管理里配置Component的yaml,綁定后端服務的地址。
「Dapr應用開發:」Dapr開發的應用可以用源碼、鏡像、yaml部署到Rainbond平臺上,然后根據Dapr的API規范訪問后端服務,Rainbond提供對Dapr應用的持續集成、持續交付、環境管理、配置管理、日志和性能監控、訪問網關、應用運維等能力,輔助Dapr應用的開發和管理。
部署和使用流程
基于 Rainbond 使用 Dpar 的目標:
- 一鍵部署 Dapr Service,讓集群具備 Dapr 微服務架構能力。
- 自動為業務組件注入 Daprd。
- 可視化管理 Dapr 配置。
- 簡化 Daprd 屬性參數配置流程。
- 多種方式交付你的 Dapr 業務。
下面我通過部署一個發布訂閱的示例,供大家快速了解并掌握 Dapr 在 Rainbond 中是如何使用的
前提條件
- Rainbond 版本大于 v5.13。
- Rainbond 已經對接過開源應用商店并擁有推送權限。
實踐步驟

1. 安裝 Rainbond Service Mesh 插件
Rainbond ServiceMesh 插件負責按照指定治理模式對應用組件進行加工調整,以滿足微服務治理插件注入的基本條件。通過在平臺管理->應?市場->開源應?商店->搜索 Rainbond-ServiceMesh 并進行安裝
2. 安裝Dapr 應用插件
創建一個以 dapr-system 為英文名的團隊,安裝 Dapr Services 。通過在平臺管理->應?市場->開源應?商店->搜索 Rainbond-Dapr 并進行安裝。
3. 綁定 Component
Dapr 支持對接多種 Component 實現,如 Redis、Mysql、Oauth等,在 Rainbond 平臺中安裝也非常簡單,大部分實現都可以在 Rainbond 應用商店中找到,少數不支持的存儲也歡迎大家參與應用制作發布到應用商店中來。本次示例我們需要安裝的是 Redis 通過在平臺管理->應?市場->開源應?商店->搜索 Redis 并進行安裝。安裝完成后,在應用視圖->k8s資源->編寫 Component 資源進行綁定。
apiVersion:dapr.io/v1alpha1
kind:Component
metadata:
name:pubsub
spec:
type:pubsub.redis
version:v1
metadata:
-name:"redisHost"
value:"YOUR_REDIS_HOST_HERE"
-name:"redisPassword"
value:"YOUR_REDIS_PASSWORD_HERE"
如果是 MySQL ,步驟是平臺管理->應?市場->開源應?商店->搜索 MySQL 并進行安裝,安裝完成后在 應用視圖->k8s資源->編寫 Component 資源進行綁定。
apiVersion:dapr.io/v1alpha1
kind:Component
metadata:
name:
spec:
type:state.mysql
version:v1
metadata:
-name:connectionString
value:""
-name:schemaName
value:""
-name:tableName
value:""
-name:pemPath
value:""
4. 切換應用治理模式
將業務應用的治理模式切換至 Dapr 。通過在 應用視圖->治理模式->選擇 Dapr 治理模式進行切換。其中 dapr 治理模式會為我們組件的 annotations 屬性添加字段dapr.io/enabled: "true"以及dapr.io/app-id="xxx" 其中 xxx 為組件的英文名,由于dapr.io/app-id是Dapr 體系中的唯一標識,Rainbond 支持自行配置,如果檢測到有該屬性字段,則優先使用原配置。滿足注入條件后,dapr-sidecar-injector 服務開始工作,為我們的業務組件注入 Daprd。
5. 部署業務
Rainbond 提供了多種方式部署你的業務,鏡像、Helm、Yaml、源碼等等。這里我選擇使用鏡像部署,具體步驟為: 應用視圖->添加組件->指定鏡像->填寫鏡像地址。
demo鏡像地址:
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-node-subscriber:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-react-form:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-go-subscriber:latest
由于 Dapr 中消息隊列需要為組件 annotations 屬性設置 dapr.io/app-port 字段,切換治理模式的時候并沒有自動生成,所以我們需要在組件視圖->其他設置->Kubernetes屬性->新增屬性->選擇 annotations->添加 dapr.io/app-port=組件端口字段。同理其他擴展的 annotations 屬性字段均在此處配置。
6. 部署最終效果
在pubsub-react-form 組件的組件視圖->端口->打開對外服務便可實現訪問消息發布組件,向訂閱 A、B、C中發布消息,通過觀察pubsub-node-subscriber和pubsub-go-subscriber組件的日志可看到訂閱的內容,日志位置:組件視圖->日志。
7. 通過Dapr控制臺管理
訪問 dapr dashboard 可以查看到我們的微服務組件在 Dapr 中的注冊信息。

8.發布應用模版
Rainbond提供應用一鍵發布應用模版的能力,在Dapr開發應用的應用視圖,點擊發布來發布應用模版,并通過應用模版在線和離線快速安裝到其他環境。不過在其他環境使用時需要先安裝Rainbond和Dapr基礎環境。
在Rainbond上擴展Dapr
鏈路追蹤
鏈路追蹤是一種網絡監控和故障排除技術,用于追蹤數據包在網絡中的路徑和經過的節點,以便優化網絡性能和發現問題,在 Dapr 中是通過配置Configuration資源綁定追蹤器實現進行工作的。下面是以 Zipkin 追蹤器實現的Configuration資源配置示例。更多詳見 Dapr Observability[1]。
在應用視圖->k8s資源->編寫 Configuration 資源
apiVersion:dapr.io/v1alpha1
kind:Configuration
metadata:
name:daprConfig
namespace:default
spec:
tracing:
samplingRate:"1"
zipkin:
endpointAddress:"http://localhost:9411/api/v2/spans"
熔斷限流
限制每秒允許的最大 HTTP 請求數,速率限制可以保護您的應用程序免受拒絕服務 (DOS) 攻擊。我們需要配置component資源作為中間件,然后通過Configuration 資源進行綁定,然后在業務組件中配置掛載使用。
在應用視圖->k8s資源->編寫 Component 資源作為中間件,設置每秒的最大請求數為 10。
apiVersion:dapr.io/v1alpha1
kind:Component
metadata:
name:ratelimit
spec:
type:middleware.http.ratelimit
version:v1
metadata:
-name:maxRequestsPerSecond
value:10
在應用視圖->k8s資源->編寫 Configuration 配置資源綁定中間件。
apiVersion:dapr.io/v1alpha1
kind:Configuration
metadata:
name:appconfig
spec:
httpPipeline:
handlers:
-name:ratelimit
type:middleware.http.ratelimit
在組件視圖->其他設置->Kubernetes屬性->新增屬性->選擇annotations->添加 dapr.io/config 屬性字段綁定 Configuration 。
審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
模塊化
+關注
關注
0
文章
356
瀏覽量
22697
-
微服務
+關注
關注
0
文章
150
瀏覽量
8104
-
云原生
+關注
關注
0
文章
265
瀏覽量
8574
原文標題:Dapr和Rainbond集成,實現云原生BaaS和模塊化微服務開發
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
模塊化高精度銣原子鐘存在的意義
在時頻計量領域,銣原子鐘以其穩定性和可靠性成為通信、導航、科研等領域的核心設備。西安同步電子科技有限公司的SYN3306型高性能銣原子鐘,通過將10MHz輸出設計為模塊化結構,實現了從“單一功能設備
Istio服務網格生產環境性能調優的最佳實踐
隨著微服務架構的普及,服務間通信的復雜度呈指數級增長。傳統的應用層負載均衡和服務發現方案已經無法滿足現代云原生應用的需求。Istio作為目前最成熟的
鼎陽科技推PXIe模塊化示波器、PXIe模塊化矢量網絡分析儀產品組合,構建新一代模塊化、軟件定義的測試平臺
、卓越性能與靈活的系統集成能力,這三款產品進一步豐富了公司的產品矩陣,為通信、新能源、半導體等領域的研發與生產測試提供更靈活高效的解決方案。 模塊化數字示波器 高分辨率模塊化示波器 鼎陽MS高分辨率
香港服務器支持Docker和Kubernetes嗎?
在云原生技術成為主流的今天,Docker和Kubernetes(K8s)已成為現代化應用開發和部署的事實標準。對于選擇香港服務器的開發者與企
儲能變流升壓一體機:模塊化集成設計,賦能高效可靠儲能系統
儲能變流升壓一體機憑借其先進的模塊化設計與工廠預制模式,為現代儲能電站建設提供了高效、可靠的解決方案,有效縮短了現場施工周期,降低了整體工程成本與復雜度。 核心優勢與顯著特點 高度集成,快速部署
電商API的微服務架構優化策略
,電商API在高并發、低延遲和數據一致性方面面臨嚴峻挑戰。本文將從基礎概念出發,逐步分析優化策略,幫助開發者構建高性能、可靠的電商API系統。 1. 微服務架構在電商中的應用 微服務架構將傳統單體應用分解為多個小型
新品推薦|模塊化集成式高速連接器
LRM連接器隨著電子技術的快速發展,在電力傳輸、工業自動化、航空航天等領域,對高效、穩定、可靠的電氣連接解決方案的需求日益增長。因此日晟萬晟開發了新一代模塊化集成式高速連接器-LRM系
鴻蒙5開發寶藏案例分享---模塊化設計案例分享
代碼詳解,保證接地氣!
一、為什么必須模塊化?
官方文檔強調: “模塊化是大型應用的生命線” 。當團隊協作開發時(比如購物App分支付、商品、訂單團隊),模塊化能
發表于 06-12 16:17
原理圖模塊化,BOM 物料位號處理
原理圖模塊化,把常用的模塊保存成一個PART(在TOOL 菜單下 選擇 Generate Part)。保存成OLB格式。使用的時候,就像使用元器件一樣,從庫里面拖出來直接放到原理圖上即可。
問題是
發表于 06-09 19:27
企業使用NVIDIA NeMo微服務構建AI智能體平臺
已發布的 NeMo 微服務可與合作伙伴平臺集成,作為創建 AI 智能體的構建模塊,使用商業智能與強大的邏輯推理模型 (包括 NVIDIA Llama Nemotron) 處理更多任務。
從 Java 到 Go:面向對象的巨人與云原生的輕騎兵
(Goroutine/Channel) 在 云原生基礎設施領域 占據主導地位,它也是 Java 開發者探索云原生技術棧的關鍵補
MCU-40型自動測量是如何實現分布式模塊化?
設計,打破了技術瓶頸,成為行業智能化升級的標桿。一、分布式模塊化設計:靈活性與可靠性的雙重突破分布式模塊化設計的核心在于將系統拆分為獨立的功能模塊,通過智能組網
Snap Store開發者工具圖譜:從全棧到云原生,一張圖解鎖Linux開發新姿勢!
PyCharm+Postman構建微服務,還是云原生新人嘗試Kubectl+Helm馴服K8s,SnapStore早已備好全套裝備。本文作為《UbuntuSnap》系列的第三彈
Dapr和Rainbond集成,實現云原生BaaS和模塊化微服務開發
評論