项目中遇到高并发、大数据应该如何处理

时间:2021-1-8 作者:admin

问题描述

如果项目中遇到大量的数据和高并发的时候,有可能会造成服务器崩溃,用户的页面崩溃,卡顿假死等现象,因此需要一些手段来处理这种情况!

从前端的角度看

假设后端已经明确返回的数据量很大的话,从前端的角度来说应该从三方面来入手!1. 分段加载 2. 尽量减少无用数据 3. 把数据加载异步运行在后台

分段加载

这种方式主要是通过修改交互方式,在前端采用分页或者滚动加载的方式,目的是使数据不要一次向全部处理!从而提高加载速度。

尽量减少无用数据

后端返回的数据中可能存在大量本次无用的字段,应与后台写上尽量去掉这些无用的字段,尽量减少数据的体积。

切入后台运行

如果加载的数据还需要进行运算的话,不影响页面的继续加载,可以将这部分请求切换到后台运行,那么这里就要用到H5中的 worker。所谓worker就是可以单独启动一个线程在后台运行脚本,使用方法也非常简单,大致用法如下所示:

const worker = new Worker(aURL,options)
// aURL 指定了要运行的脚本的地址,必须遵守同源策略
// options 用来指定worker的名称,用来区分多个线程

从后端的角度看

针对大量的数据,我们可以在后端进行一些优化,大体有以下几种方式

  1. HTML静态化
  2. 文件服务器
  3. 负载均衡和反向代理
  4. 动静分离
  5. 数据库和sql语句优化

HTML静态化

把一些访问量大,但是内容不经常改变的页面,直接生成静态化页面。这样在极大的程度上缓解了服务器数据处理和数据库交互的压力。

文件服务器

提供专注于处理文件存储和读取的系统,比如图片这种资源是web服务中相对消耗最大的。把文件系统单独分离出来,可以把服务器的压力转移,还可以分担风险。

负载均衡和反向代理

首先,负载均衡是大型网站解决高负荷和大量并发请求的终极解决办法,这种方式可以把大量的工作分摊到多个操作单元上进行执行,比如:Web服务器,FTP服务器,企业关键应用服务器等, 从而共同完成任务。

动静分离

把服务器的静态资源例如html,css,js,图片等于后台应用分开来部署,也可以把静态的资源部署到CDN上,提高访问速度。动态的数据通过接口API提供。

数据库sql优化

因为大量的数据都需要跟数据库进行交互,所以需要对sql进行优化,优化过的sql和没优化过的sql相比处理性能还是天差地别的。
主要的优化手段有

  1. 数据库添加索引
  2. 适当的分库分表
  3. 使用数据库缓存
  4. sql语句调优
  5. 使用自增主键
  6. 数据库读写分离
  7. 数据库活跃数据分离
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。