前端 CDN 服务器架构的一些疑惑

2019-12-17 21:46:04 +08:00
 avenger

起因:

网站流量有点顶不住,上周又被人恶意攻击了一天,这周花时间升级到了 弹性 IP + 负载均衡 + 后端 ECS 模式,保证 ECS 公网 IP 不会暴露。

在网上找相关解决方案的过程中,看到一篇文章推荐这样的配置:

CND (入口层)-> WAF (应用层防护)-> SLB (负载层)-> ECS (服务器源站) -> RDS (数据库)

- 域名 cname CDN
- CDN 指向 WAF
- WAF 指向 SLB
- SLB 负载 ECS

有点困惑,先排除不是阿里云软文的情况下,老实说,有必要前面加这么多层吗?咱们底层是 php,本来效率就不高,前面再加这么多层,会不会性能都牺牲到网络层上了?

大家公司的高负载网站架构是什么样的?能否分享一下?谢谢!

2642 次点击
所在节点    CDN
4 条回复
zwy100e72
2019-12-17 22:03:49 +08:00
CDN 缓存静态内容,还有能缓存的动态内容,也可以辅助隐藏真实的后端 IP
LB 方便扩缩容,还能辅助做灰度
网络开销本身就不应该是大头,加缓存就是为了降低后端负荷的

如果对延迟没什么要求,CDN 能做到全球覆盖就够了,后端服务器集群可以用 2-3 组做容灾备份;
否则就需要云服务器也全球部署、数据库之间相互同步,真正走向全球全分布式架构
要是技术上无法达到全球分布,那就要靠分区等别的方式降低单区负荷
mikeguan
2019-12-17 22:04:28 +08:00
cdn waf slb 每个功能都不一样的,有钱就都上。用户访问你服务器还走了很长的路呢不在乎等电梯这一会儿
czb
2019-12-17 23:23:38 +08:00
这个其实不会有太大影响 拿正常网络层的延时和 PHP 执行时间对比 再考虑上 CPU 和 IO 消耗 你会发现网络消耗其实不算什么 特别是在被攻击的环境下
MiaRunis
2019-12-17 23:45:16 +08:00
这不是软文,这就是一个很标准(某种程度上来说已经过时了的)高可用网络服务构架。

现在 CDN 和 WAF 通常直接由同一家提供(典型如 cloudflare ),对于安全性要求高的还会再加一层 ai 行为审查(典型如 visa/master 支付)。大陆这边 CDN 落后,很多判断行为并不能推到边缘节点直接处理,导致还得再加一层中心节点的 waf 判断。
目前看这层 waf 点反倒是整个构架的弱点,将来阿里云肯定也会逐渐前置到 cdn 边缘节点来降低压力。

对于规模足够大的动态站来说,正确实施多层缓存和流量阻挡,可以大大降低打到最后端 php 上的压力,反而加快用户访问速度。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/629947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX