日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈surging服务引擎中的rabbitmq组件和容器化部署

發布時間:2023/12/4 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈surging服务引擎中的rabbitmq组件和容器化部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、前言

上個星期完成了surging 的0.9.0.1 更新工作,此版本通過nuget下載引擎組件,下載后,無需通過代碼build集成,引擎會通過Sidecar模式自動掃描裝配異構組件來構建服務引擎,而這篇將介紹淺談surging服務引擎中的rabbitmq組件和容器化部署

surging源碼下載

2、Sidecar模式

  比如現在比較火的Service Mesh, 談到Service Mesh,就不得不了解下Sidecar模式,Sidecar設計模式被越來越多的關注和采用,此模式之所以稱作Sidecar,是因為它類似于三輪摩托車上的挎斗。?在此模式中,挎斗附加到應用程序中,為應用程序提供支持性功能。挎斗與應用程序具有相同的生命周期:與應用程序一起創建,一起停用。?挎斗模式有時也稱為搭檔模式,這是一種分解模式。而surging 采用了Sidecar模式用來附加組件,而使用Sidecar模式有以下功能

  • ??? 共享存儲空間

 ???? 引擎組件部署到共享的文件目錄里,服務引擎從共享的文件目錄掃描引擎組件文件。

  • ?? 共享組件和業務的配置文件

??????? 針對于組件的配置文件部署到共享的文件目錄里,服務引擎從共享的文件目錄加載文件。

  • ? 獨立的業務服務

??????? 針對于業務可以把依賴的組件打包部署到共享的文件目錄里,服務引擎從共享的文件目錄掃描加載,從而部署成獨立的業務服務

  • ?? 內置多種協議

??????? 針對于獨立部署的業務服務,內置了多種協議,提供給服務和外部程序進行調用

????? 模式特點

  • 隔離:讓組件都能夠關注核心問題。比如eventbus、Logger、 netty 在實現功能的同時無需關注其它組件的實現而發生的沖突;

  • 單一責任原則:每個組件都應該職責分開,而根據這一原則,職責應該是對應一個類、模塊或者接口,從而能夠獨立進行處理。

  • 內聚性/可重用性:針對組件的特性,方法可以進行重用,從而滿足組件可持續擴展。

3、基于Event Bus 的Rabbitmq組件

?????? surging服務引擎擴展了基于eventbus 的rabbitmq ,組件可以選擇綁定?Normal,Retry(Dead letter),Fail?,如下圖所示。

?????? 而針對于該組件有哪些應用場景呢?

  • 商品秒殺和搶購

??????? 搶購/秒殺是如今很常見的一個應用場景,在高并發的流量訪問下可以將用戶放入到搶購隊列中,購買成功則銷毀消息。

  • 最終數據的一致性

??? ?? 在大型業務中,系統一般由多個獨立的服務組成,在分布式調用時候把消息放入到rabbitmq 隊列中,再通過消息的冪等性來解決數據的最終一致性

  • ?訂單失效處理

?????? 在購買商品/服務生成訂單業務中,會設定支付時間,如果一直未支付,會直接關閉訂單,而這個場景可以通過死信隊列的來解決

?

示例代碼

可以通過繼承BaseIntegrationEventHandler或者IIntegrationEventHandler,再通過QueueConsumer特性進行標識,具體代碼如下

?可以通過以下選項去更改配置

生成綁定的隊列如下圖

通過rabbitmq管理工具,可以通過properties來查看重試次數count 等一些信息,如下圖所示

?

4、如何部署

surging 服務引擎構建鏡像部署在docker中,可以按照業務需求自定義化引擎,也可以從 docker hub中pull鏡像,可以按照如下流程從docker hub 拉取部署鏡像

如何pull鏡像

可以通過命令:

docker pull serviceengine/surging

可以指定具體的tag來拉取,比如需要拉取v0.9.0.2,執行以下命令

docker pull serviceengine/surging:v0.9.0.2

如何配置

1.鏡像可以用環境變量設置相關參數,而通過以下的默認配置文件知曉如何通過環境變量配置參數,配置的規則:${環境變量名}|默認值

2.可以通過設置環境變量surgingpath和cachepath來指定自定義文件配置,比如,掛載/home/fanly 目錄,通過以下命令參數 -v /home/fanly:/home/fanly 來設定,再通過設置以下命令參數用來設定自定義文件配置

--env surgingpath=/home/fanly/configs/surgingSettings.json--env cachepath=/home/fanly/configs/cacheSettings.json?

如何啟動內置引擎組件

引擎可以加載多個同一類型的引擎組件,可以通過以下配置啟用哪一種引擎組件,如果是自定義的服務引擎,不需要配置以下配置,只需要按照需求引用組件

如何啟動引擎

比如 pull 的鏡像是serviceengine/surging:v0.9.0.2 ,可以按照以下命令進行啟動

docker run --name surging --env surgingpath=/home/fanly/configs/surgingSettings.json --env cachepath=/home/fanly/configs/cacheSettings.json -v /home/fanly:/home/fanly serviceengine/surging:v0.9.0.2

?7.總結

如有問題請到這里提問 ,可以加入surging互相交流QQ群:542283494,引擎組件擴展溝通群:615562965

原文地址:?https://www.cnblogs.com/fanliang11/p/9543267.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的浅谈surging服务引擎中的rabbitmq组件和容器化部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。