这里网关后台的热更新方案实现这样可以吗?

来源:9-2 基本知识科普 - 介绍及安装参考

weibo_隱懓_0

2021-03-12

网关后台配置负载均衡等策略信息和网关相关配置信息,每次都需要重启网关服务器,来重新加载DB最新内容到内存中。

Q1.可否把通过consul这种注册中心,网关后台每更新信息后调用consul api,把信息更新到consul中,然后consul自动监听信息更改后,自动触发网关更新内存,来实现网关的热更新。

Q2.然而客户端的服务发现不太适用同步节点信息,这里只能是采用服务端的服务发现吧?。

Q3.老师说的热更新是这个意思吧?不是web服务配置文件的热更新加载吧?如果重启整个网关服务的话会对后面所有的服务都造成影响。

我理解的对吗?

写回答

7回答

牛儿吃草

2021-03-31

实际准备这样搞:
1、db中存储zk的配置信息
2、每个实例服务注册zk的ip节点绑定
3、网关主动watch对应zk节点变化,实现上是一个观察者模式的lbconfiger
4、这个lbconfiger监听到变化后就会通知loadbalance更新实际节点信息了。

最近考虑把这段代码,整合到咱们项目中。

1
6
牛儿吃草
回复
weibo_隱懓_0
可以的,原理就是观察者模式。改造需要一定时间。
2021-06-27
共6条回复

qq_慕工程65285

2021-05-06

有解了吗 去年六月老师回复这功能比较好加 现在也没看到谁加上

0
1
牛儿吃草
最新支持热更新分支发布了,你可以试试。 https://github.com/e421083458/go_gateway/tree/loadwatch 新增的代码差异在这里有体现: https://github.com/e421083458/go_gateway/compare/loadwatch?expand=1
2021-05-16
共1条回复

牛儿吃草

2021-03-31

q1可以中consul作为配置中心,当然也可以用zk
q2可以用客户端模式也可以用服务端模式,服务端模式需要主动去注册的。
q3不会使用监听配置文件的方式,要么从db里读取,要么从配置中心读取信息。

0
0

慕丝4332457

2021-03-22

关于你说的这个配置数据热更的问题,有个办法是架一个缓存层,数据存入读取都走缓存层,缓存层去主动同步数据库。网关服务在缓存层读数据,dashboard也在缓存层更新数据

0
5
牛儿吃草
实际准备这样搞: 1、db中存储zk的配置信息 2、每个实例服务注册zk的ip节点绑定 3、网关主动watch对应zk节点变化,实现上是一个观察者模式的lbconfiger 4、这个lbconfiger监听到变化后就会通知loadbalance更新实际节点信息了。 最近考虑把这段代码,整合到咱们项目中。
2021-03-31
共5条回复

慕斯1088534

2021-03-19

又有新发现:在第十章中,http服务获取发现是通过中间件(HTTPAccessModeMiddleware)来实现,HTTPAccessModeMiddleware是读取数据库实现不过是热更新,就是数据库http相关服务变动后,中间件不能热更新,估计在这个中间件做个热更新应该就可以了。这是我的猜测,不知道对不,牛儿大师来说说吧!谢谢!

0
3
牛儿吃草
实际准备这样搞: 1、db中存储zk的配置信息 2、每个实例服务注册zk的ip节点绑定 3、网关主动watch对应zk节点变化,实现上是一个观察者模式的lbconfiger 4、这个lbconfiger监听到变化后就会通知loadbalance更新实际节点信息了。 最近考虑把这段代码,整合到咱们项目中。
2021-03-31
共3条回复

weibo_隱懓_0

提问者

2021-03-19

请老师进一步解答

0
0

慕斯1088534

2021-03-14

我也觉得是用goroutine 去获取API来热加载更新,具体的请牛儿大师说说吧!

0
1
牛儿吃草
最新支持热更新分支发布了,你可以试试。 https://github.com/e421083458/go_gateway/tree/loadwatch 新增的代码差异在这里有体现: https://github.com/e421083458/go_gateway/compare/loadwatch?expand=1
2021-05-16
共1条回复

(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目

简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关

1302 学习 · 340 问题

查看课程