大型互联网站解决海量数据的常见策略
大型互联网站的数据存储与传统存储环境相比不仅是一个服务器、一个数据库那么简单,而是由网络设备、存储设备、应用服务器、公用访问接口、应用程序 等多个部分组成的复杂系统。分为 业务数据层、计算层、数据仓储、数据备份,通过应用服务器软件提供数据存储服务,并且通过监控工具对存储单元监控。
随着系统中用户数据量的线性增长,数据量将会越来越多。在这样一个数据不断膨胀的环境中,数据已经如洪水般汹涌泛滥。数据查找和调用困难,在海量数据中一些用户提交的请求往往要等到第二天才能得知结果,直接影响到了用户满意度的提升和新业务的布局。在技术上而言,这一特点使得RDBMS在大型应用场景被大幅限制,唯一的可选方案是Scale Out,通过增加多个逻辑单元的资源,并使它们如同一个集中的资源那样提供服务来实现系统的扩展性。
系统中的数据就好比我们家里的物品,衣服放在衣柜里,碟子放在碗橱里,数据库、存储系统就好比你的衣柜和碗橱是一个存放的容器,衣服和碟子就好比不同的数据,将不同类型的东西放入合适的存储空间里面,这样系统的效率和利用率将会更高,所以我们将会做出如下设计,如图所示:
对于大型系统存储单元的结构模型我们分为6个部分组成,清单如下:
1. 业务数据层
各类业务所产生的各种文件类型的数据,其中包含 用户信息、用户操作记录、实时业务数据、手机客户端升级应用程序、图片,等。
2. 计算层
针对不同的数据格式、不同类型的数据文件,通过不同的工具、计算方法进行操作,针对大量的数据计算采用一些分布式、并行计算的算法,例如:MapReduce,BSP。并且对一部分的数据进行缓存,缓解对存储应用服务器的压力。
3. 数据存储层
对于海量数据的查询与存储,特别是针对用户行为日志操作,需要使用到一些列式数据库服务器,对于处理业务和一些业务规则的数据依然存放在关系型数据库中,将采用MySQL来存储。
4. 数据仓储
数据存储主要是针对于用户行为日志和用户行为分析,也是系统中数据量产生较大的一个环节,将会采用Apache Hive、Pig、Mathout 对数据仓储进行构建。
5. 数据备份
分为在线数据备份和离线数据备份,数据备份环节需要经过运维经验的积累,根据业务和用户访问量进行定制合理的备份规律。
6. 硬件
硬件环境是存储单元最基础的部分,分为磁盘、内存、网络设备存储,将不同的业务数据、文件存储在不同的硬件设备上。
技术实现
对于系统不同的业务数据和应用服务器的架构需要采用不同的读写方式,以及数据存储类型存放,数据仓储构建,数据冷热分离、数据索引多个部分组成。例如:业务应用程序、日志采集代理、用户空间文件系统(Filesystem
in Userspace)。Data Access Proxy Layer(DDAL/Cache
Handler)、OLAP、日志服务器、Oracle(暂定)、MySQL、Redis、Hive、HDFS、Moosefs。
如图所示:
针对以上设计架构,描述清单如下:
1. Data Access Proxy Layer
统称数据访问代理层(简称 DAPL),封装了DDAL和Cache
Handler层,抽象的对编写的应用程序进行了划分,便于扩展和维护,例如:需要对HDFS或者图形数据库操作,上层不需要知道HDFS具体操作,只需要关注提供的接口。DAPL封装了很多访问各种数据源的读写策略。因此,可以保证对不同数据库、数据源操作的事务完整性。
2. DDAL
统称分布式数据访问层(简称
DDAL)主要针对关系数据库的读写分离操作,需要做到读写分离,首先需要对传入的SQL语句进行解析,并且采用Round-Robin算法负载分载对数据大量读取的操作,在代码实现中将使用MySQL-JDBC中的参数配置实现对MySQL-Slave的读取压力分载。
3. Cache Handler
与DDAL的相似,具体区别在于自己实现了Round-Robin算法负载分载对数据大量读取的操作,并且能在Redis Master当机的状态下重新指派新的Master进行写的操作。
4. Redis一主多从
对缓存数据进行读写分离,减少单台机器的I/O瓶颈,值得一提的是Cache不是可靠的存储,所以在设计时,需要容许Cache的数据丢失,因此,Cache的数据全部失效时,会从数据库里重新装载。
5. MySQL双主多从
这种方式是MySQL架构设计中最折中的方案,对数据的访问压力分载和数据的可靠性都有了相应的保障。前端2台Master
MySQL相互进行数据备份,后端大量的Slave
MySQL对Master写入的数据进行同步,所以每台机器节点上的MySQL数据库中的数据都是一致的,并且DDAL应用程序将数据轮询写入Master
MySQL数据库中。
6. 数据库读写分离
主要采用mysql的策略,学习MySQL-Prxoy的策略,自己开发对MySQL书籍节点进行读写分离的方法,MySQL驱动支持读写分离的数据完整性,当数据量超大规模的时候将会采用Sharding策略。
7. 缓存读写分离
缓存Redis的策略,采用自己开发的应用程序需要实现Round Robin算法,对Redis Master和Slave缓存集群进行读写分离操作。
8. ETL Tools
采用Apache Hadoop项目中的Pig对海量的行为数据进行清洗,Pig可以针对有规律的半结构化数据执行类似SQL的脚本,并且可以将计算压力分载到每台服务器上进行分布式、并行处理。
9. Hive集群
针对数据仓库的建设由Apache Hive进行构建,是一个建立在Hadoop上的数据仓库框架,它提供了一个方便的数据集成方法和类似SQL的Hive QL查询语言,实现了Map/Reduce算法支持在Hadoop框架上进行大规模数据分析。
10. HDFS分布式文件系统
Hive中的数据全部存储在Hadoop分布式文件系统中,所有被存储的数据都会有数据的存储副本,这样对数据的可靠性有了保障。
11. Moosefs分布式文件系统
与上面提到的HDFS一个文件系统是有区别的,Moosefs不需要任何客户端程序对分布式文件进行操作的服务器,可以直接与任何运行环境进行对接,而且服务端也有副本复制的功能。
12. 冷热数据分离
将系统中产生的进行归类存放,将用户更多关心、热门话题等内容
抽象为“最近几天”的“热数据”,而越早的数据我们在设计中抽象的分为“冷数据”。由此可见,“热节点”存放最新的、被访问频率较高的数据。对于这部分数据,我们希望能给用户提供尽可能快的查询速度,因此无论在硬件还是软件的选择上都会有了明显的区分,例如:最近常访问频率高的数据将会存储在系统缓存中,需要经常性被的业务数据将会存储在MySQL或者Oracle数据库系统中,
数据分析咨询请扫描二维码
在准备数据分析师面试时,掌握高频考题及其解答是应对面试的关键。为了帮助大家轻松上岸,以下是10个高频考题及其详细解析,外加 ...
2024-12-20互联网数据分析师是一个热门且综合性的职业,他们通过数据挖掘和分析,为企业的业务决策和运营优化提供强有力的支持。尤其在如今 ...
2024-12-20在现代商业环境中,数据分析师是不可或缺的角色。他们的工作不仅仅是对数据进行深入分析,更是协助企业从复杂的数据信息中提炼出 ...
2024-12-20随着大数据时代的到来,数据驱动的决策方式开始受到越来越多企业的青睐。近年来,数据分析在人力资源管理中正在扮演着至关重要的 ...
2024-12-20在数据分析的世界里,表面上的技术操作只是“入门票”,而真正的高手则需要打破一些“看不见的墙”。这些“隐形天花板”限制了数 ...
2024-12-19在数据分析领域,尽管行业前景广阔、岗位需求旺盛,但实际的工作难度却远超很多人的想象。很多新手初入数据分析岗位时,常常被各 ...
2024-12-19入门数据分析,许多人都会感到“难”,但这“难”究竟难在哪儿?对于新手而言,往往不是技术不行,而是思维方式、业务理解和实践 ...
2024-12-19在如今的行业动荡背景下,数据分析师的职业前景虽然面临一些挑战,但也充满了许多新的机会。随着技术的不断发展和多领域需求的提 ...
2024-12-19在信息爆炸的时代,数据分析师如同探险家,在浩瀚的数据海洋中寻觅有价值的宝藏。这不仅需要技术上的过硬实力,还需要一种艺术家 ...
2024-12-19在当今信息化社会,大数据已成为各行各业不可或缺的宝贵资源。大数据专业应运而生,旨在培养具备扎实理论基础和实践能力,能够应 ...
2024-12-19阿里P8、P9失业都找不到工作?是我们孤陋寡闻还是世界真的已经“癫”成这样了? 案例一:本硕都是 985,所学的专业也是当红专业 ...
2024-12-19CDA持证人Louis CDA持证人基本情况 我大学是在一个二线城市的一所普通二本院校读的,专业是旅游管理,非计算机非统计学。毕业之 ...
2024-12-18最近,知乎上有个很火的话题:“一个人为何会陷入社会底层”? 有人说,这个世界上只有一个分水岭,就是“羊水”;还有人说,一 ...
2024-12-18在这个数据驱动的时代,数据分析师的技能需求快速增长。掌握适当的编程语言不仅能增强分析能力,还能帮助分析师从海量数据中提取 ...
2024-12-17在当今信息爆炸的时代,数据分析已经成为许多行业中不可或缺的一部分。想要在这个领域脱颖而出,除了热情和毅力外,你还需要掌握 ...
2024-12-17数据分析,是一项通过科学方法处理数据以获取洞察并支持决策的艺术。无论是在商业环境中提升业绩,还是在科研领域推动创新,数据 ...
2024-12-17在数据分析领域,图表是我们表达数据故事的重要工具。它们不仅让数据变得更加直观,也帮助我们更好地理解数据中的趋势和模式。相 ...
2024-12-16在当今社会,我们身处着一个飞速发展、变化迅猛的时代。不同行业在科技进步、市场需求和政策支持的推动下蓬勃发展,呈现出令人瞩 ...
2024-12-16在现代商业世界中,数据分析师扮演着至关重要的角色。他们通过解析海量数据,为企业战略决策提供有力支持。要有效完成这项任务, ...
2024-12-16在当今数据爆炸的时代,数据分析师是组织中不可或缺的导航者。他们通过从大量数据中提取可操作的洞察力,帮助企业在竞争激烈的市 ...
2024-12-16