API 网关只是用来保护或路由 API 的吗

2019-06-03 11:40:38 +08:00
 daijinming

微服务中的 API Gateway 感觉好像是个很高端的产品,听名字好像就是用来保护和路由 API 的,我考虑在前后台分离的场景下,也把静态网站放网关后面,不知道有这么弄的吗

4537 次点击
所在节点    程序员
22 条回复
m9rco
2019-06-03 12:11:10 +08:00
这有必要过网关吗?
shm7
2019-06-03 12:25:03 +08:00
强行过度设计总是必要的
xomix
2019-06-03 12:58:47 +08:00
API Gateway 实际上是做熔断、负载均衡等业务的,静态页放在其后也不是不可以。
index90
2019-06-03 13:01:40 +08:00
静态资源为什么要经过 API 网关? LZ 究竟想解决什么问题?
luozic
2019-06-03 13:02:11 +08:00
Kong 有啥功能,google 一下不行?
lovedebug
2019-06-03 13:26:16 +08:00
静态页面用 nginx 更合适
lovedebug
2019-06-03 13:27:07 +08:00
api 网关主要是限流,认证,熔断,统计之类的工作,类似 aop
daijinming
2019-06-03 13:35:07 +08:00
@index90 这样一个可以解决同域的问题,另外对外统一入口,比如 demo.com/site1,demo.com/site2
daijinming
2019-06-03 13:42:16 +08:00
我在考虑网关能不能保护静态网页,比如用户没有登录,通过网关进行校验
index90
2019-06-03 14:08:54 +08:00
可以是可以,但是没有人会这样做吧,对服务器压力很大的。
部分静态页面还好,但是所有静态资源都放到 gateway 后面,试想想一个页面几十上百的页面元素,每个元素都要校验,机器会扛不住的。

建议 LZ 还是学一下 CORS 和动静分离策略吧
daijinming
2019-06-03 14:24:25 +08:00
@index90 恩,看来还是要多学习下“动静分离策略”
souths
2019-06-03 14:57:48 +08:00
API 网关当然只跟 API 有关系啊
souths
2019-06-03 14:58:26 +08:00
静态资源还是要用静态资源的方式
iugo
2019-06-03 15:33:27 +08:00
两个例子:

1. Mock OPTION method.
2. 鉴权.

1 能减轻 Lambda 调起的次数, 避免无效的消耗.
2 除了上面的好处外, 还有简化逻辑的功能.
razertory
2019-06-03 15:35:25 +08:00
已经在用 Kong 的路上越走越远了
daijinming
2019-06-03 16:24:35 +08:00
@razertory 朋友能不能介绍下 KONG 或 分享下体验,KONG 是免费的吗,可以部署在 windows 服务器上吗或如何部署,管理端是 web 形式的,上手简单吗
razertory
2019-06-03 16:42:36 +08:00
@daijinming 本质上 Kong 就是 Nginx + Lua 部署应该没啥问题。
我这边主要用来做请求限制,cors 和 jwt 避免每个 API Service 都做一套相同的逻辑。上手还是蛮简单的,调 API 或者配一个 kong-dashboard ( web 管理端)就 ok
janxin
2019-06-03 16:53:07 +08:00
不是,甚至可以做更多的功能
udev
2019-06-03 17:27:13 +08:00
1、认证;
2、权限;
3、安全;
4、业务统一,all 杂牌子 API to 统一 API ;
5、审计;
xuanbg
2019-06-03 17:41:26 +08:00
网关主要的功能就是路由,或者说只有经过网关的流量,才能被均衡地分配到不同的服务实例。没有网关,你就必须直接访问服务实例,就无法进行流量的动态分配。
至于别的功能,API 调用审计和身份认证放在网关上实现也说得过去。但很多人把鉴权也放到网关上面,我个人认为是不合适的。因为虽然接口 url 可以作为资源的特征来进行基于 url 的鉴权,但这样一来 url 里面就不能有 PathParam 就不能用了。而且也不能用 GET/PUT/DELETE 这些方法了,硬要用也不是不行,但要注意使用不同的 url,还不如统一 POST 来的简单。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/570261

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX