网站的海量数据和高并发的解决方案(一)

news/2024/5/20 15:11:57/文章来源:https://abelyang.blog.csdn.net/article/details/66577549

现在无论是企业的业务系统还是互联网上的网站程序都面临着数据量大的问题,这个问题如果解决不好将严重的影响系统的运行速度,下面就针对这个问题的各种解决解决方案进行介绍。

1. 缓存和页面静态化

1.1 缓存

数据量大这个问题最直接的解决方案就是使用缓存,缓存就是将数据库中获取的结果暂时保存起来在,在下次使用的时候无需从数据库中提取,这样可以大大降低数据库压力。常用的缓存框架有Ehcache、Memcache 和 Redis等。

不过缓存也不是什么情况都适用,它主要用于数据变化不是很频繁的情况。而且如果是定期失效(数据修改时不失效)的失效机制,实时性要求也不能太高,因为这样缓存中的数据和真实数据可能会不一致。

2.1 页面静态化

页面静态化是将程序最后生成的页面保存起来,以后就不用每次都调用重新生成页面了。页面静态化同时对数据量大和并发量高两大问题都有好处。

页面静态化可以在程序中使用模版技术生成,如常用的Freemarker 和 Velocity 都可以根据模版生成静态页面。另外也可以使用缓存服务器在应用服务器的上一层生成页面,如可以使用Squid,另外Nginx 也提供了响应的功能。

2. 数据库优化

要解决数据量大的问题,是避不开数据库优化的。数据库优化是不增加硬件的情况下提高处理效率,是一种用技术换金钱的方式。以下是常用的数据库优化方法。

2.1 表结构优化

表结构优化是数据库中最基础也是最重要的,如果表结构优化得不合理,就可能导致严重的性能问题,具体怎么设计更合理也没有固定不变的准则,需要根据实际情况具体处理。

2.2 SQL 语句优化

sql语句优化也是非常重要的,基础的sql 优化是语法层面的优化,不过更重要的是处理逻辑的优化,这也需要根据实际情况具体处理,而且要和索引缓存等配合食用。sql 优化有一个通用的做法就是,首先要将涉及大数据业务的sql 语句,通过仔细分析日志信息,和不同条件的执行时间,找出需要优化的语句和其中的问题,然后再有的放矢地优化。而不是不分重点的对每条语句都花同样的事件和精力优化。

2.3 分区

当一张表中的数据量变多的时候操作速度就变慢了,容易想到的解决方法就是分表,但是分表操作起来就比较麻烦。其实在常用数据库中可以不分表而达到跟分表类似的效果,那就是分区。

分区就是将一张表中的数据按照一定的规则分到不同的区进行保存,在查询数据时如果范围在同一个区内哪么可以只对一个区的数据进行操作。这样操作的数据量更少,速度更快。

2.4 分表

如果一张表中的数据可以分为几种固定不变的类型,而且如果同时对多种类型共同操作的情况不多,哪么都可以通过分表来处理。

分表方法分为两种,横切 和纵切。

横切:

假设数据库表中的数据有三个状态,处理、解决、关闭。由于数据量非常的大所以就可以将数据分别存在三个表中。第一个表中保存处理状态的数据,第二个表保存 解决状态的数据,第三个表保存关闭状态的数据,并且对每个表进行分区。由于报表一般都是按月份、季度、半年、和年来做的,所以分区也按月份,每一个月做一个分区。这样就可以大大的提高处理和统计速度哦

竖切:

如果一个表的操作频率很高们在增删改其中一部分字段数据的同时另一部分字段也可能被操作,而且(主要指查询)用不到被增删改的字段,哪么就可以吧不同类型的地段分别保存到不同的表中,这样可以减少操作时锁定数据的范围。不过这样分表后需要查询完整数据就得多表操作了。

2.5 索引优化

索引的大致原理是在数据发生变化(增删改)的时候就预先指定字段排序后保存到一个类似表的结构中,这样在查询索引字段为条件的记录时就可以很快的从索引中找到对应记录的指针并从表中获取到记录,这样速度就快多了。不过索引也是一把双刃剑,它在提高查询速度的同时也降低了增删改查的速度,因为每次数据的表话都需要更新相应的索引。

2.6 使用存储过程代替操作

在操作过程复杂而且调用频率高的业务中,可以通过使用存储过程代替直接操作来提高效率,因为存储过程主需要编译一次,而且可以在一个存储过程里面做一些复杂的操作。

3. 分离活跃数据

有些数据总数据量非常大,但是活跃数据并不多,这种情况就可以将活跃数据单独保存起来从而提高处理效率。

比如说网站的用户,将经常登录的一部分活跃用户信息存在一张表,将不活跃的用户存在另外一张表。(可以跑一个定时任务将不经常登录的用户转移到不活跃用户表)当用户登录时先从活跃用户的表中查询。查询不到后再去不活跃用户的表中查询。这样就可以提高查询的效率。

4. 批量读取和延迟修改

批量读取和延迟修改的原理是通过减少操作的次数来提高效率,如果使用的恰当,效率将呈数量级提升。

批量读取是将多次的查询合并到一次中进行。
延迟修改主要针对高并发而且频繁修改(包括新增)的数据,如一些统计数据。可以先将需要修改的数据暂时保存到缓存中,然后定时将缓存中的数据保存到数据库中,程序读取数据可以同时读取数据库中的数据和缓存的数据。(这种方式下如果保存缓存的机器出现了故障可能会丢失数据。)所以如果是重要数据就需要做一些特殊处理。

5. 读写分离

读写分离的本质是对数据库进行集群,这样就可以在高并发的情况下将数据库的操作分配到多个数据库服务器去处理从而降低了单台服务器的压力。不过由于数据库的特殊性--每台服务器所保存的数据都需要一致,所以数据同步就成了数据库集群中最核心的问题了。

一般的解决方案是:将写操作交给专门的一台服务器,这台专门负责写操作的服务器叫做主服务器。当主服务器写入(增删改)数据后从底层同步到别的服务器(从服务器),读取数据的时候到从服务器读取,从服务器可以有多台,这样就可以实现读写分离了。并且将请求分配到多个服务器处理。如果从服务器太多,主服务器同步数据时,先同步到一部分从服务器,同步过数据的从服务器再将数据同步到另外一部分没有同步数据的从服务器。

这里写图片描述

简单的数据同步方式可以采用数据库的热备份功能,不过读取到的数据可能会存在一定的滞后性。既然是集群就会涉及到负载均衡问题,负载均衡和读写分离操作一般采用专门的程序处理,而且对应用系统来说是透明的。

6. 分布式数据库

分布式数据库是将不同的表放到不同的数据库中然后放到不同的服务器。这样需要调用多个表,则可以让多台服务器同时处理,从而提高处理速度。

分布式数据库是解决单个请求本身就非常复杂的问题,它可以将单个请求分配到多个服务器,使用分布式后的每个节点还可以同时使用读写分离,从来组成多个节群。

这里写图片描述

使用分布式数据库有很多的问题需要解决,如分布式事务处理、多表查询等。

分布式的另外一种使用思路是将不同的业务数据表保存到不同的节点,让不同的业务调用不同的数据库,这样的做法其实就是和集群一样起分流作用,不过这种做法就不用同步数据了。

7. Nosql 和 hadoop

Nosql 是近年来发展非常迅速的一项技术,他的核心是非结构化。Nosql 通过多个块存储数据,操作大数据的速度非常快。
关于hadoop 请看:

hadoop 初识

摘引自:看透spring mvc 源代码分析与实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_835118.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站的海量数据和高并发的解决方案(二)

高并发的解决方案 除了数据量大,另外一个常见的问题就是并发量高,很多架构就是针对这个问题设计出来的。 1.应用和静态资源分离 刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器…

python diango_纯小白从零建简易网站|Python|Django

0、重装了云服务器系统 1、更新系统软件包yum update -y 2、安装软件管理包和可能使用的依赖 yum -y groupinstall "Development tools" yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel 3、下载Pyh…

404 not found nginx是什么意思_404到底是什么意思,网站设置有啥好处,怎么设置?...

在我们打开网站的时候,有时候会存在打不开的现象,而每一种打不开现象背后都有一个逻辑,例如数据库错误,例如页面不存在等现象,而404就是页面不存在返回到的一种页面,有些404页面会进行设置了自动跳转到首页…

php 随机在文章中添加锚文本_什么是锚文本,锚文本链接怎么做对SEO有好处?...

​SEO是一个由决定成败的工作,如果你想要试改善你的网站排名,我想每一名SEO人员在做优化的时候,都绕不开锚文本这个话题,如果你选择正确的锚文本,它会使你事半功倍,反之则是事倍功半。今天跟大家分享的主题…

用 ASP.NET 2.0 改进的 ViewState 加快网站速度

用 ASP.NET 2.0 改进的 ViewState 加快网站速度 发布日期: 2006-1-13|本文讨论:• ViewState 如何工作 • ASP.NET 2.0 ViewState 的改进 • 使用控件状态维护功能 • 性能考虑 本文使用以下技术:ASP.NET、C#代码下载:ViewState…

window location href 手机端无法跳转_【网站技术解析】 下载跳转,不同网站传参...

为了从66网站向88网站引流,增加两个网站权重,同时也方便我管理这么多整理的资源,我这里下载链接按钮,链接的资源都是跳转到88网站的,涉及到两个网站之间传参数,我这里直接在网址后面传递了参数,…

centos怎么用命令关机_怎么用Linux命令行测试网站连接速度

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本文主要讲解如何使用Linux命令行测试网站连接速度。网站速度可以对用户体验有很大的影响,如果你是一个web开发人员,你当然希望开…

vue 直接访问静态图片_VuePress - Vue驱动的静态网站生成器

还在烦恼怎么做一个简单又美观的文档或博客网站吗?VuePress,让你十分钟就能搭建一个静态网站!Vue.js简介VuePress,是 vuejs 在 Github 上开源的静态网站生成器,项目仓库位于 https://github.com/vuejs/vuepress&#x…

IPGuard如何导入网站库

进控制台,点菜单分类管理-网站-操作-导入或导出网站,网站库下载地址: https://download.csdn.net/download/sznewcasecn/12151577 更多资料:http://www.newcase.com.cn/

rust全息要啥才能做_网站要怎么做推广才能有效果?

很多人建好了网站之后,都希望自己的网站能够给更多的人看到,因此都纷纷寻找可以推广网站的方法。其实网站推广的方法有很多,现在大致给大家介绍几种。一、利用评论推广找一些跟自己主题相关的博客、论坛去进行留言评论,引起大家对…

ip-guard分类管理网站分类如何导入

如何导入网站分类,导入后如下图:点分类-网站类别-操作菜单-导入网站库 网站分类下载地址

php matomo,Matomo4.2.1 发布,网站访问统计系统

Matomo 4.2.1 发布了。 Matomo 是一套基于 PHP5 MySQL 技术构建的开源网站访问统计系统,能够提供详细的统计信息,比如网页浏览人数、访问最多的页面、搜索引擎关键词等等流量分析功能。新的内容为了提高安全性,Matomo 用户界面创建的所有 coo…

灵动标签写php,帝国CMS灵动标签PHP代码完成标签无穷嵌套的结果_CMS体系建站教程...

关于熟习帝国CMS的朋侪多数晓得运用灵动标签举行特定信息的挪用,而灵动标签的壮大功用远非云云。灵动标签的PHP函数是:sys_ReturnEcmsLoopBq(栏目ID/专题ID,显现条数,操纵范例,只显现有标题图片,附加SQL前提,显现排序)采纳灵动标签的php代码可以在不支持…

html自动加载网址,网页自动刷新网站监控工具添加网址到网址列表的方法

有时候网站打开网页后,停留久了,内容就过时不能及时刷新信息,这时候使用一些网页自动刷新工具就能让网页自动刷新,随时监控和管理网站的网页内容,网页自动刷新监控工具就是这样的一款软件,今天小编将为大家…

香港云服务器网站打开缓慢,香港云服务器搭建的网站卡慢怎么办?火星直播

在香港云服务器上的网页访问卡慢该怎么办?网页访问卡慢有许多缘故,多次详细的 HTTP 恳求包含解析域名、创建 TCP 联接、进行恳求、香港云服务器接受到恳求开展解决并回到事件处理、电脑浏览器对 HTML 编码开展分析并恳求别的資源,及其对网页页…

IP-Guard网站分类初始化库如何导入

如何导入网站分类,导入后如下图:点分类-网站类别-操作菜单-导入网站库 网站分类下载地址:IP-GUARD网址库20171211.rar-网络安全文档类资源-CSDN下载

阿里开发的这个网站,让我写文章效率提高50%

前言 语雀是阿里开发的在线文档编辑与协同工具的网站,除了基础的文本格式:粗体、斜体、下划线、删除线、上标、下标、代码、颜色等,语雀还支持插入表格、思维导图、流程图、本地文件、优酷视频、高德地图等内容。所以无论是个人创作还是在团…

程序员之实用工具网站

1 搜索引擎 1.1秘迹搜索 一款无敌有良心、无敌安全的搜索引擎,不会收集私人信息,保护私隐,没有Cookie,并且秘迹搜索聚合了百度、360、Bing、搜狗等搜索结果。 网站:https://mijisou.com/ 1.2DogeDoge搜索 DogeDoge搜索,中文名多吉搜索,一个绝赞的民间高手开发的搜索…

程序员最爱的编程学习网站

序言: 经常有小白问:零基础适合学习编程吗?自学编程的学习资源应该去哪里找?...... 现如今,很大一部分人在学习编程的道路上都选择自学,但都苦于找不到适合自己的学习资源,今天为大家介绍一些免费自学编程的网站,为大家提供一些帮助: 1、CSDN 网站:https://www.cs…

小智一分钟带你搭建个人网站

前言: 这是小编在学习网页的时候,使用ISS配置服务器,写的一些总结,希望对大家有所帮助! 简介: 首先介绍一下ISS,ISS是Internet Information Services的缩写,意为互联网信息服务,是微软公司提供的基于运行Microsoft Windows的互联网基本服务。ISS是一种Web(网页)服…