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

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

  •  
  •   xDaShen · 2021-01-13 22:37:29 +08:00 · 5026 次点击
    这是一个创建于 1411 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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