我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Rainbond对微服务进行请求速率限制的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Rainbond对微服务进行请求速率限制的方法

本篇内容主要讲解“Rainbond对微服务进行请求速率限制的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Rainbond对微服务进行请求速率限制的方法”吧!

Rainbond 默认支持基于 envoy 的全局速率限制。在 Rainbond 默认提供的综合网络治理插件中呈现。本文我们将一个用例呈现 Rainbond 中全局速率限制的使用方式。

前置条件

  1. Rainbond平台已部署完成。

  2. 在Rainbond中部署可访问的 Demo 业务。

  3. 为此组件开通综合网络治理插件。

参考视频

https://player.bilibili.com/player.html?aid=540728010

Rainbond 速率限制设置参考视频

操作流程

部署全局限制服务需要使用的 Redis 组件,使用镜像redis:alpine创建组件,组件创建后在端口设置中将 6379 端口别名修改为REDIS,开启对内服务权限。

部署全局限制服务,使用镜像的方式部署全局限制服务。使用以下 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 规范进行自定义实现。

添加速率限制配置文件

进入全局限制服务组件的环境管理中,添加配置文件,文件路径为 /data/ratelimit/config/config.yaml

domain: limit.commondescriptors:  - 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 次

业务组件依赖限制服务组件并更新插件配置

编辑拓扑图使业务组件依赖刚刚部署的速率限制服务组件,然后进入业务组件插件管理,点击已开通的综合治理插件的查看配置入口。在配置表单中做如下配置:

配置OPEN_LIMIT为yes

配置LIMIT_DOMAIN为limit.common,该值与上面配置文件中的配置 domain 形成对应。

配置完成后更新插件配置即可。

验证速率限制是否生效

我们可以使用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对微服务进行请求速率限制的方法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Rainbond对微服务进行请求速率限制的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Rainbond对微服务进行请求速率限制的方法

本篇内容主要讲解“Rainbond对微服务进行请求速率限制的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Rainbond对微服务进行请求速率限制的方法”吧!Rainbond 默认支持基于
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录