<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    GOOGLE系統(tǒng)架構(gòu)(ZZ)

    Posted on 2009-11-01 21:15 詩特林 閱讀(1239) 評論(1)  編輯  收藏 所屬分類: 系統(tǒng)架構(gòu)

    Google是可伸縮性之王。每個(gè)人都知道Google是因?yàn)樗麄儗Υ罅浚瑥?fù)雜信息的快速搜索,但是Google的技術(shù)并不只是在搜索領(lǐng)域閃閃發(fā) 光。他們構(gòu)建大型應(yīng)用的平臺方式能夠讓他們以驚人的競爭速度在網(wǎng)絡(luò)規(guī)模應(yīng)用上面大展拳腳。Google的目標(biāo)一直是構(gòu)建更高性能更高規(guī)模基礎(chǔ)設(shè)施來支持他 們的產(chǎn)品。他們怎么做到的呢?

    參考資料以及信息來源
    視頻:在Google上構(gòu)建大型系統(tǒng) (Video: Building Large Systems at Google )
    Google實(shí)驗(yàn)室:Google文件系統(tǒng) (Google Lab: The Google File System )
    Google實(shí)驗(yàn)室:MapReduce:在大規(guī)模集群上簡化數(shù)據(jù)處理 (Google Lab: MapReduce: Simplified Data Processing on Large Clusters )
    Google實(shí)驗(yàn)室:BigTable: (Google Lab : BigTable .)
    視頻:BigTable: 一個(gè)分布式的結(jié)構(gòu)化存儲系統(tǒng) (Video: BigTable: A Distributed Structured Storage System .)
    Google實(shí)驗(yàn)室:松散耦合的分布式系統(tǒng)的 Chubby Lock服務(wù) (Google Lab: The Chubby Lock Service for Loosely-Coupled Distributed Systems. )
    Google是如何工作的 作者 David Carr發(fā)表于Baseline雜志 (How Google Works by David Carr in Baseline Magazine.)
    Google實(shí)驗(yàn)室:翻譯數(shù)據(jù):使用Sawzall并行分析(Google Lab: Interpreting the Data: Parallel Analysis with Sawzall. )
    可伸縮性大會(huì)上Dare Obasonjo的筆記 (Dare Obasonjo’s Notes on the scalability conference. )

    平臺
    • Linux
    • 多種不同的語言: Python, Java, C++

    數(shù)據(jù)揭秘
    目前的情形:
    • 2006年估計(jì)有450,000個(gè)價(jià)格便宜的商用服務(wù)器
    • 2005年Google索引了80億的web頁面。到現(xiàn)在為止有多少,已經(jīng)無法統(tǒng)計(jì)出來了。
    • 目前Google有超過200GFS的集群。一個(gè)集群能有1000甚至5000個(gè)機(jī)器。成百上千的機(jī)器從運(yùn)行大到5peta字節(jié)存儲的GFS集群檢索數(shù)據(jù)。通過集群的總的讀寫吞吐量達(dá)到每秒400億字節(jié)。
    • 目前在Google有6000個(gè) MapReduce應(yīng)用,并且每個(gè)月有幾百個(gè)新的應(yīng)用正在出現(xiàn)。

    架構(gòu)的層次
    Google把他們的基礎(chǔ)設(shè)施架構(gòu)描述為三個(gè)層次棧:
    • 產(chǎn)品:檢索,廣告,電子郵件,地圖,視頻,聊天,博客
    • 分布式系統(tǒng)基礎(chǔ)設(shè)施:GFS, MapReduce, 以及BigTable。
    • 計(jì)算平臺:很多不同數(shù)據(jù)中心的很多機(jī)器
    • 確保公司員工容易低成本配置。
    • 看看每個(gè)應(yīng)用基線的價(jià)格性能數(shù)據(jù)。把更多的錢花在硬件上以期不丟失日志數(shù)據(jù),但是在其他類型的數(shù)據(jù)上花少一點(diǎn)。既然這樣處理,實(shí)際上他們就不會(huì)丟數(shù)據(jù)。

    使用GFS(Google文件系統(tǒng))的可靠存儲機(jī)制
    • 可靠的可伸縮存儲是任何應(yīng)用的一個(gè)核心需要。GFS就是他們的核心存儲平臺。
    • Google文件系統(tǒng)- 大的分布式日志結(jié)構(gòu)化文件系統(tǒng),里面有大量數(shù)據(jù)
    • 為什么不用其他的而非要構(gòu)建一個(gè)文件系統(tǒng)呢?因?yàn)樗麄冃枰刂扑械氖虑椋沁@個(gè)平臺把他們和其他任何一個(gè)區(qū)分開來。他們需要:
    - 通過數(shù)據(jù)中心的高可靠性
    - 對于幾千個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的可伸縮性
    - 大的讀寫帶寬需求
    - 支持十億字節(jié)大的數(shù)據(jù)塊
    - 高效的通過節(jié)點(diǎn)減少瓶頸的分布式操作

    • 系統(tǒng)有主服務(wù)器和分塊服務(wù)器(chunk servers)
    - 主服務(wù)器在各種數(shù)據(jù)文件上保存元數(shù)據(jù)。數(shù)據(jù)以64MB大的塊存儲在文件系統(tǒng)中。客戶機(jī)和主服務(wù)器對話來操作文件里的元數(shù)據(jù),定位包含了磁盤上他們需要的數(shù)據(jù)的分塊服務(wù)器。
    • 一個(gè)新的應(yīng)用可以使用一個(gè)已經(jīng)存在的GFS集群或者他們自己制作。去理解他們使用的通過數(shù)據(jù)中心的這個(gè)供應(yīng)過程將是非常有趣的。
    • 主鍵是足夠的基礎(chǔ)設(shè)施來確保人們對他們的應(yīng)用有多種選擇。可以調(diào)整GFS以適應(yīng)個(gè)人應(yīng)用需要。

    使用MapReduce對數(shù)據(jù)做一些事情
    • 既然你有了一個(gè)好的存儲系統(tǒng),你怎樣使用如此多的數(shù)據(jù)呢?假如說你有很多TB的數(shù)據(jù)存儲在1000臺機(jī)器上。數(shù)據(jù)庫不能擴(kuò)展或者有效地?cái)U(kuò)展到這樣的規(guī)模。這時(shí)就要用到MapReduce了。

    • MapReduce是一個(gè)編程模型和用來處理和產(chǎn)生大規(guī)模數(shù)據(jù)集。用戶指定一個(gè)映射函數(shù)處理一個(gè)鍵/值對來產(chǎn)生中間的鍵/值對集合,還指定一個(gè)縮小函數(shù)來合并所有的與同一中間鍵相關(guān)的中間值。

    許多現(xiàn)實(shí)世界的任務(wù)在這個(gè)模型里被表示出來。用這個(gè)函數(shù)風(fēng)格寫的程序自動(dòng)并行化并且在一大集群商務(wù)機(jī)器上執(zhí)行。運(yùn)行時(shí)系統(tǒng)關(guān)心分割輸入數(shù)據(jù)的細(xì)節(jié), 通過一系列的機(jī)器安排程序的執(zhí)行,處理機(jī)器事故,以及管理所需的機(jī)器內(nèi)部通信。這使得沒有任何并行和分布式系統(tǒng)經(jīng)驗(yàn)的程序員能夠容易地利用一個(gè)大的分布式 系統(tǒng)的資源。

    • 為什么使用MapReduce呢?
    - 在大量機(jī)器上分割任務(wù)的極佳方式
    - 處理機(jī)器故障
    - 在不同類型的應(yīng)用上工作,如搜索和廣告。幾乎每個(gè)應(yīng)用都有映射簡化類型之類的操作。你可以預(yù)計(jì)算有用的數(shù)據(jù),統(tǒng)計(jì)字?jǐn)?shù),分類幾TB的數(shù)據(jù),等等。
    - 計(jì)算可以自動(dòng)地更加靠近IO源。

    • MapReduce 系統(tǒng)有三個(gè)不同類型的服務(wù)器。
    - 主服務(wù)器分配用戶任務(wù)以映射和減少服務(wù)器。它也跟蹤任務(wù)的狀態(tài)。
    - 映射服務(wù)器接收用戶輸入,在它們上面實(shí)行映射操作。結(jié)果寫入中間文件。
    - 化簡服務(wù)器接收由映射服務(wù)器產(chǎn)生的中間文件并在它們上面實(shí)行化簡操作。
    • 例如,你想要統(tǒng)計(jì)所有網(wǎng)頁中字符的個(gè)數(shù)。你可以把存儲在GFS中的頁面放入MapReduce。這些都將在1000秒內(nèi)發(fā)生,包括機(jī)器同步和協(xié)調(diào),任務(wù)安排,事故處理和數(shù)據(jù)傳輸將會(huì)自動(dòng)完成。
    - 步驟如下:GFS -> Map -> Shuffle -> Reduction -> 把結(jié)果存回GFS
    - 在MapReduce 里,一個(gè)映射把一個(gè)視圖映射到另一個(gè),產(chǎn)生一個(gè)鍵值對,在我們的例子里是單詞和數(shù)量。
    - Shuffling 聚合鍵的類型
    - 化簡把所有的鍵值對加起來產(chǎn)生最后的結(jié)果。
    • Google索引管道有大概20個(gè)不同的映射化簡。一個(gè)管道把數(shù)據(jù)看做記錄的一個(gè)整體束和聚合鍵。第二個(gè)映射-化簡進(jìn)來把那個(gè)結(jié)果拿走做其他的一些事情。等等。
    • 程序可以很小。可以小到20到50行的代碼。
    • 一個(gè)問題是stragglers。Stragglers是一種比其他都要慢的計(jì)算。Stragglers會(huì)發(fā)生是因?yàn)槁腎O(比如一個(gè)糟糕的控制器)或者從一個(gè)臨時(shí)的CPU尖峰信號。解決辦法是運(yùn)行多個(gè)同樣的計(jì)算,當(dāng)一個(gè)完成時(shí)就銷毀所有其他的計(jì)算。
    • 在映射和化簡之間轉(zhuǎn)換的數(shù)據(jù)被壓縮。這樣做是因?yàn)榉?wù)器不受CPU約束,花時(shí)間在數(shù)據(jù)的壓縮和解壓縮上還是有意義的,可以節(jié)省花在帶寬和I/O上的時(shí)間。
    在BigTable中存儲結(jié)構(gòu)化數(shù)據(jù)
    • BigTable 是一個(gè)大型的容錯(cuò)和自我管理系統(tǒng),包括太(萬億)字節(jié)的內(nèi)存和皮字節(jié)的內(nèi)存。它每秒能夠處理幾百萬的讀寫。
    • BigTable是一個(gè)構(gòu)建在GFS之上的分布式散列機(jī)制。它不是一個(gè)關(guān)系數(shù)據(jù)庫。它不支持聯(lián)結(jié)或者SQL類型查詢。
    • 它提供查找機(jī)制,可以通過鍵來訪問結(jié)構(gòu)化的數(shù)據(jù)。GFS存儲不透明數(shù)據(jù)和許多應(yīng)用所需的結(jié)構(gòu)化數(shù)據(jù)。
    • 商業(yè)化數(shù)據(jù)不能伸縮到這個(gè)層次,它們不在1000個(gè)機(jī)器上工作。
    • 通過控制它們自己的低層次存儲系統(tǒng),Google得到更多的控制和有力的工具來改進(jìn)它們的系統(tǒng)。例如,如果它們想要使得分布

    數(shù)據(jù)操作更簡單的特征,它們可以在里面構(gòu)建。
    • 當(dāng)系統(tǒng)運(yùn)行的時(shí)候,機(jī)器可以增加和減少,而整個(gè)系統(tǒng)還會(huì)正常工作。
    • 每個(gè)數(shù)據(jù)條存儲在一個(gè)可以使用行鍵,列鍵或者時(shí)間郵票訪問的單元中。
    • 每行存儲在一個(gè)或者更多個(gè)tablet中。一個(gè)tablet是數(shù)據(jù)形式的64KB塊的序列叫做SSTable。
    • BigTable 有三個(gè)不同類型的服務(wù)器:
    - 主服務(wù)器分配tablet到tablet服務(wù)器中。它們跟蹤的位置,當(dāng)需要時(shí)還會(huì)重新分配任務(wù)。
    - Tablet 服務(wù)器處理tablet的讀寫請求。當(dāng)tablet超過規(guī)模限制(通常是100MB - 200MB)時(shí),它們將它分開。當(dāng)一個(gè)tablet服務(wù)器出故障時(shí),會(huì)有100個(gè)tablet服務(wù)器每個(gè)撿起一個(gè)新的tablet,所以系統(tǒng)就恢復(fù)了。
    • 一個(gè)位置組可以被用作與幾比特的數(shù)據(jù)相關(guān)的物理存儲,為了有一個(gè)更好的參考位置。
    • Tablets盡可能在RAM里被緩存。

    硬件
    • 當(dāng)你有很多個(gè)機(jī)器時(shí),你如何構(gòu)建它們以使花費(fèi)代價(jià)最小電能消耗最少呢?
    • 使用超便宜的商業(yè)硬件,拼命利用它們在上面構(gòu)建軟件。
    • 增加 1,000-fold 計(jì)算機(jī)電力,如果你使用容易出事故的基礎(chǔ)設(shè)施而不是構(gòu)建在高度可靠的部件之上的基礎(chǔ)設(shè)施時(shí),可以有33倍更低的花費(fèi)。你必須使用這一策略在不可靠之上構(gòu)建可靠。
    • Linux,內(nèi)部的架構(gòu)設(shè)計(jì),PC類主機(jī)板,低端存儲。
    • 性能基線中每瓦的價(jià)格沒有越來越好。存在著很多的電力和其他問題。
    • 使用混合收集和它們自己的數(shù)據(jù)中心。

    雜類
    • 很快找出改變而不是等著提問和回答。
    • 庫是構(gòu)建程序的主要方式。
    • 一些是以服務(wù)的形式提供的應(yīng)用,比如crawling。
    • 基礎(chǔ)設(shè)施處理應(yīng)用程序的版本,所以它們就能夠發(fā)布,不用擔(dān)心破壞事情。

    Google未來的方向
    • 支持地理位置分布的集群
    • 為所有的數(shù)據(jù)創(chuàng)建單一的全局名字空間。當(dāng)前數(shù)據(jù)由集群分離開的。
    • 更多更好的數(shù)據(jù)和計(jì)算的自動(dòng)化遷移。

    • 解決當(dāng)你用網(wǎng)絡(luò)分割耦合大范圍的復(fù)制時(shí)產(chǎn)生的一致性問題(例如,即使一個(gè)集群已經(jīng)因?yàn)榫S修或是其他一些臨時(shí)停電等原因而下線時(shí),還能繼續(xù)提供服務(wù))
    Goolge告訴我們的經(jīng)驗(yàn)
    • 基礎(chǔ)設(shè)施是一個(gè)很有競爭性的優(yōu)勢。它當(dāng)然是屬于Google的。它們能更快更便宜地提供和生產(chǎn)新的網(wǎng)絡(luò)服務(wù),這在一定程度上是無人能比的。許多公司采取了 完全不同的方式。許多公司把基礎(chǔ)設(shè)施看做一種花銷。每個(gè)組將使用完全不同的技術(shù),而且他們很少有計(jì)劃如何更經(jīng)濟(jì)地構(gòu)建系統(tǒng)。Google把他們自己看做一 個(gè)系統(tǒng)工程公司,以一個(gè)非常新的方式來看待構(gòu)建軟件。

    • 跨越多個(gè)數(shù)據(jù)中心仍是一個(gè)未解決的問題。大多數(shù)網(wǎng)站是一個(gè)至多是兩個(gè)數(shù)據(jù)中心。如何在大量數(shù)據(jù)中心上充分分配網(wǎng)站,我們說,非常復(fù)雜。

    • 看一看Hadoop (產(chǎn)品)如果你沒有時(shí)間來從頭開始構(gòu)建所有這個(gè)基礎(chǔ)設(shè)施的話。Hadoop 是一個(gè)這里講的一些主意的開源實(shí)現(xiàn)。
    • 一個(gè)平臺方式被忽略的優(yōu)點(diǎn)是初級開發(fā)人員可以在平臺上很快自信地構(gòu)建健壯的應(yīng)用。如果每個(gè)項(xiàng)目需要?jiǎng)?chuàng)建同樣的分布式基礎(chǔ)設(shè)施輪,你將會(huì)陷入困境,因?yàn)橹廊绾芜@樣做的人員相對稀少。

    • 協(xié)同工作并不總是廢話。通過使系統(tǒng)中所有部件一起工作,一個(gè)改進(jìn)會(huì)有助于所有的改進(jìn)。改善文件系統(tǒng),每個(gè)人都會(huì)立刻明顯受益。如果每個(gè)項(xiàng)目使用一個(gè)不同的文件系統(tǒng),那么就沒有整個(gè)展的持續(xù)的改進(jìn)。

    • 構(gòu)建不需要降低系統(tǒng)性能的自我管理系統(tǒng)。這可以讓你更容易地平衡各服務(wù)器的資源,動(dòng)態(tài)增加更多空間,允許機(jī)器下線,以及更從容地處理升級。

    • 創(chuàng)建一個(gè)進(jìn)化式基礎(chǔ)設(shè)施。花時(shí)間在并行處理上會(huì)有回報(bào)的。
    • 不要忽視了學(xué)院。學(xué)術(shù)界有很多好的創(chuàng)意并沒有轉(zhuǎn)入生產(chǎn)環(huán)境里。Google所做的大部分先于藝術(shù),不只是先于大規(guī)模配置。
    • 考慮壓縮。當(dāng)你有大量CPU可以揮霍和IO限制時(shí),壓縮是一個(gè)很好的選擇。


    評論

    # re: GOOGLE系統(tǒng)架構(gòu)(ZZ)  回復(fù)  更多評論   

    2009-11-03 10:11 by 咖啡妝
    這應(yīng)該是一份內(nèi)部文檔,有沒有g(shù)oogle的商業(yè)模式架構(gòu),分享一下?
    主站蜘蛛池模板: 国产人妖ts在线观看免费视频| 在线观看人成视频免费无遮挡| 30岁的女人韩剧免费观看| 亚洲精品无码专区久久久| 久久久久久av无码免费看大片| 日韩免费a级在线观看| 亚洲爆乳AAA无码专区| 精品久久久久久久免费加勒比| 亚洲国产精品无码久久98| 日韩免费视频在线观看| 老司机午夜在线视频免费| 亚洲av手机在线观看| 日本高清免费不卡在线| 日韩欧美亚洲中文乱码| 亚洲第一页日韩专区| 91在线视频免费观看| 亚洲AV成人一区二区三区AV| 亚洲人成色4444在线观看| 日本特黄a级高清免费大片| 国产亚洲美女精品久久| 国产性爱在线观看亚洲黄色一级片| 你是我的城池营垒免费观看完整版| 国产亚洲一区二区精品| 成人免费视频69| 亚洲综合久久精品无码色欲| 国产精品免费看香蕉| 香蕉视频在线免费看| 亚洲黄色在线观看网站| 好吊妞视频免费视频| 深夜福利在线视频免费| 亚洲AV无码第一区二区三区| 日韩国产免费一区二区三区| 亚洲av无码av在线播放| 在线播放亚洲第一字幕| 国产香蕉免费精品视频| 黄页网址大全免费观看12网站| 亚洲精品高清无码视频| 91免费精品国自产拍在线不卡| 色爽黄1000部免费软件下载| 亚洲综合精品香蕉久久网97| 日本媚薬痉挛在线观看免费|