久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Google架構(gòu)學(xué)習(xí)

 cppmonkey 2008-09-19
 Google是伸縮性的王者。Google一直的目標(biāo)就是構(gòu)建高性能高伸縮性的基礎(chǔ)組織來(lái)支持它們的產(chǎn)品,。
  
  平臺(tái)
  Linux
  大量語(yǔ)言:Python,Java,,C++
  
  狀態(tài)
  在2006年大約有450,000臺(tái)廉價(jià)服務(wù)器
  在2005年Google索引了80億Web頁(yè)面,,現(xiàn)在沒(méi)有人知道數(shù)目
  目前在Google有超過(guò)200個(gè)GFS集群。一個(gè)集群可以有1000或者甚至5000臺(tái)機(jī)器,。成千上萬(wàn)的機(jī)器從運(yùn)行著5000000000000000字節(jié)存儲(chǔ)的GFS集群獲取數(shù)據(jù),,集群總的讀寫(xiě)吞吐量可以達(dá)到每秒40兆字節(jié)
  目前在Google有6000個(gè)MapReduce程序,而且每個(gè)月都寫(xiě)成百個(gè)新程序
  BigTable伸縮存儲(chǔ)幾十億的URL,,幾百千千兆的衛(wèi)星圖片和幾億用戶的參數(shù)選擇
  
  堆棧
  Google形象化它們的基礎(chǔ)組織為三層架構(gòu):
  1,,產(chǎn)品:搜索,廣告,,email,,地圖,視頻,,聊天,,博客
  2,,分布式系統(tǒng)基礎(chǔ)組織:GFS,MapReduce和BigTable
  3,,計(jì)算平臺(tái):一群不同的數(shù)據(jù)中心里的機(jī)器
  4,,確保公司里的人們部署起來(lái)開(kāi)銷(xiāo)很小
  5,花費(fèi)更多的錢(qián)在避免丟失日志數(shù)據(jù)的硬件上,,其他類(lèi)型的數(shù)據(jù)則花費(fèi)較少
  
  可信賴的存儲(chǔ)機(jī)制GFS(Google File System)
  1,,可信賴的伸縮性存儲(chǔ)是任何程序的核心需求。GFS就是Google的核心存儲(chǔ)平臺(tái)
  2,,Google File System - 大型分布式結(jié)構(gòu)化日志文件系統(tǒng),,Google在里面扔了大量的數(shù)據(jù)
  3,為什么構(gòu)建GFS而不是利用已有的東西,?因?yàn)榭梢宰约嚎刂埔磺胁⑶疫@個(gè)平臺(tái)與別的不一樣,,Google需要:
  -跨數(shù)據(jù)中心的高可靠性
  -成千上萬(wàn)的網(wǎng)絡(luò)節(jié)點(diǎn)的伸縮性
  -大讀寫(xiě)帶寬的需求
  -支持大塊的數(shù)據(jù),可能為上千兆字節(jié)
  -高效的跨節(jié)點(diǎn)操作分發(fā)來(lái)減少瓶頸
  4,,系統(tǒng)有Master和Chunk服務(wù)器
  -Master服務(wù)器在不同的數(shù)據(jù)文件里保持元數(shù)據(jù),。數(shù)據(jù)以64MB為單位存儲(chǔ)在文件系統(tǒng)中??蛻舳伺cMaster服務(wù)器交流來(lái)在文件上做元數(shù)據(jù)操作并且找到包含用戶需要數(shù)據(jù)的那些Chunk服務(wù)器
  -Chunk服務(wù)器在硬盤(pán)上存儲(chǔ)實(shí)際數(shù)據(jù),。每個(gè)Chunk服務(wù)器跨越3個(gè)不同的Chunk服務(wù)器備份以創(chuàng)建冗余來(lái)避免服務(wù)器崩潰。一旦被Master服務(wù)器指明,,客戶端程序就會(huì)直接從Chunk服務(wù)器讀取文件
  6,,一個(gè)上線的新程序可以使用已有的GFS集群或者可以制作自己的GFS集群
  7,關(guān)鍵點(diǎn)在于有足夠的基礎(chǔ)組織來(lái)讓人們對(duì)自己的程序有所選擇,,GFS可以調(diào)整來(lái)適應(yīng)個(gè)別程序的需求
  
  使用MapReduce來(lái)處理數(shù)據(jù)
  1,,現(xiàn)在你已經(jīng)有了一個(gè)很好的存儲(chǔ)系統(tǒng),你該怎樣處理如此多的數(shù)據(jù)呢,?比如你有許多TB的數(shù)據(jù)存儲(chǔ)在1000臺(tái)機(jī)器上,。數(shù)據(jù)庫(kù)不能伸縮或者伸縮到這種級(jí)別花費(fèi)極大,這就是MapReduce出現(xiàn)的原因
  2,,MapReduce是一個(gè)處理和生成大量數(shù)據(jù)集的編程模型和相關(guān)實(shí)現(xiàn),。用戶指定一個(gè)map方法來(lái)處理一個(gè)鍵/值對(duì)來(lái)生成一個(gè)中間的鍵/值對(duì),還有一個(gè)reduce方法來(lái)合并所有關(guān)聯(lián)到同樣的中間鍵的中間值,。許多真實(shí)世界的任務(wù)都可以使用這種模型來(lái)表現(xiàn),。以這種風(fēng)格來(lái)寫(xiě)的程序會(huì)自動(dòng)并行的在一個(gè)大量機(jī)器的集群里運(yùn)行。運(yùn)行時(shí)系統(tǒng)照顧輸入數(shù)據(jù)劃分,、程序在機(jī)器集之間執(zhí)行的調(diào)度,、機(jī)器失敗處理和必需的內(nèi)部機(jī)器交流等細(xì)節(jié)。這允許程序員沒(méi)有多少并行和分布式系統(tǒng)的經(jīng)驗(yàn)就可以很容易使用一個(gè)大型分布式系統(tǒng)資源
  3,為什么使用MapReduce,?
  -跨越大量機(jī)器分割任務(wù)的好方式
  -處理機(jī)器失敗
  -可以與不同類(lèi)型的程序工作,,例如搜索和廣告。幾乎任何程序都有map和reduce類(lèi)型的操作,。你可以預(yù)先計(jì)算有用的數(shù)據(jù),、查詢字?jǐn)?shù)統(tǒng)計(jì)、對(duì)TB的數(shù)據(jù)排序等等
  4,,MapReduce系統(tǒng)有三種不同類(lèi)型的服務(wù)器
  -Master服務(wù)器分配用戶任務(wù)到Map和Reduce服務(wù)器,。它也跟蹤任務(wù)的狀態(tài)
  -Map服務(wù)器接收用戶輸入并在其基礎(chǔ)上處理map操作。結(jié)果寫(xiě)入中間文件
  -Reduce服務(wù)器接收Map服務(wù)器產(chǎn)生的中間文件并在其基礎(chǔ)上處理reduce操作
  5,,例如,,你想在所有Web頁(yè)面里的字?jǐn)?shù)。你將存儲(chǔ)在GFS里的所有頁(yè)面拋入MapReduce,。這將在成千上萬(wàn)臺(tái)機(jī)器上同時(shí)進(jìn)行并且所有的調(diào)整,、工作調(diào)度、失敗處理和數(shù)據(jù)傳輸將自動(dòng)完成
  -步驟類(lèi)似于:GFS -> Map -> Shuffle -> Reduction -> Store Results back into GFS
  -在MapReduce里一個(gè)map操作將一些數(shù)據(jù)映射到另一個(gè)中,,產(chǎn)生一個(gè)鍵值對(duì),,在我們的例子里就是字和字?jǐn)?shù)
  -Shuffling操作聚集鍵類(lèi)型
  -Reduction操作計(jì)算所有鍵值對(duì)的綜合并產(chǎn)生最終的結(jié)果
  6,Google索引操作管道有大約20個(gè)不同的map和reduction,。
  7,,程序可以非常小,如20到50行代碼
  8,,一個(gè)問(wèn)題是掉隊(duì)者,。掉隊(duì)者是一個(gè)比其他程序慢的計(jì)算,它阻塞了其他程序,。掉隊(duì)者可能因?yàn)榫徛腎O或者臨時(shí)的CPU不能使用而發(fā)生,。解決方案是運(yùn)行多個(gè)同樣的計(jì)算并且當(dāng)一個(gè)完成后殺死所有其他的
  9,數(shù)據(jù)在Map和Reduce服務(wù)器之間傳輸時(shí)被壓縮了,。這可以節(jié)省帶寬和I/O,。
  
  在BigTable里存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)
  1,BigTable是一個(gè)大伸縮性,、錯(cuò)誤容忍、自管理的系統(tǒng),,它包含千千兆的內(nèi)存和1000000000000000的存儲(chǔ),。它可以每秒鐘處理百萬(wàn)的讀寫(xiě)
  2,BigTable是一個(gè)構(gòu)建于GFS之上的分布式哈希機(jī)制,。它不是關(guān)系型數(shù)據(jù)庫(kù),。它不支持join或者SQL類(lèi)型查詢
  3,它提供查詢機(jī)制來(lái)通過(guò)鍵訪問(wèn)結(jié)構(gòu)化數(shù)據(jù)。GFS存儲(chǔ)存儲(chǔ)不透明的數(shù)據(jù)而許多程序需求有結(jié)構(gòu)化數(shù)據(jù)
  4,,商業(yè)數(shù)據(jù)庫(kù)不能達(dá)到這種級(jí)別的伸縮性并且不能在成千上萬(wàn)臺(tái)機(jī)器上工作
  5,,通過(guò)控制它們自己的低級(jí)存儲(chǔ)系統(tǒng)Google得到更多的控制權(quán)來(lái)改進(jìn)它們的系統(tǒng)。例如,,如果它們想讓跨數(shù)據(jù)中心的操作更簡(jiǎn)單這個(gè)特性,,它們可以內(nèi)建它
  6,系統(tǒng)運(yùn)行時(shí)機(jī)器可以自由的增刪而整個(gè)系統(tǒng)保持工作
  7,,每個(gè)數(shù)據(jù)條目存儲(chǔ)在一個(gè)格子里,,它可以通過(guò)一個(gè)行key和列key或者時(shí)間戳來(lái)訪問(wèn)
  8,每一行存儲(chǔ)在一個(gè)或多個(gè)tablet中,。一個(gè)tablet是一個(gè)64KB塊的數(shù)據(jù)序列并且格式為SSTable
  9,,BigTable有三種類(lèi)型的服務(wù)器:
  -Master服務(wù)器分配tablet服務(wù)器,它跟蹤tablet在哪里并且如果需要?jiǎng)t重新分配任務(wù)
  -Tablet服務(wù)器為tablet處理讀寫(xiě)請(qǐng)求,。當(dāng)tablet超過(guò)大小限制(通常是100MB-200MB)時(shí)它們拆開(kāi)tablet,。當(dāng)一個(gè)Tablet服務(wù)器失敗時(shí),則100個(gè)Tablet服務(wù)器各自挑選一個(gè)新的tablet然后系統(tǒng)恢復(fù),。
  -Lock服務(wù)器形成一個(gè)分布式鎖服務(wù),。像打開(kāi)一個(gè)tablet來(lái)寫(xiě)、Master調(diào)整和訪問(wèn)控制檢查等都需要互斥
  10,,一個(gè)locality組可以用來(lái)在物理上將相關(guān)的數(shù)據(jù)存儲(chǔ)在一起來(lái)得到更好的locality選擇
  11,,tablet盡可能的緩存在RAM里
  
  硬件
  1,當(dāng)你有很多機(jī)器時(shí)你怎樣組織它們來(lái)使得使用和花費(fèi)有效,?
  2,,使用非常廉價(jià)的硬件
  3,A 1,000-fold computer power increase can be had for a 33 times lower cost if you you use a failure-prone infrastructure rather than an infrastructure built on highly reliable components. You must build reliability on top of unreliability for this strategy to work.
  4,,Linux,,in-house rack design,PC主板,,低端存儲(chǔ)
  5,,Price per wattage on performance basis isn't getting better. Have huge power and cooling issues
  6,使用一些collocation和Google自己的數(shù)據(jù)中心
  
  其他
  1,,迅速更改而不是等待QA
  2,,庫(kù)是構(gòu)建程序的卓越方式
  3,一些程序作為服務(wù)提供
  4,,一個(gè)基礎(chǔ)組織處理程序的版本,,這樣它們可以發(fā)布而不用害怕會(huì)破壞什么東西
  
  Google將來(lái)的方向
  1,支持地理位置分布的集群
  2,,為所有數(shù)據(jù)創(chuàng)建一個(gè)單獨(dú)的全局名字空間,。當(dāng)前的數(shù)據(jù)由集群分離
  3,更多和更好的自動(dòng)化數(shù)據(jù)遷移和計(jì)算
  4,解決當(dāng)使用網(wǎng)絡(luò)劃分來(lái)做廣闊區(qū)域的備份時(shí)的一致性問(wèn)題(例如保持服務(wù)即使一個(gè)集群離線維護(hù)或由于一些損耗問(wèn)題)
  
  學(xué)到的東西
  1,,基礎(chǔ)組織是有競(jìng)爭(zhēng)性的優(yōu)勢(shì),。特別是對(duì)Google而言。Google可以很快很廉價(jià)的推出新服務(wù),,并且伸縮性其他人很難達(dá)到,。許多公司采取完全不同的方式。許多公司認(rèn)為基礎(chǔ)組織開(kāi)銷(xiāo)太大,。Google認(rèn)為自己是一個(gè)系統(tǒng)工程公司,,這是一個(gè)新的看待軟件構(gòu)建的方式
  2,跨越多個(gè)數(shù)據(jù)中心仍然是一個(gè)未解決的問(wèn)題,。大部分網(wǎng)站都是一個(gè)或者最多兩個(gè)數(shù)據(jù)中心,。我們不得不承認(rèn)怎樣在一些數(shù)據(jù)中心之間完整的分布網(wǎng)站是很需要技巧的
  3,如果你自己沒(méi)有時(shí)間從零開(kāi)始重新構(gòu)建所有這些基礎(chǔ)組織你可以看看Hadoop,。Hadoop是這里很多同樣的主意的一個(gè)開(kāi)源實(shí)現(xiàn)
  4,,平臺(tái)的一個(gè)優(yōu)點(diǎn)是初級(jí)開(kāi)發(fā)人員可以在平臺(tái)的基礎(chǔ)上快速并且放心的創(chuàng)建健全的程序。如果每個(gè)項(xiàng)目都需要發(fā)明同樣的分布式基礎(chǔ)組織的輪子,,那么你將陷入困境因?yàn)橹涝鯓油瓿蛇@項(xiàng)工作的人相對(duì)較少
  5,,協(xié)同工作不一直是擲骰子。通過(guò)讓系統(tǒng)中的所有部分一起工作則一個(gè)部分的改進(jìn)將幫助所有的部分,。改進(jìn)文件系統(tǒng)則每個(gè)人從中受益而且是透明的,。如果每個(gè)項(xiàng)目使用不同的文件系統(tǒng)則在整個(gè)堆棧中享受不到持續(xù)增加的改進(jìn)
  6,構(gòu)建自管理系統(tǒng)讓你沒(méi)必要讓系統(tǒng)關(guān)機(jī),。這允許你更容易在服務(wù)器之間平衡資源,、動(dòng)態(tài)添加更大的容量、讓機(jī)器離線和優(yōu)雅的處理升級(jí)
  7,,創(chuàng)建可進(jìn)化的基礎(chǔ)組織,,并行的執(zhí)行消耗時(shí)間的操作并采取較好的方案
  8,不要忽略學(xué)院,。學(xué)院有許多沒(méi)有轉(zhuǎn)變?yōu)楫a(chǎn)品的好主意,。Most of what Google has done has prior art, just not prior large scale deployment.
  9,考慮壓縮,。當(dāng)你有許多CPU而IO有限時(shí)壓縮是一個(gè)好的選擇,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多