首页 > 其他分享 >envoy&istio 对接ratelimit 实现限流之ratelimit启动

envoy&istio 对接ratelimit 实现限流之ratelimit启动

时间:2024-03-07 20:00:11浏览次数:25  
标签:配置文件 启动 envoy ratelimit 限流 RUNTIME TYPE unit

直接采用官方提供的Docker镜像进行启动

编写docker-compose.yaml 文件

version: "3"
services:
  ratelimit:
      image: envoyproxy/ratelimit:19f2079f
      command: /bin/ratelimit
      ports:
        - 8080:8080
        - 8081:8081
        - 6070:6070
      volumes:
        - ./config:/data/ratelimit/config
      environment:
        - USE_STATSD=false
        - LOG_LEVEL=debug
        - REDIS_SOCKET_TYPE=tcp
        - REDIS_URL=redis.wangpc:6379
        - RUNTIME_ROOT=/data
        - RUNTIME_SUBDIRECTORY=ratelimit
        - RUNTIME_WATCH_ROOT=false
        - CONFIG_TYPE=FILE

这里使用了极简启动,不使用statsd-exporter 进行数据采集,配置文件使用本地文件的方式。

volumes文件挂载,这里将配置文件挂载到/data/ratelimit/config/目录,挂载的路径要跟RUNTIME_* 相关环境变量进行匹配。

CONFIG_TYPE 环境变量指定 配置文件类型,可选值:FILE、GRPC_XDS_SOTW。GRPC_XDS_SOTW类型需要启动一个对应的XDS服务。后续会有示例

需要注意的是,如果CONFIG_TYPE设置为FILE,那么配置文件必须要有,如果没有会启动报错

这里就是用官方给出的一个示例

domain: mongo_cps
descriptors:
  - key: database
    value: users
    rate_limit:
      unit: second
      requests_per_unit: 500
  - key: database
    value: default
    rate_limit:
      unit: second
      requests_per_unit: 500

执行 docker-compose up -d && docker-compose logs -f 即可启动服务并查看日志。

下一篇讲envoy对接

标签:配置文件,启动,envoy,ratelimit,限流,RUNTIME,TYPE,unit
From: https://www.cnblogs.com/pjjwpc/p/18059648

相关文章

  • 多线程限流工具类-Semaphore
    Semaphore介绍Semaphore(信号量)是JAVA多线程中的一个工具类,它可以通过指定参数来控制执行线程数量,一般用于限流访问某个资源时使用。Semaphore使用示例需求场景:用一个核心线程数为6,最大线程数为20的线程池执行任务,但是要求最多只能同时运行3个线程代码:publicclassdemo{......
  • envoy&istio 对接ratelimit 实现限流之ratelimit简介
    23年的时候公司因调用企业微信接口超限,导致业务问题。架构组经过协商后决定上一个限流服务。限流这块自然而然就落到我负责的网关这块,小公司我一个人负责api网关这块。之前基于istio给公司上线了一个本地的限流(我给公司开发了一个devops管理工具,可以用来管理k8s、istio、jenki......
  • Sentinel系列之(六)热点参数限流规则
    热点参数限流规则......
  • 面试官:限流的实现方式有哪些?
    限流是指在各种应用场景中,通过技术和策略手段对数据流量、请求频率或资源消耗进行有计划的限制,以避免系统负载过高、性能下降甚至崩溃的情况发生。限流的目标在于维护系统的稳定性和可用性,并确保服务质量。使用限流的好处有以下几个:保护系统稳定性:过多的并发请求可能导致服务......
  • OpenResty中如何实现,按QPS、时间范围、来源IP进行限流
    OpenResty是一个基于Nginx与Lua的高性能Web平台,它通过LuaJIT在Nginx中运行高效的Lua脚本和模块,可以用来处理复杂的网络请求,并且支持各种流量控制和限制的功能。近期研究在OpenResty中如何实现,按QPS、时间范围、来源IP进行限流,以及动态更新限流策略。今天将实现方案分享给大家。......
  • 9.Polly在NET中的使用,重试、熔断、超时、降级、限流简单用法
    Polly是一个.NET弹性和瞬态故障处理库,允许开发人员以Fluent和线程安全的方式来实现重试、断路、超时、隔离、限流和降级策略。文档: https://gitee.com/hubo/Polly重试(Retry)出现故障自动重试,这个是很常见的场景,如:当发生请求异常、网络错误、服务暂时不可用时,就应该重试。......
  • Nginx 配置限流
    Nginx配置限流1概述2限制请求速率2.1、正常限流2.2、处理突发流量2.3、设置白名单2.4、limit_req重复3限制连接数4上传/下载速率限制4.1、limit_rate4.2、limit_rate_after4.3、proxy_limit_rate4.4、动态限速4.2、基于变量动态限速1概述限流(RateLimitt......
  • 限流算法
    固定时间窗比如1秒钟限制访问100次,则用1秒作为时间窗,用个计数器,下个时间窗到了就把计数器置0;实现方式可以用一个线程定时1秒钟刷一次,但在某些系统中,可能会有很多个qps拦截器,这样会导致线程数很多,所以也可以改成记录上次时间窗的时间点,每次计数器+1之前算一下时间窗是否超过1秒了......
  • Java 21 虚拟线程如何限流控制吞吐量
    虚拟线程(VirtualThreads)是Java21所有新特性中最为吸引人的内容,它可以大大来简化和增强Java应用的并发性。但是,随着这些变化而来的是如何最好地管理此吞吐量的问题。本文,就让我们看一下开发人员在使用虚拟线程时,应该如何管理吞吐量。在大多数情况下,开发人员不需要自己创建虚拟......
  • 使用Redis的ZSet集合实现接口限流
    背景一般在设计后端接口的时候,一般都会预估接口能承受的最大流量是多少。那么如果瞬时流量超过了接口的承载力,我们就需要考虑接口做限流处理了。限流实际上是指限制系统的输入流量和输出流量已保持系统的稳定性,防止极端条件下系统因为突然的请求激增而造成的崩溃。思考我们知......