我在M2公司做架构之网关

一、网关的定义

所有微服务的入口。

二、网关的目的

  • 统一入口(所有微服务的入口点);
  • 鉴权校验(统一请求接口鉴权);
  • 动态路由(统一请求接口分发);
  • 降低耦合(服务独立发展,网关映射即可)。

三、网关的优点与缺点

1.优点

  • 避免将内部信息泄露给外部;
  • 为微服务添加额外的安全层;
  • 支持混合通信协议;
  • 降低构建微服务的复杂性;
  • 微服务模拟与虚拟化。

2.缺点

  • 架构上需要额外考虑更多的编排与管理;
  • 路由逻辑配置要进行统一的管理;
  • 可能引发单点故障。

四、网关的现有解决方案有哪些

  • SpringCloud Gateway;
  • SpringCloud Zuul;
  • Kong;
  • Nginx+Lua;
  • 自研;
  • 采用相关领域公司的付费解决方案。

五、在采用SpringCloud Gateway我们遇到了哪些问题

  • 网关与微服务没有映射成功导致访问404;
  • 网关因为磁盘空间不足陷入”假死”状态导致所有服务不可用;
  • 网关某一个跟登录相关的接口报错导致系统无法使用;
  • 网关所涉及的中间件被黑客攻击导致服务器崩溃,从而使得所有服务均不可用。

关于SpringCloud如何整合Gateway可以阅读这篇文章:
SpringCloud之Gateway

六、问题的原因和对应的解决方案

1.网关与微服务没有映射成功导致访问404

原因:网关的配置文件由Nacos进行管理,相应的开发人员在部署新的微服务时没有通知运维人员进行相应的配置信息新增从而造成服务访问404。

解决方案:
每次开发人员新增对应的微服务时,及时通知运维人员,让其配置好网关微服务相关的配置。

2.网关因为磁盘空间不足陷入”假死”状态导致所有服务不可用

原因:磁盘空间满了。

解决方案:
清理磁盘空间,服务就能恢复正常。

我之前写过关于这件事的复盘,文章如下:
Linux设备上没有空间之复盘

3.网关某一个跟登录相关的接口报错导致系统无法使用

原因:相关接口涉及Redis中间件,Redis中间件正常,但Nacos中的配置文件出现覆盖的问题,导致微服务应用连接Redis的配置信息不对,造成代码中连接Redis失败,从而造成接口报错。

解决方案:
修改配置文件并重新发布即可。另外这并不是解决问题的根本办法,需要从管理流程上控制,生产环境只有运维有权改动,测试环境只有测试主管有权改动,开发环境也只能由专门的开发人员才能改动,否则时不时就可能出现配置覆盖导致一些代码报错等问题。

4.网关所涉及的中间件被黑客攻击导致服务器崩溃,从而使得所有服务均不可用

原因:由于我方开发人员将6379端口进行公网发布且没有任何认证鉴权措施最后造成了被黑客攻击。

解决方案:
病毒太多,只得重装系统。为了从根本上杜绝此类情况,可参考这篇文章(按照这篇文章所制定规范,基本上不会被黑客攻击,就算被攻击绝不会出现服务器瘫痪重建的情况):
服务器安全策略之思考与实践

文章目录
  1. 一、网关的定义
  2. 二、网关的目的
  3. 三、网关的优点与缺点
    1. 1.优点
    2. 2.缺点
  4. 四、网关的现有解决方案有哪些
  5. 五、在采用SpringCloud Gateway我们遇到了哪些问题
  6. 六、问题的原因和对应的解决方案
    1. 1.网关与微服务没有映射成功导致访问404
    2. 2.网关因为磁盘空间不足陷入”假死”状态导致所有服务不可用
    3. 3.网关某一个跟登录相关的接口报错导致系统无法使用
    4. 4.网关所涉及的中间件被黑客攻击导致服务器崩溃,从而使得所有服务均不可用