如何优化网站高并发访问?

【如何优化网站高并发访问?】
程序员来报道啦 。
什么是高并发
高并发是指 。通过设计保证系统能够同时并行处理很多请求 。高并发相关常用的一些指标有响应时间 。吞吐量 。每秒查询率QPS(Query Per Second) 。并发用户数等 。

如何优化网站高并发访问?

文章插图
一般来讲优化为两大类 。一是软件层面的 。二是硬件层面的 。
如何优化网站高并发访问?

文章插图
说到优化 。可能更注重的是查询的效率 。所以要根据自己的业务进行拆分表建立索引 。这是肯定必须要有的 。再就是使用redis等高性能的数据库 。可以把热数据放在内存中 。并建立数据淘汰机制 。redis的过期命令可以好好的利用起来 。同时要注意不要有大量的数据在同一时刻过期 。
软件方面有以下几种方案:一、负载均衡技术
如何优化网站高并发访问?

文章插图
1.使用LVS服务器负载均衡
LVS服务器结合Keepalived做高可用 。据估计lvs大概可以支撑5万的并发量 。由俄罗斯程序员使用C语言开发而成 。技术7层网络架构的数据链路层 。最接近底层的那一层 。
如何优化网站高并发访问?

文章插图
2.LVS下面还可跟Nginx做负载均衡
再次分担压力 。nginx也可以结合Keepalived做高可用 。一旦主机挂掉了备份机立马就能上岗 。
二、数据库优化
1、单库数据库
一个初建的网站往往用户群都是很小的 。最简单的网站架构就能解决实际的用户需求 。当然为了保证网站的稳定性和安全性 。我们会把网站的应用部署到至少两台机器上 。后台的存储使用数据库 。如果经济实力允许 。数据库使用单台服务器部署
2、数据库读写分离
如何优化网站高并发访问?

文章插图
一个数据库主要负责写操作我们称之为主库 。一个数据库专门负责读操作我们称之为副库 。副库的数据都是从主库导入的 。数据库的读写分离可以有效的保证关键数据的安全性 。但是有个缺点就是当用户浏览数据时候 。读的数据都会有点延时 。这种延时比起全站不可用那肯定是可以接受的 。
3、缓存技术
如何优化网站高并发访问?

文章插图
缓存主要是适用于读操作 。并且缓存的读操作的效率要远远高于从数据库以及硬盘读取数据的效率 。
5、数据库的垂直拆分
业务再接着的增长下去 。数据量也会随之越来越大了 。这样发展下去总有一天主库也会产生瓶颈了 。那么接下来我们又该如何解决主库的瓶颈了?方法很简单就是我们要拆分主库的数据了 。那么我该以什么维度拆分数据了?一个数据库里有很多张表 。不同的表都针对不同的业务 。网站的不同业务所带来的数据量也不是不同的 。这个时候系统的短板就是那些数据量最大的表 。所以我们要把那些会让数据库产生瓶颈的表拆出来 。例如电商系统里商品表和交易表往往数据量非常大 。那么我们可以把这两种表建立在单独的两个数据库里 。这样就拆分了数据库的压力 。这种做法叫做数据垂直拆分
6、数据库的水平拆分
表数据的处理已经超出了单台服务器的能力 。这个时候我们就得对这个单库单表的数据进行更进一步的拆分 。也就是将一张表分布到两台不同的数据库里 。这个做法就是叫做数据的水平拆分了 。可以根据项目拆分 。再结合按年的拆分等 。
硬件方面优化:
如何优化网站高并发访问?

文章插图
加机器、分布式必不可少、换更强大的CPU、使用PCIE固态、高速内存等 。相比软件来说硬件对于高并发能力的提升也是同等重要的 。要软硬结合的提升才是终极解决方案 。不断的榨取硬件的性能 。
如果你也爱技术 。爱好编程 。爱好java 。那么关注我吧!
其他观点:
面对高并发的访问 。我总结了一下之前用过的方法 。也查询了一些资料进行了补充 。跟大家分享一下:
HTML静态化
相比打开一个静态页面来说 。如果页面需要连接后台数据库查询数据 。那么后者的速度一定会比前者要慢 。
HTML静态化就是要把连接后台数据库查询数据的工作提前做好 。生成静态化的页面 。那么访问的效率一定会提高很多 。并且生成一套静态化的页面 。所有用户都可以访问 。这样也会减少数据库的压力 。

推荐阅读