17

Bumblebee 微服务网关之负载策略

 4 years ago
source link: https://www.tuicool.com/articles/A7FBnyE
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

制定路径策略

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

JFnINju.png!web

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

7RfyIvE.jpg!web

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

服务负载

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

bmeU3mj.png!web

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

ZRni6fn.jpg!web

权重分配

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

NfUrE3z.png!web

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

qAbU3e3.jpg!web

零权重

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

zQRN73b.png!web

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

ieaI3qU.jpg!web

一致性分配

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

JfANFbe.png!web

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

uu2YJ36.png!web

一致性配置规则

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

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

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

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

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

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

b2Q7ryq.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK