对外提供服务使用 nginx 还是网关地址 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xDaShen
V2EX    程序员

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

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

    目前使用 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     Solana     852 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 19:32 PVG 03:32 LAX 12:32 JFK 15:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86