V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qfdk
V2EX  ›  Node.js

基于 node.js 的网关设计.

  •  
  •   qfdk · 318 天前 · 2972 次点击
    这是一个创建于 318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近需要设计一个 node.js 的网关.

    简单来说就是一个 nodejs 的反向代理.

    Spring 全家桶 里面有 Zuul 这个看门口

    网上都看了一圈 有这么几个选择

    • express-gateway
    • http-proxy

    为了避免造轮子,想跟诸位老哥请教一下.

    说一下我们基本的需求:

    • 高性能
    • 可以发送静态页面
    • 可以鉴权认证 初步 准备 JWT + oauth2 (我们 gateway 是有状态的,我们会把 token 给存在 Redis 里面 然后给客户一个 session, 避免用户之间用 token 来调用我们后端)
    • 可以加 CSRF
    • 根据权限来过滤请求

    再次 谢过

    12 条回复    2021-09-14 14:11:03 +08:00
    chogath
        1
    chogath   318 天前   ❤️ 1
    可以参考下 `@acheetahk/request` 的 fastProxy
    chogath
        3
    chogath   318 天前
    有问题可以给我提 issue
    kenshinhu
        4
    kenshinhu   317 天前
    kong gateway
    qfdk
        5
    qfdk   317 天前 via iPhone
    @kenshinhu 这个看到了 不过不是 nodejs 的技术栈 虽然性能厉害
    qfdk
        6
    qfdk   317 天前 via iPhone
    @chogath humm 回头我好好看一下 不想造轮子
    生产环境用一个开源项目要看下后面的生态的 还有文档等等. 感谢🙏
    chogath
        7
    chogath   315 天前   ❤️ 1
    @qfdk node.js 没有单独做网关的开源包,有的只是零散的方法,目前来看方案有三种:

    1. 使用 http request pipe 重写,代理到目标服务器完成请求转发
    2. 使用 websocket 的方式完成请求转发 # https://docs.nestjs.cn/7/websockets # 参考资料来自 nest.js
    3. 使用 grpc 自己实现 interface + 协议 + 传输格式 + 异常信息定义 # https://docs.nestjs.cn/7/microservices?id=grpc #参考资料来自 nest.js
    chogath
        8
    chogath   315 天前
    我是用的 1 + 3,1 适合常规业务直接调用,3 适合服务间调用(指多个服务调用,或者形成了调用链)
    chogath
        9
    chogath   315 天前
    @qfdk 我建议你先吧目前你觉得合适的方案跑成 demo,做一下性能压测和各方面的评估。
    qfdk
        10
    qfdk   313 天前 via iPhone
    @chogath 感谢你先 现在看了好几套方案 明天跟同事一起聊一下看看要不要自己做一个. express Gateway 里面坑有些多 开源的大多数不够活跃 最后一次提交都在 1 年多了. 加上一些 redis 的库也没法用. 初步考虑可能用 koa2. 毕竟 Gateway 主要是为了性能来的. 您的建议很好👍
    qfdk
        11
    qfdk   264 天前
    ∫好了 现在 开始撸轮子了,基于 https://github.com/chimurai/http-proxy-middleware 鉴权用 passport
    qfdk
        12
    qfdk   33 天前
    已经上线了!
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3702 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 144ms · UTC 03:48 · PVG 11:48 · LAX 20:48 · JFK 23:48
    ♥ Do have faith in what you're doing.