海量数据和高并发问题的分析与解决


B/S 系统出现的问题都可以从网络、软件和硬件三个方面来进行分析和解决。海量数据和高并发也是这样。

内网一般不会成为瓶颈,因为外网和硬件会在它之前出现瓶颈。本文说道的网络特指外网。

海量数据的主要问题是硬件资源出现瓶颈,无法支撑海量数据的访问与存储。

高并发的主要问题不仅包括硬件资源瓶颈,还包括网络资源瓶颈。网络资源瓶颈主要指的是网络的带宽,在本文指的是外网的带宽。

下面分别对海量数据和高并发问题的三个方面进行分析,并提供一些解决方案。

一、海量数据

(一)网络问题

数据的访问一般是通过内网访问,所以可以忽略网络问题。

(二)软件问题

虽然海量数据的主要问题是硬件问题,但是,通过软件方面的优化,可以减少数据的访问次数,这也能从一定程度上解决部分问题。

软件优化可以从访问、代码、存储三个方面进行。

1、访问

访问优化是减少客户端对服务端的访问次数,具体方法有:

  • 页面缓存;

  • 页面静态化;

  • 表单前端验证。

2、代码

代码优化是减少应用层对数据的访问次数。常用的方法有批量读取、延迟修改、SQL 优化和数据缓存等。

1)批量读取

批量读取是将多次查询合并到一次中进行,减少查询次数。

2)延迟修改

延迟修改主要针对需要频繁添加或修改的数据,如一些统计数据。这种情况可以先将需要修改的数据暂时保存到缓存中,然后定时将缓存中的数据保存到数据库中,程序在读取数据时可以同时读取数据库中和缓存中的数据。

3)SQL 优化

SQL 语句优化要根据具体的业务需求来进行。

4)数据缓存

数据缓存就是将一部分数据或对象暂时保存在内存中,以此来分担数据库的压力。可以使用 NoSQL 数据库来实现,比如 Memcache、Redis、MongoDB 等。

NoSQL 数据库去掉了数据结构,非常易于扩展,而且有非常高的读写性能,尤其在大数据量下,表现优秀。NoSQL 天生支持分布式。

3、存储

存储优化包括数据库优化和数据分离。

1)数据库优化

数据库优化主要指优化数据结构和索引。

2)数据分离

数据分离是指将数据拆分到多个表或者多个数据库,即分表和分库。(本节讲的是软件优化,所以拆分的数据库仍然在同一台服务器上)

常见的数据分离方法有:

  • 分离数据库中活跃的数据;

  • 读写分离;

  • 分离到 NoSQL 数据库;

  • 按业务的拆分;

(三)硬件问题

硬件问题可以从增加硬件配置、增加服务器数量两个方面来解决。

1、增加硬件配置

增加硬件配置能在一定程度上提升数据库的处理能力,但是根本解决海量数据的问题。

2、增加服务器数量

增加服务器数量有两种做法,一种是做分布式,另一种是做负载均衡。

1)分布式

分布式是将不同的应用放在不同的服务器上,让多台服务器协同来完成一个系统的运行。比如将数据库服务器独立出来。

2)负载均衡

负载均衡是把同一个应用放在不同的服务器上,。

海量数据一样存在高并发的问题

二、高并发

(一)网络

网络资源瓶颈就是带宽不够用,

要解决带宽资源不够用的问题,

第一步可以增加带宽;

第二步就是分流,比如将图片、视频等静态资源转移到CDN;

第三步就是减少带宽的使用,比如在客户端缓存数据,提交表单前在客户端做数据验证,避免无效的提交。

(二)软件

高并发在软件方面的优化主要是客户端缓存,主要有:

  • 页面缓存;

  • 页面静态化;

  • 表单前端验证。

(三)硬件

硬件资源瓶颈就是服务器性能不够用。

要解决服务器性能的问题,要么增加硬件配置,要么增加服务器数量。

增加服务器数量有两种方法,一种是做分布式,将不同的应用放在不同的服务器;然后做负载均衡,把同一个应用放在不同的服务器上。


前一篇:
后一篇:

发表评论