启动动态路由的代码

首页 > 实用技巧 > 作者:YD1662023-06-27 02:30:50

● 说明4#:这部分代码是自定义路由加载的核心策略,我们设置了一个布尔型的原子变量:refreshCalled,当这个变量设置为true时,表示需要自定义Locator,强制从数据库中加载最新路由信息。当从数据库同步路由信息并将其存储到本地缓存中时,将refreshCalled设置为false,这样下次加载路由信息时,从缓存中加载就可以了,不需要从远端数据库中加载。这样做的好处是,可以明显提升维护本地路由信息的效 率 。 RouteLocatorUpdater 的 作 用 就 是 当 Admin 调 用refreshRoute 方 法 时 , 将 refreshCalled 原 子 变 量 设 置 为true,强制从数据库同步加载路由信息。

启动动态路由的代码,(9)

最后一步,就是Admin从数据库获取路由数据信息,即从数据库中加载网关的路由信息,并返回给网关节点,作为最新的路由信息。

启动动态路由的代码,(10)

注意:在网关获取动态路由信息的过程中,使用REST方式通过Admin代理获取路由信息,没有使用网关节点直接去数据库查询路由信息,主要有两个原因:

● 网关如果直接连接数据库,就会产生网关与数据库的强耦合关系,对于所有网关服务来说,都需要引入对MySQL数据库的依赖。

● 网关节点服务如果使用连接数据库的方式,那么就需要数据库的相关配置(用户名、密码)等信息,从数据安全的角度考虑,网关作为云原生的服务资源,应该尽量少暴露给后端用户,我们应该通过网关Admin服务统一管理数据库资源。

本文给大家讲解的内容是微服务网关:Zuul的动态路由
  1. 下篇文章给大家讲解的内容是微服务网关:Zuul Filter扩展功能实现
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!
上一页123末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.