目前使用 ngxin->frontend->zuul->backend 的架构,目前需要对外提供服务,想问以下两种方案哪种更好,感谢各位大佬指正。
1
JsonTu 2021-01-13 22:42:16 +08:00 via iPhone
那为什么不担心网关压力过大呢
|
2
XiaoxiaoPu 2021-01-13 23:07:38 +08:00
方案 2 。
nginx 是无状态的,单纯转发请求很高效。即使单台 nginx 扛不住,前面还可以接 keepalived 做横向扩展。 |
3
akira 2021-01-13 23:32:15 +08:00
2 的弊端 是 2 个方案都存在的,所以选 2
|
4
MarvinF 2021-01-14 00:01:50 +08:00
之前在公司要求: 负载均衡器-> 静态资源 / spring cloud gateway
对应的应该是 nginx->zuul 目前 nginx 还是比各种号称 "超越 nginx"/"堪比 nginx"的, 都要稳一些(爬过坑) |
5
srx1982 2021-01-14 00:04:19 +08:00
先说说有多少压力
|
6
fuis 2021-01-14 00:55:48 +08:00
2
|
7
LokiSharp 2021-01-14 02:41:57 +08:00 via iPhone
估计一下需求,做一下压力测试就好了吧
|
8
DreamSpace 2021-01-14 07:13:23 +08:00 via Android
一般 nginx 不会自己搭,而是买云服务商的负载均衡服务,就算挂了也有人背锅
|
9
des 2021-01-14 08:08:10 +08:00 via iPhone
f5->nginx->backend
|
10
iphoneXr 2021-01-14 08:29:31 +08:00 via iPhone
cdn web 防火墙 slb nginx bakend
我有个项目是这样的😀 |
11
xuanbg 2021-01-14 09:04:09 +08:00
我司是 ngxin->frontend->spring cloud gateway->backend 。需要对外暴露 API,就是 ngxin 加一个 server,转发到 gateway 的事
|
13
misaka19000 2021-01-14 09:17:47 +08:00
按照经验来说,担心 Nginx 压力过大都是多余,你的 qps 能到 1000 吗?我怀疑可能 100 都没有
|
14
lvzhiqiang 2021-01-14 09:19:34 +08:00
选 2,nginx 纯粹做转发,效率和性能 都是杠杠的
|
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 做负载,如果这个再扛不住,你们需要更资深的人了。 |
17
jorneyr 2021-01-14 09:25:55 +08:00
但是,你们的数据库扛得住吗?
|
18
jzmws 2021-01-14 09:30:59 +08:00
nginx 转到 zuul 或 spring cloud gateway ; 在 zuul 或 gateway 要做鉴权之类的
|
19
warcraft1236 2021-01-14 09:34:33 +08:00
@des f5 是啥
|
20
bleepbloop 2021-01-14 09:45:54 +08:00
MVVM 架构的话,前端放到对象存储上,经 cdn 加速。网关用 nginx 或 zuul,然后接到后端。这样做的话前后端使用不同的 dns 地址。
要做成一样的 dnss 地址的话,都经过 nginx,不用 zuul,但是 nginx 前加上 cdn,前端回源请求会减少很多,不必担心前端带来的压力。 |
21
dorothyREN 2021-01-14 10:21:08 +08:00
@warcraft1236 #19 硬件负载均衡器
|
22
iphoneXr 2021-01-14 11:47:40 +08:00 via iPhone
@ilaipi slb 做的四层转发,后面接多个 nginx 。 nginx 可以做监控和代理转发,方便。
|
23
iphoneXr 2021-01-14 11:49:28 +08:00 via iPhone
@iphoneXr 其实 slb 也就可以理解为所谓的 keepalive 这些,slb 跑四层转发,nginx 做 7 层代理转发和前端代码。
|
24
jifengg 2021-01-14 14:37:14 +08:00
方案 2,优点简直一堆。
加一个上面没有提到的,当你要使用 https 的时候,在 nginx 层加就好了。 |
25
fengpan567 2021-01-14 14:40:00 +08:00
当然是 2
|
26
zhoulouzi 2021-01-14 15:01:34 +08:00
单个 Nginx 扛不住,单个 Zuul 一定抗不住
|
27
black11black 2021-01-14 15:38:52 +08:00
@jorneyr 单纯 echo 的话,你这套负载能力,淘宝双 11 秒杀的并发量应该也能搞定
|
28
Dogtler 2021-01-14 18:33:00 +08:00 via Android
果断 nginx 代理走起
|
29
xiang0818 2021-01-14 18:47:27 +08:00
外部统一做 nginx 转发,然后看情况要不要分前后端 Nginx,后端 nginx 打到对应的网关层
|
30
firebroo 2021-01-14 23:59:15 +08:00 via Android
Nginx 扛不住,前面加 4 层负载
|