Skip to content

bulkhead server

liubao edited this page Aug 17, 2022 · 1 revision

服务端隔离仓

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

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: 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