V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daijinming
V2EX  ›  程序员

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

  •  
  •   daijinming · 2019-06-03 11:40:38 +08:00 · 4554 次点击
    这是一个创建于 2002 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    1. Mock OPTION method.
    2. 鉴权.

    1 能减轻 Lambda 调起的次数, 避免无效的消耗.
    2 除了上面的好处外, 还有简化逻辑的功能.
    razertory
        15
    razertory  
       2019-06-03 15:35:25 +08:00
    已经在用 Kong 的路上越走越远了
    daijinming
        16
    daijinming  
    OP
       2019-06-03 16:24:35 +08:00
    @razertory 朋友能不能介绍下 KONG 或 分享下体验,KONG 是免费的吗,可以部署在 windows 服务器上吗或如何部署,管理端是 web 形式的,上手简单吗
    razertory
        17
    razertory  
       2019-06-03 16:42:36 +08:00
    @daijinming 本质上 Kong 就是 Nginx + Lua 部署应该没啥问题。
    我这边主要用来做请求限制,cors 和 jwt 避免每个 API Service 都做一套相同的逻辑。上手还是蛮简单的,调 API 或者配一个 kong-dashboard ( web 管理端)就 ok
    janxin
        18
    janxin  
       2019-06-03 16:53:07 +08:00
    不是,甚至可以做更多的功能
    udev
        19
    udev  
       2019-06-03 17:27:13 +08:00
    1、认证;
    2、权限;
    3、安全;
    4、业务统一,all 杂牌子 API to 统一 API ;
    5、审计;
    xuanbg
        20
    xuanbg  
       2019-06-03 17:41:26 +08:00   ❤️ 1
    网关主要的功能就是路由,或者说只有经过网关的流量,才能被均衡地分配到不同的服务实例。没有网关,你就必须直接访问服务实例,就无法进行流量的动态分配。
    至于别的功能,API 调用审计和身份认证放在网关上实现也说得过去。但很多人把鉴权也放到网关上面,我个人认为是不合适的。因为虽然接口 url 可以作为资源的特征来进行基于 url 的鉴权,但这样一来 url 里面就不能有 PathParam 就不能用了。而且也不能用 GET/PUT/DELETE 这些方法了,硬要用也不是不行,但要注意使用不同的 url,还不如统一 POST 来的简单。
    ResidualWind
        21
    ResidualWind  
       2019-06-03 17:45:52 +08:00
    一般 API 接口
    daijinming
        22
    daijinming  
    OP
       2019-06-04 13:34:11 +08:00
    @xuanbg 很有参考价值的一席话
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:38 · PVG 13:38 · LAX 21:38 · JFK 00:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.