Rainbond對(duì)微服務(wù)進(jìn)行請(qǐng)求速率限制詳解
Rainbond 默認(rèn)支持基于 envoy 的全局速率限制。在 Rainbond 默認(rèn)提供的綜合網(wǎng)絡(luò)治理插件中呈現(xiàn)。本文我們將一個(gè)用例呈現(xiàn) Rainbond 中全局速率限制的使用方式。
前置條件
- Rainbond平臺(tái)已部署完成。
- 在Rainbond中部署可訪問的 Demo 業(yè)務(wù)。
- 為此組件開通綜合網(wǎng)絡(luò)治理插件。
參考視頻
https://player.bilibili.com/player.html?aid=540728010
Rainbond 速率限制設(shè)置參考視頻
操作流程
1.部署全局限制服務(wù)需要使用的 Redis 組件,使用鏡像redis:alpine創(chuàng)建組件,組件創(chuàng)建后在端口設(shè)置中將 6379 端口別名修改為REDIS,開啟對(duì)內(nèi)服務(wù)權(quán)限。
2.部署全局限制服務(wù),使用鏡像的方式部署全局限制服務(wù)。使用以下 DockerRun 命令創(chuàng)建組件,組件可部署到業(yè)務(wù)的同一個(gè)應(yīng)用中。添加后使其依賴上步安裝的 REDIS 組件。
docker run -e USE_STATSD=false -e REDIS_SOCKET_TYPE=tcp -e REDIS_URL=${REDIS_HOST}:${REDIS_PORT} -e RUNTIME_ROOT=/data -e RUNTIME_SUBDIRECTORY=ratelimit -v /data/ -p 8081:8081 barnett/ratelimit:v1.4.0 /bin/ratelimit
添加成功后切換到組件端口設(shè)置頁面,將 8081 端口對(duì)內(nèi)服務(wù)打開并設(shè)置端口別名為RATE_LIMIT_SERVER
默認(rèn)使用的全局限制服務(wù)是 envoy 的默認(rèn)實(shí)現(xiàn),你可以根據(jù) envoy 的速率限制服務(wù) API 規(guī)范進(jìn)行自定義實(shí)現(xiàn)。
3.添加速率限制配置文件
進(jìn)入全局限制服務(wù)組件的環(huán)境管理中,添加配置文件,文件路徑為 /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
添加完配置文件后重啟組件。
該配置的含義是通過請(qǐng)求來源 IP 進(jìn)行速率限制,IP為 50.0.0.5 限制訪問,其他 IP 地址限制每秒請(qǐng)求 10 次
4.業(yè)務(wù)組件依賴限制服務(wù)組件并更新插件配置
編輯拓?fù)鋱D使業(yè)務(wù)組件依賴剛剛部署的速率限制服務(wù)組件,然后進(jìn)入業(yè)務(wù)組件插件管理,點(diǎn)擊已開通的綜合治理插件的查看配置入口。在配置表單中做如下配置:
配置OPEN_LIMIT為yes
配置LIMIT_DOMAIN為limit.common,該值與上面配置文件中的配置 domain 形成對(duì)應(yīng)。
配置完成后更新插件配置即可。
5.驗(yàn)證速率限制是否生效
我們可以使用ab命令進(jìn)行壓力測試
ab -n 1000 -c 20 http://5000.gr425688.duaqtz0k.17f4cc.grapps.cn/
結(jié)果會(huì)顯示如下:
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 次請(qǐng)求有 794 次被限制,被速率限制駁回的請(qǐng)求訪問碼為429
常見問題
是否可以自定義開發(fā)速率限制服務(wù)
當(dāng)然可以,本文采用的服務(wù)實(shí)現(xiàn)是envoy ratelimit,你可以基于API 規(guī)范自主實(shí)現(xiàn)。
是否支持更多速率限制策略
速率限制策略還可以支持基于請(qǐng)求頭來進(jìn)行限制,但目前僅支持基于來源 IP 地址。
以上就是Rainbond對(duì)微服務(wù)進(jìn)行請(qǐng)求速率限制詳解的詳細(xì)內(nèi)容,更多關(guān)于Rainbond對(duì)微服務(wù)進(jìn)行請(qǐng)求速率限制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
K8S?prometheus?operator監(jiān)控工作原理介紹
這篇文章主要為大家介紹了K8S?prometheus?operator監(jiān)控工作原理介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11K8s準(zhǔn)入控制Admission?Controller深入介紹
本篇我們將聚焦于?kube-apiserver?請(qǐng)求處理過程中一個(gè)很重要的部分?--?準(zhǔn)入控制器(Admission?Controller)深入講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04一文解析Kubernetes使用PVC后數(shù)據(jù)丟失
這篇文章主要為大家介紹了Kubernetes使用PVC后數(shù)據(jù)丟失原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案
這篇文章主要介紹了在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03k8s跨服務(wù)調(diào)用入門到實(shí)戰(zhàn)示例詳解
這篇文章主要為大家介紹了k8s跨服務(wù)調(diào)用入門到實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09基于云服務(wù)MRS構(gòu)建DolphinScheduler2調(diào)度系統(tǒng)的案例詳解
這篇文章主要介紹了基于云服務(wù)MRS構(gòu)建DolphinScheduler2調(diào)度系統(tǒng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05