项目的高并发处理

首先简单描述下分布式和集群:
分布式:将不同的业务分在不同的地方,即一个任务分给多个机器去做,减少单个任务的执行时间。
集群:将多台服务器集中在一起,实现同一业务,即提高单位时间内执行的任务数。
分布式每个点可以做集群,而集群不一定是分布式的。

处理高并发问题的常见方法

1. 使用静态页面**
尽量将可以使用静态页面的地方使用静态页面,减少页面的解析时间,能够缓解服务器压力并降低数据库数据的频繁交换。
实现静态页面的方法由很多:

  • freemarker 和 SpringMVC 整合:地址
  • 模拟请求,将结果保存到html文件中,如使用HttpClient之类的:地址

2.缓存**
将一些有时效性或经常访问的数据存储在专门用于缓存的应用程序中,减少数据库的访问压力。常见的缓存技术有:

  • 本地缓存:Cache
  • 分布式缓存:Redis

3. 优化数据库**
分为两个方面:

  • 优化数据库查询语句,复杂的SQL语句不要使用ORM框架自动生成而是手动编写,同时优化数据库的表结构,如加入索引等.
  • 数据库读写分离,主数据库服务器负责写,从数据库服务器负责读,通过主从复制来保证数据的完整性。

4.负载均衡
我们知道可以通过集群以支持高并发和大数据量,而集群之间的分工就需要依靠负载均衡技术。
负载均衡是指将请求划分给多个操作单元也就是分开部署的服务器上,即将收到请求按照一定规则分发给其它专门处理的处理服务器进行处理

5.动静分离
一般有两种:

  • 图片服务器分离:因为请求访问服务器上的图片资源是非常耗费服务器资源的,所以我们可以单独部署图片服务器,将压力转移并分担风险。
  • 将静态资源全部存放在 CDN 服务器上或者 nginx 服务器上,提高用户访问静态代码的速度,降低对后台应用访问。
    CDN:能实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等信息将请求重新导向离用户最近的服务节点上。
    nginx:高性能的HTTP服务器和反向代理服务器

你可能感兴趣的:(总结和问题,项目高并发,问题,处理,解决方案)