自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

互聯(lián)網(wǎng)架構(gòu)模板:“存儲層”技術(shù)

存儲 存儲軟件
拋開 BAT 各自差異很大的業(yè)務(wù),站在技術(shù)的角度來看,其實 BAT 的技術(shù)架構(gòu)基本是一樣的。再將視角放大,你會發(fā)現(xiàn)整個互聯(lián)網(wǎng)行業(yè)的技術(shù)發(fā)展,最后都是殊途同歸。

 很多人對于 BAT 的技術(shù)有一種莫名的崇拜感,覺得只有天才才能做出這樣的系統(tǒng),但經(jīng)過前面對架構(gòu)的本質(zhì)、架構(gòu)的設(shè)計原則、架構(gòu)的設(shè)計模式、架構(gòu)演進等多方位的探討和闡述,你可以看到,其實并沒有什么神秘的力量和魔力融合在技術(shù)里面,而是業(yè)務(wù)的不斷發(fā)展推動了技術(shù)的發(fā)展,這樣一步一個腳印,持續(xù)幾年甚至十幾年的發(fā)展,才能達到當前技術(shù)復(fù)雜度和先進性。

[[284021]]

拋開 BAT 各自差異很大的業(yè)務(wù),站在技術(shù)的角度來看,其實 BAT 的技術(shù)架構(gòu)基本是一樣的。再將視角放大,你會發(fā)現(xiàn)整個互聯(lián)網(wǎng)行業(yè)的技術(shù)發(fā)展,最后都是殊途同歸。

如果你正處于一個創(chuàng)業(yè)公司,或者正在為成為另一個 BAT 拼搏,那么深入理解這種技術(shù)模式(或者叫技術(shù)結(jié)構(gòu)、技術(shù)架構(gòu)),對于自己和公司的發(fā)展都大有裨益。

互聯(lián)網(wǎng)的標準技術(shù)架構(gòu)如下圖所示,這張圖基本上涵蓋了互聯(lián)網(wǎng)技術(shù)公司的大部分技術(shù)點,不同的公司只是在具體的技術(shù)實現(xiàn)上稍有差異,但不會跳出這個框架的范疇。

 

互聯(lián)網(wǎng)架構(gòu)模板:“存儲層”技術(shù)

 

從本期開始,我將逐層介紹每個技術(shù)點的產(chǎn)生背景、應(yīng)用場景、關(guān)鍵技術(shù),有的技術(shù)點可能已經(jīng)在前面的架構(gòu)模式部分有所涉及,因此就不再詳細展開技術(shù)細節(jié)了,而是將關(guān)鍵技術(shù)點分門別類,進而形成一張架構(gòu)大圖,讓架構(gòu)師對一個公司的整體技術(shù)架構(gòu)有一個完整的全貌認知。

今天我們首先來聊聊互聯(lián)網(wǎng)架構(gòu)模板的“存儲層”技術(shù)。

SQL

SQL 即我們通常所說的關(guān)系數(shù)據(jù)。前幾年 NoSQL 火了一陣子,很多人都理解為 NoSQL 是完全拋棄關(guān)系數(shù)據(jù),全部采用非關(guān)系型數(shù)據(jù)。但經(jīng)過幾年的試驗后,大家發(fā)現(xiàn)關(guān)系數(shù)據(jù)不可能完全被拋棄,NoSQL 不是 No SQL,而是 Not Only SQL,即 NoSQL 是 SQL 的補充。

所以互聯(lián)網(wǎng)行業(yè)也必須依賴關(guān)系數(shù)據(jù),考慮到 Oracle 太貴,還需要專人維護,一般情況下互聯(lián)網(wǎng)行業(yè)都是用 MySQL、PostgreSQL 這類開源數(shù)據(jù)庫。這類數(shù)據(jù)庫的特點是開源免費,拿來就用;但缺點是性能相比商業(yè)數(shù)據(jù)庫要差一些。隨著互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展,性能要求越來越高,必然要面對一個問題:將數(shù)據(jù)拆分到多個數(shù)據(jù)庫實例才能滿足業(yè)務(wù)的性能需求(其實 Oracle 也一樣,只是時間早晚的問題)。

數(shù)據(jù)庫拆分滿足了性能的要求,但帶來了復(fù)雜度的問題:數(shù)據(jù)如何拆分、數(shù)據(jù)如何組合?這個復(fù)雜度的問題解決起來并不容易,如果每個業(yè)務(wù)都去實現(xiàn)一遍,重復(fù)造輪子將導(dǎo)致投入浪費、效率降低,業(yè)務(wù)開發(fā)想快都快不起來。

所以互聯(lián)網(wǎng)公司流行的做法是業(yè)務(wù)發(fā)展到一定階段后,就會將這部分功能獨立成中間件,例如百度的 DBProxy、淘寶的 TDDL。不過這部分的技術(shù)要求很高,將分庫分表做到自動化和平臺化,不是一件容易的事情,所以一般是規(guī)模很大的公司才會自己做。中小公司建議使用開源方案,例如 MySQL 官方推薦的 MySQL Router、360 開源的數(shù)據(jù)庫中間件 Atlas。

假如公司業(yè)務(wù)繼續(xù)發(fā)展,規(guī)模繼續(xù)擴大,SQL 服務(wù)器越來越多,如果每個業(yè)務(wù)都基于統(tǒng)一的數(shù)據(jù)庫中間件獨立部署自己的 SQL 集群,就會導(dǎo)致新的復(fù)雜度問題,具體表現(xiàn)在:

數(shù)據(jù)庫資源使用率不高,比較浪費。

各 SQL 集群分開維護,投入的維護成本越來越高。

因此,實力雄厚的大公司此時一般都會在 SQL 集群上構(gòu)建 SQL 存儲平臺,以對業(yè)務(wù)透明的形式提供資源分配、數(shù)據(jù)備份、遷移、容災(zāi)、讀寫分離、分庫分表等一系列服務(wù),例如淘寶的 UMP(Unified MySQL Platform)系統(tǒng)。

NoSQL

首先 NoSQL 在數(shù)據(jù)結(jié)構(gòu)上與傳統(tǒng)的 SQL 的不同,例如典型的 Memcache 的 key-value 結(jié)構(gòu)、Redis 的復(fù)雜數(shù)據(jù)結(jié)構(gòu)、MongoDB 的文檔數(shù)據(jù)結(jié)構(gòu);其次,NoSQL 無一例外地都會將性能作為自己的一大賣點。NoSQL 的這兩個特點很好地彌補了關(guān)系數(shù)據(jù)庫的不足,因此在互聯(lián)網(wǎng)行業(yè) NoSQL 的應(yīng)用基本上是基礎(chǔ)要求。

由于 NoSQL 方案一般自己本身就提供集群的功能,例如 Memcache 的一致性 Hash 集群、Redis 3.0 的集群,因此 NoSQL 在剛開始應(yīng)用時很方便,不像 SQL 分庫分表那么復(fù)雜。一般公司也不會在開始時就考慮將 NoSQL 包裝成存儲平臺,但如果公司發(fā)展很快,例如 Memcache 的節(jié)點有上千甚至幾千時,NoSQL 存儲平臺就很有意義了。首先是存儲平臺通過集中管理能夠大大提升運維效率;其次是存儲平臺可以大大提升資源利用效率,2000 臺機器,如果利用率能提升 10%,就可以減少 200 臺機器,一年幾十萬元就節(jié)省出來了。

所以,NoSQL 發(fā)展到一定規(guī)模后,通常都會在 NoSQL 集群的基礎(chǔ)之上再實現(xiàn)統(tǒng)一存儲平臺,統(tǒng)一存儲平臺主要實現(xiàn)這幾個功能:

資源動態(tài)按需動態(tài)分配:例如同一臺 Memcache 服務(wù)器,可以根據(jù)內(nèi)存利用率,分配給多個業(yè)務(wù)使用。

資源自動化管理:例如新業(yè)務(wù)只需要申請多少 Memcache 緩存空間就可以了,無需關(guān)注具體是哪些 Memcache 服務(wù)器在為自己提供服務(wù)。

故障自動化處理:例如某臺 Memcache 服務(wù)器掛掉后,有另外一臺備份 Memcache 服務(wù)器能立刻接管緩存請求,不會導(dǎo)致丟失很多緩存數(shù)據(jù)。

當然要發(fā)展到這個階段,一般也是大公司才會這么做,簡單來說就是如果只有幾十臺 NoSQL 服務(wù)器,做存儲平臺收益不大;但如果有幾千臺 NoSQL 服務(wù)器,NoSQL 存儲平臺就能夠產(chǎn)生很大的收益。

小文件存儲

除了關(guān)系型的業(yè)務(wù)數(shù)據(jù),互聯(lián)網(wǎng)行業(yè)還有很多用于展示的數(shù)據(jù)。例如,淘寶的商品圖片、商品描述;Facebook 的用戶圖片;新浪微博的一條微博內(nèi)容等。這些數(shù)據(jù)具有三個典型特征:一是數(shù)據(jù)小,一般在 1MB 以下;二是數(shù)量巨大,F(xiàn)acebook 在 2013 年每天上傳的照片就達到了 3.5 億張;三是訪問量巨大,F(xiàn)acebook 每天的訪問量超過 10 億。

由于互聯(lián)網(wǎng)行業(yè)基本上每個業(yè)務(wù)都會有大量的小數(shù)據(jù),如果每個業(yè)務(wù)都自己去考慮如何設(shè)計海量存儲和海量訪問,效率自然會低,重復(fù)造輪子也會投入浪費,所以自然而然就要將小文件存儲做成統(tǒng)一的和業(yè)務(wù)無關(guān)的平臺。

和 SQL 和 NoSQL 不同的是,小文件存儲不一定需要公司或者業(yè)務(wù)規(guī)模很大,基本上認為業(yè)務(wù)在起步階段就可以考慮做小文件統(tǒng)一存儲。得益于開源運動的發(fā)展和最近幾年大數(shù)據(jù)的火爆,在開源方案的基礎(chǔ)上封裝一個小文件存儲平臺并不是太難的事情。例如,HBase、Hadoop、Hypertable、FastDFS 等都可以作為小文件存儲的底層平臺,只需要將這些開源方案再包裝一下基本上就可以用了。

典型的小文件存儲有:淘寶的 TFS、京東 JFS、Facebook 的 Haystack。

下圖是淘寶 TFS 的架構(gòu):

 

互聯(lián)網(wǎng)架構(gòu)模板:“存儲層”技術(shù)

 

大文件存儲

互聯(lián)網(wǎng)行業(yè)的大文件主要分為兩類:一類是業(yè)務(wù)上的大數(shù)據(jù),例如 Youtube 的視頻、電影網(wǎng)站的電影;另一類是海量的日志數(shù)據(jù),例如各種訪問日志、操作日志、用戶軌跡日志等。和小文件的特點正好相反,大文件的數(shù)量沒有小文件那么多,但每個文件都很大,幾百 MB、幾個 GB 都是常見的,幾十 GB、幾 TB 也是有可能的,因此在存儲上和小文件有較大差別,不能直接將小文件存儲系統(tǒng)拿來存儲大文件。

說到大文件,特別要提到 Google 和 Yahoo,Google 的 3 篇大數(shù)據(jù)論文(Bigtable/Map- Reduce/GFS)開啟了一個大數(shù)據(jù)的時代,而 Yahoo 開源的 Hadoop 系列(HDFS、HBase 等),基本上壟斷了開源界的大數(shù)據(jù)處理。當然,江山代有才人出,長江后浪推前浪,Hadoop 后又有更多優(yōu)秀的開源方案被貢獻出來,現(xiàn)在隨便走到大街上拉住一個程序員,如果他不知道大數(shù)據(jù),那基本上可以確定是“火星程序員”。

對照 Google 的論文構(gòu)建一套完整的大數(shù)據(jù)處理方案的難度和成本實在太高,而且開源方案現(xiàn)在也很成熟了,所以大數(shù)據(jù)存儲和處理這塊反而是最簡單的,因為你沒有太多選擇,只能用這幾個流行的開源方案,例如,Hadoop、HBase、Storm、Hive 等。實力雄厚一些的大公司會基于這些開源方案,結(jié)合自己的業(yè)務(wù)特點,封裝成大數(shù)據(jù)平臺,例如淘寶的云梯系統(tǒng)、騰訊的 TDW 系統(tǒng)。

下面是 Hadoop 的生態(tài)圈:

 

互聯(lián)網(wǎng)架構(gòu)模板:“存儲層”技術(shù)

 

小結(jié)

今天我為你講了互聯(lián)網(wǎng)架構(gòu)模板中的存儲層技術(shù),可以看到當公司規(guī)模發(fā)展到一定階段后,基本上都是基于某個開源方案搭建統(tǒng)一的存儲平臺,希望對你有所幫助。

這就是今天的全部內(nèi)容,留一道思考題給你吧,既然存儲技術(shù)發(fā)展到最后都是存儲平臺,為何沒有出現(xiàn)存儲平臺的開源方案,但云計算卻都提供了存儲平臺方案?

歡迎你把答案寫到留言區(qū),和我一起討論。相信經(jīng)過深度思考的回答,也會讓你對知識的理解更加深刻。

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2024-05-13 11:43:26

開發(fā)層服務(wù)層ActiveMQ

2019-12-31 10:08:35

架構(gòu)模式軟件

2017-12-26 15:52:31

MQ互聯(lián)網(wǎng)耦合

2016-09-22 15:01:59

微服務(wù)互聯(lián)網(wǎng)架構(gòu)

2017-01-11 21:40:03

互聯(lián)網(wǎng)架構(gòu)高并發(fā)

2018-01-01 06:41:44

耦合互聯(lián)網(wǎng)架構(gòu)配置中心

2019-04-10 14:10:02

高并發(fā)分布式系統(tǒng)架構(gòu)

2022-06-09 08:01:43

秒殺系統(tǒng)互聯(lián)網(wǎng)架構(gòu)

2016-12-06 11:56:13

互聯(lián)網(wǎng)架構(gòu)高可用

2016-09-22 15:55:39

互聯(lián)網(wǎng)架構(gòu)容量設(shè)計

2019-03-18 07:08:53

高可用互聯(lián)網(wǎng)架構(gòu)分布式

2019-05-13 10:30:34

互聯(lián)網(wǎng)架構(gòu)容量

2018-11-07 06:35:50

互聯(lián)網(wǎng)服務(wù)化高可用架構(gòu)

2020-07-31 14:13:26

架構(gòu)互聯(lián)網(wǎng)

2018-01-02 17:28:50

麥思博

2023-12-05 10:33:15

工業(yè)互聯(lián)網(wǎng)互聯(lián)網(wǎng)平臺

2012-09-19 15:43:21

云時代

2017-10-27 14:52:31

互聯(lián)網(wǎng)高可用架構(gòu)高可用

2019-12-26 07:39:36

互聯(lián)網(wǎng)架構(gòu)ip

2021-06-11 11:36:41

互聯(lián)網(wǎng)架構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號