# 讲讲项目中你是如何处理高并发的?
讲讲项目中你是如何处理高并发的?
计算机/cs技术知识点
高并发?
高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。
1 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
2 吞吐量:单位时间内处理的请求数量。
3 QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。
4 并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。
处理高并发问题的常见方法有如下几种:
1. 使用静态页面
尽量将可以使用静态页面的地方使用静态页面,减少页面的解析时间,能够缓解服务器压力并降低数据库数据的频繁交换。
实现静态页面的方法由很多:
* freemarker
* Thymeleaf
2.缓存方面
将一些有时效性或经常访问的数据存储在专门用于缓存的应用程序中,减少数据库的访问压力。常见的缓存技术有:
* 本地缓存:Cache
* 分布式缓存:Redis
3. 优化数据库方面(对于一个优秀的应用,sql优化是必须做的)
* 优化数据库查询语句,复杂的SQL语句不要使用ORM框架自动生成而是手动编写,同时优化数据库的表结构,如加入索引等.
* 数据库读写分离,主数据库服务器负责写,从数据库服务器负责读,通过主从复制来保证数据的完整性。
* 分表分区
* 对数据库服务器进行硬件升级
* 表的设计要符合三大范式
* 添加适当的存储过程,触发器和事务等.
4.负载均衡
我们知道可以通过集群以支持高并发和大数据量,而集群之间的分工就需要依靠负载均衡技术。
负载均衡是指将请求划分给多个操作单元也就是分开部署的服务器上,即将收到请求按照一定规则分发给其它专门处理的处理服务器进行处理
5.动静分离
一般有两种:
1 图片服务器分离:因为请求访问服务器上的图片资源是非常耗费服务器资源的,所以我们可以单独部署图片服务器,将压力转移并分担风险。
2 将静态资源全部存放在 CDN 服务器上或者 nginx 服务器上,提高用户访问静态代码的速度,降低对后台应用访问。
* CDN:能实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等信息将请求重新导向离用户最近的服务节点上。
* nginx:高性能的HTTP服务器和反向代理服务器