背景
2021.05.25 晚上,刚要下班回家,突然被拉到一个群里,说是网关有问题,接入的一个应用接口死活注册不上去,新业务无法使用,而且业务方说已经发布过好几次都不生效,但是同一个应用的其他接口却可以正常注册。听起来还挺诡异的,想着重启大法,重启了下网关应用(其实网关好久没有迭代了,挺稳定的)。结果群里更是炸锅了,说原来可以用的接口也没有了,业务完全停滞(小心脏砰砰直跳)。这下搞大了,放下小书包,开始查问题...
解决过程
其实刚开始完全没有头绪,网关没有做任何改动,只是重启应用,怎么会导致业务方原来可以正常使用的接口也无法注册呢?但明显的肯定是业务方改动引起的,因为其他业务方都可以正常使用网关。于是分头行动,我去查找业务接口无法注册网关的原因,业务开发同学查看最近做过哪些变动。
因为无法注册的问题是必现,所以我在本地调试接口注册网关代码,发现他们用到了 spring-cloud 套件,联想起不久前还帮他们查过一个应用无法注册 bean 导致启动失败的案例,初步判断这个事件也跟他们使用 spring-cloud 套件有关。这个怀疑得到了开发的认可,他们确实在二个月前就使用了 spring-cloud 的 openFeign 组件,可一直相安无事呀(后来发现自从引入了 openFeign 组件后,新接口就没注册成功过,:sweat:),为啥网关重启就导致旧接口也无法使用呢?
因为事态紧急,当务之急是恢复服务,可网关重启已经不起作用了,该如何处理呢?这时开发有了一个大胆的想法,因为网关重启前旧接口是