课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的企业都开始搭建自己的企业网站,而今天我们就通过案例分析来了解一下,一个完整的企业网站都包含哪些结构层次。
1.网页缓存层
网页缓存层,比如CDN租凭,其效果比公司自己部署Squid/Varnish要好,它们专业、价格低廉(比如:快网、蓝讯、阿里、腾讯)而且覆盖的城市更多,自己架设Squid/Varnish是次选。
很多朋友喜欢尝试自建CDN,这是一项吃力不讨好的工作,未必能达到预期的目标,系统架构师应该在架设网站初期就规划好,不要等到网站流量及压力巨大时才去规划。事实上,这一层有很多优秀的开源软件能胜任,比如传统的SquidCache。另外,越来越多的朋友喜欢尝试在自己的网站是用Nginx和Varnish作为自己的网页缓存。事实上,Nginx已经具备Squid所拥有的Web缓存加速功能。此外,Nginx对多核CPU的利用胜过Squid,现在越来越多的架构师喜欢将Nginx同时作为”负载均衡服务器”与”Web缓存服务器”来使用,大家可以根据自己的情况,来决定究竟使用那种软件作为网站的网页缓存。
2.负载均衡层
我们熟悉的硬件/软件技术有F5、LVS/HAProxy,还有Nginx,它们的性能是非常优异的,现在F5/LVS在全世界范围内应用,而且淘宝现在升级架构,也用了LVS取代了F5。
HAProxy可能大家不是特别熟悉,单HAProxy+Keepalived确实在生产环境下表现优异,强大的吞吐能力,稳定性能比之硬件过犹不及,并且淘宝也在大规模地推广使用HAProxy,有兴趣的朋友也可以关注。
再来聊聊Nginx,我已经将Nginx+Keepalived架构用于各种生产环境,经过长期的线上观察,发现Nginx作为负载均衡器/反向代理也很稳定,如果兵发压力过大,我们前面可以用F5/LVS作为前端的负载均衡,而将Nginx作为七层代理,这样的效果其实也不差,所以说负载层压力不算特别大。
3.Web层
Web层压力比较大的网站现在换成了Nginx作为Web应用服务器,事实上,它的抗并发能力确实超过了预期。
另外,Linux集群有一个优势,就是它的高扩展性,就算网站的并发有一万以上,后端的Web服务是Nginx,我们多加几台Nginx服务器即可。
4.数据库层
数据库层的压力,我觉得网站的PV和并发上去以后,数据库这块的压力是大的,CND大型广告网站用的是OracleRAC方案,它保证了数据的搞可用性,当然了价格也是非常昂贵的(如果使用高配置的PC服务器,Oracle一般按照CPU个数收费);那么字啊使用免费的MySQL数据时,面对这种并发压力打的情况,我们应该怎么办?
可以在数据库中加入memcached数据缓存,在实际线上使用时,发现memcached功能强大、性能稳定,在数据流频繁读写,压力过大的情况下,增加一台memcached数据库缓存服务器的效果能超过我们的预期。
数据库的硬件方面可以考虑投入磁盘队列做成RAID10,如果资金充裕,磁盘可以用固定硬盘来代替SAS硬盘,毕竟数据库的压力主要来自磁盘I/O方面。
合理的设计MySQL数据库的架构,事实上,在生产环境下,一主多从、读写分离是靠谱的设计方案,从MySQL的负载均衡推荐大家使用LVS,这是因为当后面的MySQL机器超过十台时,HAProxy在这方面的性能不如LVS。
如果网站的业务量过大,可以采用分库的方法,比如将网站的业务量分成Web、BBS、Blog等几组,每一组均采用主从还够,这样的设计避免了单组数据库压力过大的情况。
另外我们应该还配合公司的MySQL、DBA和开发人员,在数据库参数优化、SQL语句优化、数据切分上多下功夫,避免数据库成为网站的瓶颈。
后续我会发布如何优化MySQL,从硬件–安装方式–配置文件优化-SQL优化-status状态优化–慢查询优化–表优化-MySQL高可用的扩展。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。