# 《API网关》第27章:实现网关算力节点动态负载功能

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

  • 本章难度:★★★★☆
  • 本章重点:基于第25章Nginx的负载模型,第26章动态刷新Nginx的配置和实现,在本章把网关算力节点动态刷新到Nginx配置中,完成动态负载的功能实现。
  • 课程视频https://t.zsxq.com/0bcnn6xlH (opens new window)

# 一、学习指引

基于第25章Nginx的负载模型,第26章动态刷新Nginx的配置和实现,终于在27章可以把整个流程串联起来,完成网关算力节点的动态负载功能实现了。

这里我们要实现的核心目的就是当有网关算力节点注册到注册中心的时候,可以被动态的配置到Nginx负载中,这样就可以实现动态的变更操作了。

# 二、方案设计

在不使用Nginx代理的时候,前面章节使用网关都是通过直接方式的方式操作,如 http://172.20.10.12:7397/wg/activity/sayHi?str=1 那么现在因为有负载的设计,希望把来自于不同URL的请求负载到不同的网关算力上去,所以这里的访问地址将变更为:http://172.20.10.12:8090/10001/wg/activity/sayHi?str=10001

从第1个地址到第2个地址来看,变化的点主要是端口由原来的访问网关算力节点到访问Nginx,同时多了一个 10001 的路径。这个 10001 就是数据库中 group_id 网关分组的配置。我们也是用这个配置来区分访问哪一组网关。所以整体设计如图;

  • api-gateway-center 管理着网关算力的注册,并把注册的配置信息动态刷新到 Nginx 配置中。
  • 同时在 Nginx 的配置中会重新URL,也就是把 10001 这个根目录路径给去掉,让它的功能只是负责路由即可,剩下的与原有直接访问网关算力不变。这样即使以后不需要做负载也可以直接访问网关算力节点。