通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护...
dapr目前更新到了1.2版本,在之前4月份的時候來自阿里的開發工程師發起了一個dapr集成Alibaba Sentinel的提案,很快被社區加入到了1.2的里程碑中并且在1.2 release 相關升級文檔里可以看到已經實現了對Alibaba Sentinel的支持。今天我們就講講我們如何通過Sentinel實現對我們接口的保護。
目錄:
一、通過Dapr實現一個簡單的基于.net的微服務電商系統
二、通過Dapr實現一個簡單的基于.net的微服務電商系統(二)——通訊框架講解
三、通過Dapr實現一個簡單的基于.net的微服務電商系統(三)——一步一步教你如何擼Dapr
四、通過Dapr實現一個簡單的基于.net的微服務電商系統(四)——一步一步教你如何擼Dapr之訂閱發布
通過Dapr實現一個簡單的基于.net的微服務電商系統(五)——一步一步教你如何擼Dapr之狀態管理
通過Dapr實現一個簡單的基于.net的微服務電商系統(六)——一步一步教你如何擼Dapr之Actor服務
通過Dapr實現一個簡單的基于.net的微服務電商系統(七)——一步一步教你如何擼Dapr之服務限流
通過Dapr實現一個簡單的基于.net的微服務電商系統(八)——一步一步教你如何擼Dapr之鏈路追蹤
通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權
通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權-百度版
通過Dapr實現一個簡單的基于.net的微服務電商系統(十)——一步一步教你如何擼Dapr之綁定
通過Dapr實現一個簡單的基于.net的微服務電商系統(十一)——一步一步教你如何擼Dapr之自動擴/縮容
通過Dapr實現一個簡單的基于.net的微服務電商系統(十二)——istio+dapr構建多運行時服務網格
通過Dapr實現一個簡單的基于.net的微服務電商系統(十三)——istio+dapr構建多運行時服務網格之生產環境部署
通過Dapr實現一個簡單的基于.net的微服務電商系統(十四)——開發環境容器調試小技巧
通過Dapr實現一個簡單的基于.net的微服務電商系統(十五)——集中式接口文檔實現
附錄:(如果你覺得對你有用,請給個star)
一、電商Demo地址:https://github.com/sd797994/Oxygen-Dapr.EshopSample
二、通訊框架地址:https://github.com/sd797994/Oxygen-Dapr
dapr的發展確實很快,在4月份開始這個基于dapr1.0的系列在服務治理這塊dapr還僅僅只能依靠基于middleware.http.ratelimit的對下游進行粗粒度的服務保護,或者基于app-max-concurrency來約束來自上游的并發數。僅僅兩個小版本后dapr就通過component實現了對sentinel的支持,不得不說社區的反應速度還是很快的。那sentinel到底是個什么呢?在sentinel官網開篇的一句話簡介里是這么描述的:“sentinel 是面向分布式服務架構的高可用防護組件,主要以流量為切入點,從流量控制、熔斷降級、系統自適應保護等多個維度來幫助用戶保障微服務的穩定性。”,所以sentinel提供的是分布式應用四大類基本需求中之一——網絡需求這塊的相關部分能力。也就是微服務常見的限流、熔斷降級等服務保護能力,而dapr通過模塊化的component讓開發者可以快速集成sentinel只需要配置不同的規則約束告知dapr sidecar即可獲取相關的下游服務保護能力。sentinel組件本身成熟度也挺高的,在阿里內部廣泛使用了多年,并且對 Dubbo、Spring Cloud、gRPC、Zuul、Reactor、Quarkus 等框架都做了集成,所以目前我們可以放心的使用它。
今天的案例我們簡單的模擬一下使用sentinel的限流能力來對我們下游服務特定接口提供保護能力,依然使用我們目前這套電商demo來完成,由于sentinel是對下游服務進行保護,所以我們需要將相關的規則寫入到我們的apigateway對應的sidecar中,這樣確保來自于客戶端的請求都會被正確的限制流量,接下來我們來限制一下對accountservice的accountquery/checkrolebasedaccesscontroler這個接口做流量限制,按照1秒10次的方式,component如下:
apiVersion: dapr.io/v1alpha1 kind: Component metadata:name: sentinelnamespace: dapreshop spec:type: middleware.http.sentinelversion: v1metadata:- name: appNamevalue: "accountflowrule"- name: logDirvalue: "/tmp"- name: flowRulesvalue: >-[{"resource": "POST:/v1.0/invoke/accountservice/method/accountquery/checkrolebasedaccesscontroler","threshold": 10,"tokenCalculateStrategy": 0,"controlBehavior": 0}]這條規則告訴dapr我們需要啟動sentinel中間件,并且注入一條規則規定對下游資源(resource)的訪問維持在10次/秒(threshold),其中流量控制器的Token計算策略(tokenCalculateStrategy)采用默認也就是以threshold作為閾值,超出的請求部分采用的策略(controlBehavior)是拒絕服務。接著我們創建一個Configuration并注入到我們的apigateway這個deployment中:
apiVersion: dapr.io/v1alpha1 kind: Configuration metadata:name: sentinelconfignamespace: dapreshop spec:httpPipeline:handlers:- name: sentineltype: middleware.http.sentinelapiVersion: apps/v1 kind: Deployment metadata:name: apigatewaynamespace: dapreshop spec:selector:matchLabels:app: apigatewayreplicas: 1template:metadata:labels:app: apigatewayversion: v1annotations:dapr.io/enabled: "true"dapr.io/app-id: "apigateway"dapr.io/app-port: "80"dapr.io/config: "sentinelconfig" .....接著我們apply一下將compenent注冊到dapr環境中,并且重啟我們的apigateway。重啟完成后我們查看一下apigateway sidecar的日志可以看到配置已經正確的注入進去了并且已經成功的enabled sentinel:
?
? 接下來我們啟動一個測試程序通過apigateway暴露到內網的地址來訪問這個接口,其最終結果如下:
?
? 可以看到sentinel成功的完成了對接口的保護工作,將我們的接口請求頻率維持在了10次/秒的基礎上。好了,今天的分享就到這里,照例歡迎轉發 fork + star~
相關文章:
Dapr能否引領云原生中間件的未來?
云原生 | 阿里巴巴的Dapr實踐與探索
Dapr | 云原生的抽象與實現
Dapr 可視化指南
Dapr 知多少 | 分布式應用運行時
Dapr 正式發布 1.0
Dapr 交通流量控制示例
Dapr是如何簡化微服務的開發和部署
微軟開源微服務運行時Dapr,賦能云原生應用開發
YARP實現Dapr服務調用的反向代理
Dapr微服務應用開發系列0:概述
Dapr微服務應用開發系列1:環境配置
Dapr微服務應用開發系列2:Hello World與SDK初接觸
Dapr微服務應用開發系列3:服務調用構件塊
Dapr微服務應用開發系列4:狀態管理構件塊
Dapr微服務應用開發系列5:發布訂閱構建塊
Windows環境下Dapr入門
云原生 | .NET 5 with Dapr 初體驗
通過Dapr實現一個簡單的基于.net的微服務電商系統
通過Dapr實現一個簡單的基于.net的微服務電商系統(二)——通訊框架講解
通過Dapr實現一個簡單的基于.net的微服務電商系統(三)——一步一步教你如何擼Dapr
通過Dapr實現一個簡單的基于.net的微服務電商系統(四)——一步一步教你如何擼Dapr之訂閱發布
通過Dapr實現一個簡單的基于.net的微服務電商系統(五)——一步一步教你如何擼Dapr之狀態管理
通過Dapr實現一個簡單的基于.net的微服務電商系統(六)——一步一步教你如何擼Dapr之Actor服務
通過Dapr實現一個簡單的基于.net的微服務電商系統(七)——一步一步教你如何擼Dapr之服務限流
通過Dapr實現一個簡單的基于.net的微服務電商系統(八)——一步一步教你如何擼Dapr之鏈路追蹤
通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權
通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權-百度版
通過Dapr實現一個簡單的基于.net的微服務電商系統(十)——一步一步教你如何擼Dapr之綁定
通過Dapr實現一個簡單的基于.net的微服務電商系統(十一)——一步一步教你如何擼Dapr之自動擴/縮容
通過Dapr實現一個簡單的基于.net的微服務電商系統(十二)——istio+dapr構建多運行時服務網格
通過Dapr實現一個簡單的基于.net的微服務電商系統(十三)——istio+dapr構建多運行時服務網格之生產環境部署
通過Dapr實現一個簡單的基于.net的微服務電商系統(十四)——開發環境容器調試小技巧
通過Dapr實現一個簡單的基于.net的微服務電商系統(十五)——集中式接口文檔實現
WebAssembly + Dapr = 下一代云原生運行時?
dapr 應用開發 | 環境配置
乘風破浪,.Net Core遇見Dapr,為云原生而生的分布式應用運行時
Dapr案例之高德 Serverless 平臺建設及實踐
在非容器(集群)環境下運行dapr
構建屬于你自己的dapr服務發現
構建屬于你自己的dapr綁定組件
總結
以上是生活随笔為你收集整理的通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在.NET 6中使用DateOnly和T
- 下一篇: C#-using与添加引用的关系