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

对外提供服务使用 nginx 还是网关地址

  •  
  •   xDaShen · 7 天前 · 3018 次点击

    目前使用 ngxin->frontend->zuul->backend 的架构,目前需要对外提供服务,想问以下两种方案哪种更好,感谢各位大佬指正。

    • 方案 1:暴露 zuul 网关地址,弊端是网关的地址可能会变。
    • 方案 2:暴露 nginx 地址,弊端是担心前后端请求都经过 nginx,担心压力过大。
    30 条回复    2021-01-14 23:59:15 +08:00
    JsonTu
        1
    JsonTu   7 天前 via iPhone
    那为什么不担心网关压力过大呢
    XiaoxiaoPu
        2
    XiaoxiaoPu   7 天前
    方案 2 。
    nginx 是无状态的,单纯转发请求很高效。即使单台 nginx 扛不住,前面还可以接 keepalived 做横向扩展。
    akira
        3
    akira   7 天前
    2 的弊端 是 2 个方案都存在的,所以选 2
    MarvinF
        4
    MarvinF   7 天前
    之前在公司要求: 负载均衡器-> 静态资源 / spring cloud gateway
    对应的应该是 nginx->zuul
    目前 nginx 还是比各种号称 "超越 nginx"/"堪比 nginx"的, 都要稳一些(爬过坑)
    srx1982
        5
    srx1982   7 天前
    先说说有多少压力
    fuis
        6
    fuis   7 天前
    2
    LokiSharp
        7
    LokiSharp   7 天前 via iPhone
    估计一下需求,做一下压力测试就好了吧
    DreamSpace
        8
    DreamSpace   6 天前 via Android
    一般 nginx 不会自己搭,而是买云服务商的负载均衡服务,就算挂了也有人背锅
    des
        9
    des   6 天前 via iPhone
    f5->nginx->backend
    iphoneXr
        10
    iphoneXr   6 天前 via iPhone
    cdn web 防火墙 slb nginx bakend
    我有个项目是这样的😀
    xuanbg
        11
    xuanbg   6 天前
    我司是 ngxin->frontend->spring cloud gateway->backend 。需要对外暴露 API,就是 ngxin 加一个 server,转发到 gateway 的事
    ilaipi
        12
    ilaipi   6 天前
    @iphoneXr #10 问一下,slb 和 backend 之间的 nginx 是什么作用?
    misaka19000
        13
    misaka19000   6 天前
    按照经验来说,担心 Nginx 压力过大都是多余,你的 qps 能到 1000 吗?我怀疑可能 100 都没有
    lvzhiqiang
        14
    lvzhiqiang   6 天前
    选 2,nginx 纯粹做转发,效率和性能 都是杠杠的
    jorneyr
        16
    jorneyr   6 天前   ❤️ 1
    1. 单个 Nginx 扛不住,单个 Zuul 一定抗不住。
    2. 单个 Zuul 扛不住,可以通过 Nginx 做负载均衡。
    3. 单个 Nginx 扛不住,可以在更前面搭建 LVS + Keepalived (LVS 没有流量瓶颈,只做请求转发,Nginx 会有流量瓶颈),然后 LVS 给 Nginx 做负载均衡,Nginx 再给 Zuul 做负载均衡。
    4. 如果单个 LVS 还扛不住,用 DNS 服务给 LVS 做负载,如果这个再扛不住,你们需要更资深的人了。
    jorneyr
        17
    jorneyr   6 天前
    但是,你们的数据库扛得住吗?
    jzmws
        18
    jzmws   6 天前
    nginx 转到 zuul 或 spring cloud gateway ; 在 zuul 或 gateway 要做鉴权之类的
    warcraft1236
        19
    warcraft1236   6 天前
    @des f5 是啥
    bleepbloop
        20
    bleepbloop   6 天前
    MVVM 架构的话,前端放到对象存储上,经 cdn 加速。网关用 nginx 或 zuul,然后接到后端。这样做的话前后端使用不同的 dns 地址。

    要做成一样的 dnss 地址的话,都经过 nginx,不用 zuul,但是 nginx 前加上 cdn,前端回源请求会减少很多,不必担心前端带来的压力。
    dorothyREN
        21
    dorothyREN   6 天前
    @warcraft1236 #19 硬件负载均衡器
    iphoneXr
        22
    iphoneXr   6 天前 via iPhone
    @ilaipi slb 做的四层转发,后面接多个 nginx 。 nginx 可以做监控和代理转发,方便。
    iphoneXr
        23
    iphoneXr   6 天前 via iPhone
    @iphoneXr 其实 slb 也就可以理解为所谓的 keepalive 这些,slb 跑四层转发,nginx 做 7 层代理转发和前端代码。
    jifengg
        24
    jifengg   6 天前
    方案 2,优点简直一堆。
    加一个上面没有提到的,当你要使用 https 的时候,在 nginx 层加就好了。
    fengpan567
        25
    fengpan567   6 天前
    当然是 2
    zhoulouzi
        26
    zhoulouzi   6 天前
    单个 Nginx 扛不住,单个 Zuul 一定抗不住
    black11black
        27
    black11black   6 天前
    @jorneyr 单纯 echo 的话,你这套负载能力,淘宝双 11 秒杀的并发量应该也能搞定
    Dogtler
        28
    Dogtler   6 天前 via Android
    果断 nginx 代理走起
    xiang0818
        29
    xiang0818   6 天前
    外部统一做 nginx 转发,然后看情况要不要分前后端 Nginx,后端 nginx 打到对应的网关层
    firebroo
        30
    firebroo   6 天前 via Android
    Nginx 扛不住,前面加 4 层负载
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1211 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 22:16 · PVG 06:16 · LAX 14:16 · JFK 17:16
    ♥ Do have faith in what you're doing.