LEN

大规模网站如何抗压力
这两天在公司闲来无事, 就想到分析服务器架构. 不详细描述. 就拿一个面试中 经常被问到的问题来说吧.帮小白解解惑...
扫描右侧二维码阅读全文
03
2017/07

大规模网站如何抗压力

这两天在公司闲来无事, 就想到分析服务器架构.
不详细描述. 就拿一个面试中 经常被问到的问题来说吧.帮小白解解惑.(我也是小白)

大规模网站如何抗压力?

个人拙见
解决方法有三个

  1. cache
  2. cache
  3. cache

是的我没写错. 目前我接触到的就是使用cache
当然是抛出负载均衡这种了.

以前我画过类似的架构图现在简单举个栗子:
一般架构都是多台前端服务器 负载均衡到 后端服务器. 现在用得最多的是nginx lvs 软件做分配, 当然有钱买硬件只能说明你有钱!!!.

如果能在前端就拿到缓存返回给用户, 成本会大大降低. (缓存越接近用户, 成本越低).
那么第一个cache 出现了, 我们一开始选型是 Varnish 但太占用系统资源了, 所以选用了 nginx cache
提供一次性能参考 : http://www.iyunv.com/thread-10248-1-1.html

nginx cache 的好处很多, 配置方便也不用在添加nginx模块 因为proxy_cache 是默认模块. 配置详情

第一个cache 说完了 再说第二个, 如果前端没有命中, 请求打到后端服务器. 最常见的就是内存cache.
一般选用的都是memcache 和 redis. 我没用过memcache, 推崇redis 当然如果仅是做内存业务的cache 不做持久化的话用什么都是无所谓的. 对了有兴趣大家可以看下 OpenResty 这个丧心病况的东西 nginx 搭载lua 简单业务下无敌手呀.

第二个cache 也说完了, 开始介绍第三个cache.... (硬凑的)
文件cache 这个我们生产环境下真实使用过, 因为用户每次打到后端服务器 我们都需要从redis 中取出一个很大的模版数据, 虽然是内存级别 但也是浪费带宽呀(内网带宽...) 所以我们采用服务器本地文件cache , 存储在 /dev/shm 目录下. 不清楚的百度查下. 相当于请求服务器自身内存IO 相比网络IO+内存IO+带宽成本 好的不是一点半点

总结下. 在做完负载均衡后, 抗压的简单又有效方式就是加缓存.
不理解的小伙伴 请留言对撕. (大神路过请指点本菜鸟)

Last modification:July 3rd, 2017 at 12:40 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment