Skip to content

bulkhead server

chengyouling edited this page Jan 21, 2025 · 2 revisions

服务端隔离仓

服务端隔离仓主要用于限制耗时接口对于系统资源的使用。

Spring Cloud Huawei的服务端隔离可以用下图表示,治理策略配置在provider。

            请求
consumer ----Thread1--REST----Y---> provider(instance1)
               <-------Y---
         ----Thread2--REST----Y---> provider(instance1)
               <-------Y---
         ----Thread3--REST----X---> provider(instance1)
               <-------X---
         ----Thread1--REST----Y---> provider(instance1)
               <-------Y---
         ----Thread2--REST----Y---> provider(instance1)
               <-------Y---
         ----Thread3--REST----X---> provider(instance1)
               <-------X---

配置服务端隔离仓策略

servicecomb:
  matchGroup:
    timeConsumingOperation: |
      matches:
        - apiPath:
            prefix: "/timeConsumingOperation"
  bulkhead:
    ## 隔离仓限制正在处理的请求数为2个,新来的请求等待1000毫秒没有获取到
    ## 许可,将被拒绝。
    timeConsumingOperation: |
      # 发往某个实例的最大正在处理请求数,超过最大值的请求进入等待队列
      maxConcurrentCalls: 2
      # 等待队列中请求最大等待时间,超过maxWaitDuration时间仍然未获得允许,那么请求失败返回
      maxWaitDuration: 1000

该策略限制 timeConsumingOperation 同时有2个请求正在处理。超过的请求会等待1000毫秒,如果获取到许可,继续处理,否则立即失败。

限制某个微服务的流量

servicecomb:
  matchGroup:
    timeConsumingOperation: |
      matches:
        - apiPath:
            prefix: "/timeConsumingOperation"
      serviceName: consumer
  bulkhead:
    ## 隔离仓限制正在处理的请求数为2个,新来的请求等待1000毫秒没有获取到
    ## 许可,将被拒绝。
    timeConsumingOperation: |
      maxConcurrentCalls: 2
      maxWaitDuration: 1000

该策略限制 consumerprovidertimeConsumingOperation 同时有2个请求正在处理。超过的请求会等待1000毫秒,如果获取到许可,继续处理,否则立即失败。

Spring Cloud Gateway

可以在 Spring Cloud Gateway 使用服务端隔离仓策略。由于进入Spring Cloud Gateway的流量信息没有 微服务概念,所以Spring Cloud Gateway不能配置某个微服务的流量,只能配置某个业务的流量。

注意事项

集成Spring Cloud Huawei以后,默认集成了隔离仓模块 spring-cloud-starter-huawei-governance, 只需要通过配置开启具体的隔离仓策略。

Clone this wiki locally