AI编程:双层代理?(6)

https://www.codefather.cn/post/2090835509789069313 https://www.codefather.cn/post/2090844834888683521 https://www.codefather.cn/post/2090851159248998402 https://www.codefather.cn/post/2090855382132985857 https://www.codefather.cn/post/2090861769709850626

第五个需求:网关死锁

第五个需求,需要配置 B 端网关。 我先说结论,再告诉你青碧凝霜是怎么在这个死局里摸爬滚打的。 前几天,基础架构的同事收紧了权限,但设计极其不合理:

  • 想要上线,就需要授权;
  • 想要授权,就需要先上线。

这不就是经典的死锁吗? 所有没有授权的接口,通通返回 403。

我上线了这个接口,结果直接 403——但是不可能403的啊。 查网关,网关显示一切正常。 我开始排查,发现代码里根本没有 403 的逻辑。 我疯狂拷打 AI,AI 的态度异常坚决: “我没错,我一切流程都正常,里面没有 403 代码。” “就是你网关没配置好。” 我回去看网关,又看代码,两眼一抹黑。 经过几个小时,我终于放弃了,开始问同事。同事表示:“没有这个逻辑,你是不是配错了?或者发版不合理?” 我尝试了一下,终于发现:有网关日志。 把日志喂给 AI,AI 表示:“你排查的方向没问题,因为网关映射没配。” 说到这个网关映射,就要从 Docker 讲起,要从 Nginx 反向代理讲起……内容太多,直接跳过。 我拿着日志确认是网关的问题。 同事说:“想要上线,需要前端去配置网关。” 不是????????????????????????????????? 既然如此,前端去配置网关。 前端说:“网关配置现在卡死了,报错 403。” 假如接口需要上线,需要先调通;

  • 但是调通的时候,必须先上线。
  • 基础架构的同事,你们绝对是屎吃多了

但是排查这个故障,真的花了一天多的时间。 谁 XX 想象得到嘛?根本不给一点排查的角度。 同事说:“那就先调用这个接口。” 我当场去调用,RPC 远程调用挂了。 至于聊到 RPC 远程调用和 HTTP 请求、网关的关系,这个说来话长:

  • RPC 是微服务内部通信用的;
  • HTTP 是暴露在外的请求;
  • 而后端的 Nginx 是反向代理;
  • 前端的校验是第二层反向代理。 现在 RPC 挂了,怎么办?

聊聊基础架构同事的问题

这个情况,明显就是没测试就上线。但凡测试过,就不可能出这么低级的错误。

  • 之前预发环境不需要校验,但是正式环境需要校验
  • 假如想要在正式环境发版,必须先在预发环境进行校验,否则会报错403
  • 现在,在预发环境上线以后,也必须校验通过

按照之前的流程,就可以先在预发环境测试通过,然后实际上线的时候通过校验预发环境,直接上线。 现在情况就是:预发环境他新增接口和正式看齐。

  • 新增接口需要调用通过,才能上线
  • 但是新增接口想要上线,才能调用通过

一共有3种配置方式,可以手工写,可以导入,也可以复制命令行。 这三种都试过了,通通返回403。

但是我不认识做基础架构的同事,也说不明白。 于是我就找领导

  • 基础架构的接口新增功能的网关配置出了问题,报错403,新增不了网关
  • 我需要关掉

领导问:什么是网关?什么是403?

你领导不是技术出身啊?????

然后我懵了,说了:预生产新增了一个校验,校验不合理,导致后端无法提交新接口。

领导:什么叫新增一个校验?

于是只能让同事帮忙——因为截不了图。 同事:

  • 前端需要把接口关联在页面上,后端才能调用
  • 现在接入方式改了
  • 激活才能访问,访问才能激活

激活????????????????????????

这个话我真说不出来。

新增接口,需要调用才能上线,上线才能调用。把上线、调用这个词改成了激活,领导就听懂了。

我实在是没有和不懂技术的领导沟通的天赋。

催工期的鬼

然后催工期的同事来了。 我一共四天时间,一天半浪费在你们这个两层反向代理里面,Nginx 你还给老子挂了。 我怎么开发? 我就直接完成了 80%,把两个接口给延期了。 这时候,领导过来表示:“项目结束,你去另外一个项目。”

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP