大型互联网站解决海量数据的常见策略
大型互联网站的数据存储与传统存储环境相比不仅是一个服务器、一个数据库那么简单,而是由网络设备、存储设备、应用服务器、公用访问接口、应用程序 等多个部分组成的复杂系统。分为 业务数据层、计算层、数据仓储、数据备份,通过应用服务器软件提供数据存
大型互联网站的数据存储与传统存储环境相比不仅是一个服务器、一个数据库那么简单,而是由网络设备、存储设备、应用服务器、公用访问接口、应用程序 等多个部分组成的复杂系统。分为 业务数据层、计算层、数据仓储、数据备份,通过应用服务器软件提供数据存储服务,并且通过监控工具对存储单元监控。
随着系统中用户数据量的线性增长,数据量将会越来越多。在这样一个数据不断膨胀的环境中,数据已经如洪水般汹涌泛滥。数据查找和调用困难,在海量数据中一些用户提交的请求往往要等到第二天才能得知结果,直接影响到了用户满意度的提升和新业务的布局。在技术上而言,这一特点使得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数据库系统中,
相关文章
大型互联网站解决高并发的常见策略
–end–
原文地址:大型互联网站解决海量数据的常见策略, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

隨著智慧型手機技術的不斷發展,手機在我們日常生活中扮演著越來越重要的角色。而作為一款專注於遊戲效能的旗艦手機,黑鯊手機備受玩家青睞。然而,有時候我們也會面臨到黑鯊手機開不了機的情況,這時候我們就需要採取一些措施來解決這個問題。接下來,就讓我們來分享五招教你解決黑鯊手機開不了機的問題:第一招:檢查電池電量首先,確保你的黑鯊手機有足夠的電量。可能是因為手機電量耗盡

大家都知道,如果電腦無法載入驅動程序,該設備可能就無法正常工作或與電腦進行正確的互動。那在電腦上彈出無法在此裝置上載入驅動程式的提示框,我們要如何解決呢?下面小編就教大家兩招輕鬆解決問題。 無法在此裝置上載入驅動程式解決方法 1、開始功能表搜尋「核心隔離」。 2、將記憶體完整性關閉,上方提示「記憶體完整性已關閉。你的裝置可能易受攻擊。」點擊後方忽略即可,不會對使用有影響。 3.重啟機器之後即可解決問題。

隨著社群媒體的不斷發展,小紅書已經成為越來越多年輕人分享生活、發現美好事物的平台。許多用戶在發布圖片時遇到了自動儲存的問題,這讓他們感到十分困擾。那麼,如何解決這個問題呢?一、小紅書發布自動儲存圖片怎麼解決? 1.清除快取首先,我們可以嘗試清除小紅書的快取資料。步驟如下:(1)開啟小紅書,點選右下角的「我的」按鈕;(2)在個人中心頁面,找到「設定」並點選;(3)向下捲動,找到「清除快取」選項,點擊確認。清除快取後,重新進入小紅書,嘗試發布圖片看是否解決了自動儲存的問題。 2.更新小紅書版本確保你的小

DDREASE是一種用於從檔案或區塊裝置(如硬碟、SSD、RAM磁碟、CD、DVD和USB儲存裝置)復原資料的工具。它將資料從一個區塊設備複製到另一個區塊設備,留下損壞的資料區塊,只移動好的資料區塊。 ddreasue是一種強大的恢復工具,完全自動化,因為它在恢復操作期間不需要任何干擾。此外,由於有了ddasue地圖文件,它可以隨時停止和恢復。 DDREASE的其他主要功能如下:它不會覆寫恢復的數據,但會在迭代恢復的情況下填補空白。但是,如果指示工具明確執行此操作,則可以將其截斷。將資料從多個檔案或區塊還原到單

0.這篇文章乾了啥?提出了DepthFM:一個多功能且快速的最先進的生成式單目深度估計模型。除了傳統的深度估計任務外,DepthFM還展示了在深度修復等下游任務中的最先進能力。 DepthFM效率高,可以在少數推理步驟內合成深度圖。以下一起來閱讀這項工作~1.論文資訊標題:DepthFM:FastMonocularDepthEstimationwithFlowMatching作者:MingGui,JohannesS.Fischer,UlrichPrestel,PingchuanMa,Dmytr

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

在iPhone上面臨滯後,緩慢的行動數據連線?通常,手機上蜂窩互聯網的強度取決於幾個因素,例如區域、蜂窩網絡類型、漫遊類型等。您可以採取一些措施來獲得更快、更可靠的蜂窩網路連線。修復1–強制重啟iPhone有時,強制重啟設備只會重置許多內容,包括蜂窩網路連線。步驟1–只需按一次音量調高鍵並放開即可。接下來,按降低音量鍵並再次釋放它。步驟2–過程的下一部分是按住右側的按鈕。讓iPhone完成重啟。啟用蜂窩數據並檢查網路速度。再次檢查修復2–更改資料模式雖然5G提供了更好的網路速度,但在訊號較弱

哭死啊,全球狂煉大模型,一網路的資料不夠用,根本不夠用。訓練模型搞得跟《飢餓遊戲》似的,全球AI研究者,都在苦惱怎麼才能餵飽這群資料大胃王。尤其在多模態任務中,這問題尤其突出。一籌莫展之際,來自人大系的初創團隊,用自家的新模型,率先在國內把「模型生成數據自己餵自己」變成了現實。而且還是理解側和生成側雙管齊下,兩側都能產生高品質、多模態的新數據,對模型本身進行數據反哺。模型是啥?中關村論壇上剛露面的多模態大模型Awaker1.0。團隊是誰?智子引擎。由人大高瓴人工智慧學院博士生高一鑷創立,高
