Skip to content

负载策略配置

Henry edited this page Oct 8, 2019 · 5 revisions

作为一个微服务网关,提供不同负载策略配置是一项非常重要的主要功能;在这方向Bumblebee提供了非常好的支持。Bumblebee可以针对不同路径制定各自的负载策略,更重要的是这些调整都可以在网关运行过程动态调整!动态策略调整可以更好的应对不同的特发状况,并可以更好的调配负载资源来应对当前的特发情况。在负载上Bumblebee提供了平均和一致性等负载方案,可以更好地制定不同的并发应用需求。

制定路径策略

路径策略是通过正则来描述一个请求路径,组件会优先长正则配匹。

image

以上定义了一个^/api.*负载规则,只要是匹配以上规则的所有API请求都会分配到http://localhost:58387/服务上,而其他请求则分配给http://192.168.2.26:9090/;接下来分别访问一下/json,/api/Index/api/hello,看一下它们的访问日志记录情况.

image

通过组件记录的日志来看,所有/api/的请求都分发到http://localhost:58387/而其他则分发给http://192.168.2.26:9090/

服务负载

应用中往往需要多个服务来处理并发业务,这个时候就存在服务负载的问题;组件提供了权重和一致性等方让用户根据情况来制定不同的服务负载决策。

image

以上配置是所有服务的权重都是零,所以由三个服务平均负载所有请求。可以通过多次访问/json看一下访问记录分配情况:

image

权重分配

由于资源的分配往往不是平均的,所以在实际应用也需要依据服务所拥有的资源多少来配置不同的负载比例。

image

以上配置是http://192.168.2.26:9090/并发分配比例是66%http://192.168.2.25:9090/分配比例则是33%;由于http://192.168.2.27:9090/分配的权重为零所以不参与分配。接下来多次访问/json看一下访问记录分配情况:

image

零权重

一般情况下零权重是不参与负载,但当有权重的服务不可用的时候,那零权重的服务则会提升上来进行处理;因此零权重的服务更多用于是备服务。

image

以上是把有权重的服务关闭了,访问/json看一下访问记录分配情况:

image

一致性分配

有些情况需要把同一路径或不同用户一致性到服务上,这样可以确保这些请求都会被分配到一个服务中。

image

以上设置了url作为一致分配规则,接下来多次访问/json,/employees,/orders/hello看一下访问记录分配情况:

image

一致性配置规则

一致性配置规则如下:host|url|baseurl|(h:name)|(q:name)

  • host获取请求头的Host信息作为一致性依据

  • url获取整个请求url信息作为一致性依据

  • baseurl获取基础url信息作为一致性依据

  • (h:name) 获取某个头部信息作为一致性依据

  • (q:name) 获取某个QueryString值作为一致性依据