类似 KONG APISIX 等,各种文档的说法基本都一致,作为后端服务(微服务)的流量入口,进行转发、鉴权、流控等等,看起来是一个跟业务系统相对独立的组建。
但是又想想,网关如果要做到认证、鉴权、流控等等,必须要跟业务深度绑定啊。拿认证鉴权来说,几乎每个主流网关都提供主流认证方式比如 http 、OAuth2 、JWT 等,可是看完后一脸懵逼,这有啥用?业务系统原本就有自己的用户体系啊,怎么结合起来呢?总不能让用户直接到网关注册吧。
以聚合数据为例,他提供了众多的 API 供用户调用,肯定涉及到鉴权、流控等等功能:
https://i.imgur.com/ZtRvE31.png
如上图,这是聚合数据某个接口的请求地址,需要携带一个”key“的参数,这个 key 也是业务系统用户在业务系统中申请了这个接口后产生的,在这种情况下,能否采用 APISIX 这种网关呢?如果可以的话问题来了:
1 网关怎么判断这个 key 是否合法
2 如何根据 key 获得用户信息,进而针对性的进行流控?
网关和业务系统必然要有个机制进行信息同步,比如业务系统有一个新的 key 产生,这个 key 对应的调用次数、访问频率等信息跟 key 是绑定的,是否都要把这些信息同步到网关? 如果同步的话,网关的最细粒度都是路由级别,难道每个路由、每个 key 都同步对应的规则过去?感觉这个量很大啊。
网关这一块很早就在关注,但一直没有用起来,希望大佬指点指点。
另外,感觉 KONG 太重了,而且基于 lua 开发插件(虽然 2.0 好像支持 golang 了?)也不擅长,有没有轻量级点的?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.