Rainbond对微服务进行请求速率限制详解

 更新时间:2022年04月21日 08:42:13   作者:Rainbond作者  
这篇文章主要为大家介绍了Rainbond对微服务进行请求速率限制,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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

前置条件

  1. Rainbond平台已部署完成。
  2. 在Rainbond中部署可访问的 Demo 业务。
  3. 为此组件开通综合网络治理插件。

参考视频

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对微服务进行请求速率限制的资料请关注脚本之家其它相关文章!

相关文章

  • Kubernetes(K8S)彻底卸载详细教程

    Kubernetes(K8S)彻底卸载详细教程

    网络上有很多的K8S安装安装教程,但是唯独很少有卸载教程,有也讲得不清不楚,下面这篇文章主要给大家介绍了关于Kubernetes(K8S)彻底卸载的相关资料,需要的朋友可以参考下
    2024-01-01
  • k8s Service 实现服务发现和负载均衡

    k8s Service 实现服务发现和负载均衡

    这篇文章主要为大家介绍了k8s Service 实现服务发现和负载均衡的工作原理及使用方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • k8s查看pod日志的几种实用方法汇总

    k8s查看pod日志的几种实用方法汇总

    Pod是Kubernetes中能够创建和部署的最小单元,是Kubernetes集群中的一个应用实例,总是部署在同一个节点Node上,下面这篇文章主要给大家介绍了k8s查看pod日志的几种实用方法,需要的朋友可以参考下
    2022-07-07
  • 详解K8S apiVersion对照表

    详解K8S apiVersion对照表

    k8s更新迭代比较快,apiVersion也在不断变化中,每个版本的对应的apiVersion略有不同,这篇文章主要介绍了K8S apiVersion对照表,需要的朋友可以参考下
    2022-07-07
  • 一篇文章搞懂K8S高级特性

    一篇文章搞懂K8S高级特性

    这篇文章主要给大家介绍了关于K8S高级特性的相关资料,文中通过时实例代码以及图文介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-11-11
  • 从小饭馆客流量变大论云原生负载均衡

    从小饭馆客流量变大论云原生负载均衡

    这篇文章主要为大家介绍了从小饭馆客流量变大来讨论云原生负载均衡,为大家做出更生动易懂的云原生解释说明有需要的朋友可以借鉴参考下
    2022-03-03
  • kubernetes存储之GlusterFS集群详解

    kubernetes存储之GlusterFS集群详解

    最近工作中用到了GlusterFS作为Kubernetes的存储,这篇文章主要给大家介绍了关于kubernetes存储之GlusterFS集群的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • K8S-ConfigMap实现应用和配置分离详解

    K8S-ConfigMap实现应用和配置分离详解

    这篇文章主要为大家介绍了K8S-ConfigMap实现应用和配置分离详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Hadoop 2.x与3.x 22点比较,Hadoop 3.x比2.x的改进

    Hadoop 2.x与3.x 22点比较,Hadoop 3.x比2.x的改进

    本文介绍了Hadoop3版本中添加的新功能,Hadoop 2和Hadoop 3的区别,在这篇文章中,我们将讨论Hadoop 2.x与Hadoop 3.x之间的比较。感兴趣的朋友跟随小编一起看一下
    2018-09-09
  • k8s常用命令大全(最新推荐)

    k8s常用命令大全(最新推荐)

    这篇文章主要介绍了k8s常用命令大全,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论