Rainbond对微服务进行请求速率限制详解
目录
- 前置条件
- 操作流程
- 常见问题
Rainbond 默认支持基于 envoy 的全局速率限制。在 Rainbond 默认提供的综合网络治理插件中呈现。本文我们将一个用例呈现 Rainbond 中全局速率限制的使用方式。
前置条件
- Rainbond平台已部署完成。
- 在Rainbond中部署可访问的 Demo 业务。
- 为此组件开通综合网络治理插件。
参考视频
https://player.bilibili.com/player.html?aid=540728010
Rainbond 速率限制设置参考视频
操作流程
1.部署全局限制服务需要使用的 Redis 组件,使用镜像redis:alpine创建组件,组件创建后在端口设置中将 6379 端口别名修改为REDIS,开启对内服务权限。
2.部署全局限制服务,使用镜像的方式部署全局限制服务。使用以下 DockerRun 命令创建组件,组件可部署到业务的同一个应用中。添加后使其依赖上步安装的 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
添加成功后切换到组件端口设置页面,将 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
添加完配置文件后重启组件。
该配置的含义是通过请求来源 IP 进行速率限制,IP为 50.0.0.5 限制访问,其他 IP 地址限制每秒请求 10 次
4.业务组件依赖限制服务组件并更新插件配置
编辑拓扑图使业务组件依赖刚刚部署的速率限制服务组件,然后进入业务组件插件管理,点击已开通的综合治理插件的查看配置入口。在配置表单中做如下配置:
配置OPEN_LIMIT为yes
配置LIMIT_DOMAIN为limit.common,该值与上面配置文件中的配置 domain 形成对应。
配置完成后更新插件配置即可。
5.验证速率限制是否生效
我们可以使用ab命令进行压力测试
ab -n 1000 -c 20 http://5000.gr425688.duaqtz0k.17f4cc.grapps.cn/
结果会显示如下:
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
常见问题
是否可以自定义开发速率限制服务
当然可以,本文采用的服务实现是envoy ratelimit,你可以基于API 规范自主实现。
是否支持更多速率限制策略
速率限制策略还可以支持基于请求头来进行限制,但目前仅支持基于来源 IP 地址。
以上就是Rainbond对微服务进行请求速率限制详解的详细内容,更多关于Rainbond对微服务进行请求速率限制的资料请关注其它相关文章!
上一篇:dockerfile指令构建docker镜像的示例代码
栏 目:其它服务器
下一篇:详解Rainbond内置ServiceMesh微服务架构
本文地址:https://zz.feitang.co/server/32436.html
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





