Spring Cloud 微服务开发:入门、进阶与源码剖析 —— 6.4 Spring Cloud Zuul 基于 DB 实现动态路由 - Go语言中文社区

Spring Cloud 微服务开发:入门、进阶与源码剖析 —— 6.4 Spring Cloud Zuul 基于 DB 实现动态路由


6.4 Spring Cloud Zuul 基于 DB 实现动态路由

前面我们介绍了Zuul的各种路由映射规则的配置方式,这些方式增加了我们在构建应用时的选择余地,这些方式被称为“静态路由”。通常来讲,我们在构建应用的时候就已经把各种路由的映射规则制定好了,但是在实际生产活动中,仍然无法避免上线新的服务,这时就需要新增路由映射规则,但是由于是在生产环境,我们不能轻易停机进行服务上线的活动,那么问题来了,Zuul是在启动时,直接读取配置文件的映射规则写入内容中的,要新增或者修改映射路由,就必须停机在重启。能不能有一种方案,既可以动态的修改路由映射规则,又不需要重启服务的呢?答案当然是肯定的,接下来,我们就介绍一下基于DB(从数据库读取路由映射规则)的动态路由方案。

6.4.1 动态路由核心原理

通过DB实现动态路由,主要是通过重写Zuul的配置读取方式,从配置文件修改为读取数据库,采用事件刷新机制,当数据库数据有变化时,调用Zuul的时间刷新机制,实时的更新Zuul当前路由映射规则。

我们有必要先介绍一下Zuul路由加载和动态刷新的原理,因为要实现动态路由,需要重写这部分的代码,首先我们先看一下Zuul核心类的依赖关系图,如图6-16:

图6-16

  1. DiscoveryClientRouteLocator.java

从名字来看,这个类的作用是路由配置信息的读取和新节点注册变更的操作类,部分核心源码如下:

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/meteor_93/article/details/104137543
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢