问答-个人网站怎么应对大流量?怎么做负载均衡?
链接:https://www.zhihu.com/question/19825067/answer/253144047
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
个人站长力所能及的负载均衡,就是不搞什么负载均衡
就是避开什么负载均衡,而直接用scale up手段应对流量增加,单机伸缩。scale up很简单,就是到你的主机商后台升级主机套餐,当前5刀1G20G1T,就升级到10刀2G30G2T,不够就20刀4G60G4T,不行就再加,加到有冗余为止。听起来没啥技术含量,但这才是云计算平台普通网站伸缩的正解!
Vultr / Linode / DigitalOcean 或者其他你叫得出名字的主机商,都可以Resize,往上升级。有几个网站能用到8G内存的?云主机(或VPS)的扩展能力远在8G之上。
什么并发吞吐量,原来小机器常驻四个PHP进程,现在加到20个行了吧?立即5倍,就是这么立竿见影。
核心优势:
- 整机备份,这是无可比拟的“简单”,出再大的乱子,都可以整机恢复,一切都在一个备份里,愿意花钱的,还能一日多备,从SysAdmin的角度来说,天底下没有更好的灾后恢复方案,在物理机时代这是通过半吊子的Raid实现的,在云时代,这是真正的“一键恢复”,一台机器,一个备份,一个状态
- 便宜,你可以自己去查主机商买LoadBalancer的价格和直接本机scale up的价格,可能一台Loadbalancer的价格就超出主机升级费用,这还没算用LB需要单机扩多机的额外费用
- 简单,管理一台机器,就是简单,没有同步问题要处理,整栈处于一个对站长友好的状态
为什么个人站长不应该搞所谓负载均衡
管理两台两台机器的复杂度不是管理一台机器的两倍,而可能是四倍,八倍。我以一个普通WordPress网站为例,通常瓶颈一出现在数据库,你如何负载均衡数据库?设主从,读写分离,单写多读,至少两台主机,要配master-slave,要监控同步及时与否,可能还得设防火墙,不然放公有云上容易被攻击,放私有云又很贵,而且主机商未必能提供。你自己也在问mysql怎么做,这是顶麻烦的事。
另一个瓶颈是静态文件,再拿一台服务器来分流,你要么折NFS共享分区,但这样就造成单点风险,要么用rsync这样的同步,但这样意味着延迟。你自己也在问多机文件怎么处理,这本来就是顶麻烦的事。
分布式系统的管理复杂度是单机系统指数级倍,多少个人站长有DevOP的水平?恐怕很少。有的主机上提供LoadBalancer服务,但你真的该用吗?
DNSPod不是负载均衡方案
用户有Session怎么办?到一台机器登陆状态,到另一台机器不能登陆?无状态的静态资源分流一下还行,有状态的请求,你要保证状态一致就得集中共享session池,单机房部署也许可行(意味着单点风险),多机房基本不可行。
很多时候所谓负载均衡,只是你自己的臆想
没那么多人用你网站,所以,还是多操心把流量做上去吧,一台学习机的CPU都跑不满或者一台机器的优化都做不充分,还均衡啥?!有时候负载均衡只有码农喜欢捣鼓的事,和解决问题本身没关系,事情搞得越复杂,他们觉得自己越牛逼,他们觉得技术含量越高,问题解决得越好
相关文章