API网关很重要
Posted 字符编码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了API网关很重要相关的知识,希望对你有一定的参考价值。
字符君觉得API网关非常重要,它在整个系统中起到承上启下的作用。
背景知识
理想中,所有的工程架构都应该按照微服务架构的思想进行设计的,各个模块各施其职、独立部署、各自发展。但实际上,这种架构在实践过程中都会遇到水土不服的尴尬场景,例如服务各自鉴权授权、不清晰的服务职责、服务单节点部署等等。
比较典型的现象就是服务“微”不起来,存在一个大型工程以及其他小型工程,小型工程虽然已经独立部署但极其依赖大型工程。只要大型工程对应的节点挂了,其他小型工程的节点就会失去提供服务的能力。
而且,每次工程的重构拆分都会给前端带来灾难。前端组件封装了很多业务逻辑,与后端提供的接口进行了深度绑定,牵一发而动全身。因为如此,后端的重构工作给前端带来了额外的负担,双方矛盾就会加深,导致扯皮的现象处处存在。
当前难题
字符君当前遇到的难题,如图所示。
上图非常抽象,大概意会一下即可。具体的问题列出如下:
后端服务只有单层,服务间互为调用,服务内部的代码没有统一的规范。
前后端之间有个看不见的nginx做请求转发,但是Nginx的配置非常混乱,也没有统一的规范。
每个服务的鉴权实现不一致,有的用Web拦截器过滤器,有的用Spring Security,有的甚至没有鉴权。
大型工程仍然存在,新需求不断出现,隐藏bug到处都有。
前端工程依赖后端接口的分布情况处于迷雾状态,URL设计没有规范,API随处随意地被调用。
API网关很重要
上述那些问题不是给一两个月到半年的时间做几次代码重构就能够解决的。整个系统病得不轻,根治很难,只能循序渐进地慢慢调理,下猛药反而会适得其反。
调理的第一步,就是搭建API网关。为什么?
API网关不是一个很新的概念,具体作用是在所有后端服务的前面挡住流量,在那里进行鉴权授权、转发重定向、分流限流、熔断降级、统计风控等等常规流量处理。
API网关可以做鉴权授权,消除后端服务对安全问题的顾虑。让后端不必再依赖Spring Security、Shiro、自定义Filter等来校验用户请求的权限合法性。
对于后端服务急需重构的阶段中,API网关的鉴权授权、转发重定向的特性成为重构代码的关键一步。而其他特性可以暂时不用考虑。
API网关选哪个?
在开源社区上,常见可以实现API网关的方案一般是Nginx+lua、OpenResty、Kong、Spring Cloud Zuul、Spring Cloud Gateway等等。如果后端是Java栈的话,字符君推荐选择Spring Cloud Gateway。
本文不会详细说Spring Cloud Gateway的特性,重要的是知道API网关可以做什么、承担什么角色、对后端重构代码的作用。
写在最后
以上是关于API网关很重要的主要内容,如果未能解决你的问题,请参考以下文章