bladeX-2.4.0 动态路由存在偶发性问题。

Blade 未结 1 1542
吉吉国王
吉吉国王 剑者 2020-03-16 17:32

一、该问题的重现步骤是什么?

1. nacos上配置动态路由,blade-gateway-dev.json。

2. Linux服务器部署Auth、Gateway、System、User、Resource、Log、Desk7个微服务。并且设置用外网IP注册到nacos

3.本地启动自己开发的业务服务,通过NETAPP 将自己开发的功能映射到本地。


二、你期待的结果是什么?实际看到的又是什么?

期待的结果是,通过动态路由配置,可实现服务器和本地的API调用切换。


实际看到的是:

在之前一直都挺好,包括昨天晚上配置了自己做的一个demo的动态路由。都可以正常运行。

但是今天启动本地服务,启动NETAPP,使用本地的Saber访问时候,可以正常调用服务器的API正常登陆,但是Blade-user的用户列表查询就一直是调用的本地开发的demo微服务,并且一直报404.(ps:因为本地的服务的appName并不叫blade-user,也没有那个接口,所以一直在本地的服务报404.)

在线上的Saber访问,也是一样。但在昨天一直都是好的。

随后,为了验证是否是自己的动态路由配置的不对,就去掉了 gateway.json的内容,按之前的操作来看,应该是会很快生效。但是并没有。

然后我又把nacos上的gateway.json删掉了。还是不行,一直都是调用到本地。

这时,我担心服务器的user微服务是不是假死了,重启了blade-user,还是调用到我本地。

所以我怀疑是不是gateway的微服务里面存在缓存或者其他问题,就重启了一下gateway的微服务。这时候用户列表的API调用才走到服务器上的blade-user里。

然后我重新又配置了一下gateway.json,问题消失了。


该问题应该是偶然现象,不好复现,但是应该是gateway里面,去加载动态路由时,可能存在逻辑处理导致缓存的问题。




三、你正在使用的是什么产品,什么版本?在什么操作系统上?

BladeX 2.4.0 联合版 Linux,windows,都存在


四、请提供详细的错误堆栈信息,这很重要。

因为尝试的时候,没想到会好,所以丢失了本地服务的404报错。但是NETAPP的报错还在的。

我把本地的demo服务关闭了以后,就报502了。

image.png


五、若有更多详细信息,请在下面提供。



1条回答
  • 2020-03-18 14:20

    电脑休眠、网络波动会有导致这种情况,连不上注册中心,接收不到动态网关的信息推送。

    另外gateway获取动态网关配置的监听在这里,下次再遇到同样的情况可以打断点调试下看看

    image.png

    作者追问:2020-04-01 03:13

    问题复现出来了。

    当我配置了动态路由,路由到我本地开发以后,我调试完毕了。

    就把动态路由的配置清空掉了。这时候动态路由并没有刷新。

    一直会停留在这个状态。除非我重启一下gateway,才能读取最新的配置。



    0 讨论(0)
提交回复