rainbond 預設支援基於 envoy 的全域性速率限制。在 rainbond 預設提供的綜合網路治理外掛程式中呈現。本文我們將乙個用例呈現 rainbond 中全域性速率限制的使用方式。
rainbond平台已部署完成。
在rainbond中部署可訪問的 demo 業務。
為此元件開通綜合網路治理外掛程式。
1.部署全侷限**務需要使用的 redis 元件,使用映象redis:alpine
建立元件,元件建立後在埠設定中將 6379 埠別名修改為redis
,開啟對內服務
許可權。
2.部署全侷限**務,使用映象的方式部署全侷限**務。使用以下 dockerrun 命令建立元件,元件可部署到業務的同乙個應用中。新增後使其依賴上步安裝的 redis 元件。
docker run -e use_statsd=false -e redis_socket_type=tcp -e redis_url=$:$ -e runtime_root=/data -e runtime_subdirectory=ratelimit -v /data/ -p 8081:8081 barnett/ratelimit:v1.4.0 /bin/ratelimit
新增成功後切換到元件埠設定頁面,將 8081 埠對內服務開啟並設定埠別名為rate_limit_server
預設使用的全侷限**務是 envoy 的預設實現,你可以根據 envoy 的速率限**務 api 規範進行自定義實現。3.新增速率限制配置檔案
進入全侷限**務元件的環境管理中,新增配置檔案,檔案路徑為/data/ratelimit/config/config.yaml
domain: limit.common
descriptors:
- key: remote_address
rate_limit:
unit: second
requests_per_unit: 10
# black list ip
- key: remote_address
value: 50.0.0.5
rate_limit:
unit: second
requests_per_unit: 0
新增完配置檔案後重啟元件。
4.業務元件依賴限**務元件並更新外掛程式配置
配置完成後更新外掛程式配置即可。
5.驗證速率限制是否生效
我們可以使用ab
命令進行壓力測試
結果會顯示如下:
concurrency level: 20
time taken for tests: 6.132 seconds
complete requests: 1000
failed requests: 794
(connect: 0, receive: 0, length: 794, exceptions: 0)
non-2xx responses: 794
可見 1000 次請求有 794 次被限制,被速率限制駁回的請求訪問碼為429
基於Spring Cloud的微服務落地
hystrix 容器管理元件,實現斷路器模式,倘若依賴的服務出現延遲或故障,則提供強大的容錯功能。ribbon 客戶端負載均衡的服務呼叫元件。feign 基於ribbon和hystrix的宣告式服務呼叫元件。zuul 閘道器元件,提供智慧型路由 訪問過濾等功能。archaius 外部化配置元件。sp...
基於spring boot的rest微服務框架
週末在家研究spring boot,參考github上的一些開源專案,整了乙個rest微服務框架,取之於民,用之於民,在github上開源了,位址如下 主要特性如下 資料訪問 資料庫初始化指令碼 見src mybatis generator ddl.sql 資料實體 生成 採用mybatis gen...
基於spring boot的rest微服務框架
週末在家研究spring boot,參考github上的一些開源專案,整了乙個rest微服務框架,取之於民,用之於民,在github上開源了,位址如下 主要特性如下 資料訪問 資料庫初始化指令碼 見src mybatis generator ddl.sql 資料實體 生成 採用mybatis gen...