为什么要有网关

本贴最后更新于 1542 天前,其中的信息可能已经时移俗易

为什么要有网关

最近公司工作安排研究微服务的单点登录,初衷便于公司各个业务系统运营的方便。

网上查看资料后发现,在设计单点系统时,若能同时整合网关,则在后续的业务系统的改造、接入等方面会轻松很多。

此文为 为什么微服务一定要有网关? 笔记

WHAT

服务网关=路由转发+过滤器
  1. 路由转发:接收一切外界请求,转发到后端的微服务上去;
  2. 过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

在配合单点系统时,可以将业务系统的权限校验工作全部放在网关中实现,无需每个业务系统都各自实现一遍。

WHY

如果没有网关,仅有单点登录系统,那么权限校验的功能实现方式无非下列三种:

  • 各自为政:每个微服务各自实现一遍,各自管理用户权限,用户权限系统不通用。
  • 众星拱月:写到专门的权限校验微服务,提供接口供其他微服务调用。
  • 事不关己:在请求到达微服务前,在网关处拦截,进行过滤,实现权限校验。

第一种代码冗余,维护成本高,不推荐。

第二种虽然无代码冗余,但是在各个服务皆需依赖此公共服务,耦合度高,不利于微服务升级。公共服务更新时,需要各个微服务重新引包,重新部署。

而服务网关恰好可以解决这样的问题:

  • 将权限校验的逻辑写在网关的过滤器中,后端服务不需要关注权限校验的代码;
  • 如果想修改权限校验的逻辑,只需要修改网关中的权限校验过滤器即可,而不需要升级所有已存在的微服务。

所以,需要服务网关!!!

HOW

网关基本功能

智能路由

权限校验

API 监控

限流

API 日志统一收集

技术选型

缺点

性能下降

相比较直接访问业务系统,引入网关后多了一层转发,性能自然会下降一点。要求网关服务器的性能要好,且网关到业务系统为内网访问。

单点风险

网络访问过程中,必有一个环节是有单点风险的,为避免网关出现单点故障,可在网关层之前再加一台 Nginx(ginx 的性能极高,基本不会挂),通过添加网关的机器,避免单点故障。但是这样一个请求就转发了两次,所以最好的方式是网关单点服务部署在一台牛逼的机器上。

  • 网关
    5 引用 • 7 回帖
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • 云计算
    77 引用 • 91 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...