网站高并发的处理措施

大型网站的架构,主要用来解决高并发大用户量的应用情景。2016年双11,我们公司的一个发券活动,在上午11点11分,代码所在的服务器宕机了。结果市场部门的出去吹嘘说我们公司的业务火爆,把服务器都造瘫痪了。在这里我只能呵呵再呵呵。不过说到底,业务访问量只是一方面,在技术架构上,真的存在很多不合理待优化的点。今天整理一下大型网站架构的设计以及主要的应用思想,以备在日后的工作中不断应用。
一、网站的初始阶段

以lamp或者lnmp为例,初始阶段,访问量不大。服务器以Linux为底,apache或nginx上面部署PHP,DBMS也部署在这台服务器上。部分业务涉及到文件的,如图片视频等,文件服务器也是这台服务器。

二、应用服务器和数据服务分离

随着业务发展,用户量上升,一台服务器不能满足要求时,通常采取做法是应用服务器和数据库服务器分离。比如应用服务器需要负责代码逻辑运算,那么就需要一台cpu性能良好的服务器;数据库服务器经常涉及到检索或缓存,那么就需要一台内存足够大,硬盘足够快的服务器;文件服务器需要存储用户的图片视频等信息,那么就需要一台硬盘足够大的服务器。
应用服务和数据服务分离的做法,增加了网站的并发处理能力,也改善了数据存储空间。

三、使用缓存技术

网站架构也和现实世界的二八定律一个原理,百分之八十的业务跑在百分之二十的代码上。所以适当把数据放入内存中,能加快数据的写入性,减少数据库的访问压力,其中就包括非关系型数据库的应用。
网站缓存分为两种:
- 缓存在应用服务器上的本地缓存
- 缓存在专门的分布式缓存服务器的远程缓存
本地的应用服务器缓存速度固然快,但是存在和应用服务争夺内存的情况;远程分布式缓存服务器速度相对慢些,可以以集群的方式出现并且理论不受内存空间的限制。

四、使用应用服务器集群

应用服务器集群是常见的解决高并发的手段,我们称之为负载均衡。做法是增加一太或多台服务器,分担原有应用服务器的负载。其实现原理为通过负载均衡调度服务器将来自用户的请求分发到一个应用服务器中执行业务逻辑处理。

五、数据库读写分离

由于大部分的数据库都支持主从热备份功能。故可以利用这点,将数据库的读出和写入分离,只从主库写入,从库读出,进而改善数据库的负载压力。

六、使用反向代理和CDN加速

反向代理和CDN加速的原理都是依靠缓存:CDN部署在网络供应商的机房,反向代理服务器部署在应用程序服务器机房。反向代理服务器和负载均衡的关系要清晰,负载均衡是反向代理的目的之一,除此以外,反向代理还有一个功能就是缓存。

七、使用分布式数据库或文件服务器

当单表数据量非常大时,可以采用分布式数据库来存储数据。此外,更通常一些的做法是将业务分库。

八、业务拆分

当网站规模达到一定水平时,要通过业务拆分来合理设计架构,比如电商系统,肯定是商品浏览和筛选这块功能负载最大,可以将这部分拆分为商品组。同理,订单、用户、物流等等都可为一组。每个业务组之间通过请求建立联系。实现访问量的科学合理分配。

以上八点,足够解决一些中小型网站的高并发问题。

私以为,一个公司的发展要以市场为导向,但是技术的变革和发展,是要依靠市场业务的反作用力,所以选择一家业务前进好的公司,对于技术人员的水平发展,要好于业务上不去的公司。当然,还是要看技术人员自身啦

反向代理和负载均衡参考:http://blog.csdn.net/cywosp/article/details/38026809


文章来自于:http://blog.csdn.net/weixin_35335605/article/details/54354791

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值