新浪科技:您說的工程師是全球部署的是嗎?各個不同的地方的改動,都會影響產品的形態是嗎?
郄小虎:是。我們是在同一個系統上進行開發,可以開發出針對每個國家地區的用戶需要的特殊功能,針對這個功能,可以只對這個國家用戶開放。在不適用的國家,會把這個功能關掉是可以選擇的。
Google廣告核心系統:海量存儲、機器學習、實時匹配
新浪科技:剛才tiger給我們講了工程師在做Google廣告系統的時候,會面臨的一些問題,我們想了解工程師在技術上面,會面臨什么樣,除了之前說的資金壓力,他們在技術上會面臨什么樣的問題呢?
郄小虎:廣告系統是非常大型的分布式系統,對完成每一次用戶請求這個過程并不復雜,我們想象需要一個數據庫存儲所有廣告信息,需要一個截面給廣告商使用,他們通過頁面他們購買的關鍵字,對于每一個關鍵字的售價和廣告信息等。數字信息會被傳到全球所有瀏覽器上去,用戶在搜索時,會提供給相應匹配的廣告信息展示給用戶,會被回傳下來,用戶月底會收到帳單。
對Google最大的挑戰是,我們如何相應海量的廣告商數據、用戶數據,每天超過十億的客戶訪問量。每一次的用戶請求,要進行非常復雜的競拍過程,這里需要牽涉到上千臺機器的協同工作。
相比其它部來說,搜索來講,廣告系統對搜索同步性非常高。如果搜索一個網站,網站會進行更新如果我經過一段延遲看到廣告最新的內容,大家都是可以接受的。對于廣告平臺上的應用來講,廣告商他們經常會把一個新的廣告上線,或把已有的廣告下線他們會買新的關鍵字和進行調整,這些改動需要在新的時間內生效。
新浪科技:您能給我們總結出什么樣的機制,在支撐Google的正常運轉嗎?
郄小虎:這個系統簡單分成三大模塊,首先要海量存儲系統,這個系統需要存儲所有用戶廣告商的廣告數據,包括關鍵字、出價、預算、廣告創意。同時它要記錄所有的用戶行為,包括每一次廣告展示,每一次廣告的點擊、轉換等等。
對于這個數據庫來講,它需要處理大量的海量數據,我們的系統中現在有超過上百萬的廣告客戶,如果你假設每一個廣告客戶購買一千個關鍵字數據量是相當大的。
經常我們的系統需要完成一些我們的分析工作,比如說我們想知道最多的關鍵字是哪一個,或者說這段時間內用戶搜索的關鍵字是哪些,這些請求是傳統數據庫不能完成的,是由我們工程師開發的超大容量的數據庫進行支持。
第二個模塊是機器學習系統。這個系統對我們記錄下來的所有事件分類、分析、處理。比如我們對廣告和一個關鍵字的相關性進行處理,我們會對一個頁面上面的概念進行抽取,我們會對用戶的點擊,以及轉換機器學習。機器學習系統會建立非常大數學模型,這是支持我們廣告質量的分的核心系統。
最后一個是實時匹配系統,這個系統完成了我們競拍過程,每一個客戶請求到來之后,我們會從機器系統中找到可以匹配的廣告,從當中提取的模型對請求進行預算,對每個廣告進行評分,最終完成競拍的過程,把排名前面的廣告展示在前面。
廉價硬件支撐起海量存儲系統
新浪科技:Google有多少機器可以用來作為存儲?
郄小虎:這個屬于商業機密,可以告訴你超過上萬臺。
新浪科技:一開始Google還窮的時候不會有上萬臺機器,一開始怎么解決這個問題的?
郄小虎:這個是很有趣的問題,Google一開始走的路線是以大量廉價硬件和高質量軟件結合解決這個問題。
新浪科技:廉價硬件。
郄小虎:剛剛提到數據庫的問題,可以從市場上買最高端的服務器和數據庫,但這些數據庫沒有辦法處理Google的訪問量。我們采用的辦法是用大量的廉價的機器,構成大規模的機群,這些機群用的硬件,都是你可以在市場上找到最廉價的硬件。
在早期,我記得當時Google,曾經用卡車去買來了大量廢棄的內存條,我們高質量的內存條可以保證,儲存數據和讀出來的數據是一致的,這些低水平的內存條是不能保證這點。你寫進去的是1,出來的可能是0。像這樣低質量的內存條,一般人家不會要的,但Google會要,我們可以檢測到,從這樣的錯誤中如何會恢復。
新浪科技:大家比較關心的是,一個錯的信息我們為什么要?難道把錯的信息提供給用戶嗎?
郄小虎:當我們有一百臺機器之后,如果有一臺機器跟其它九十九臺不一致,不能避免每一臺都給出正確的答案,大部分給出同一個答案的應該是正確的。
新浪科技:多個機器一塊來算。
郄小虎:對。很多時候是多臺機器對同一個請求進行計算,進行投票的機制。在早期沒有足夠的資金購買高端硬件的情況下,我們工程師想到非常聰明的解決方法。
新浪科技:現在不會再做這種?
郄小虎:有一些理念直到今天被應用。我們一直相信,大規模的機群通過協同工作,可以達到高端機器不能達到的行動。
新浪科技:剛才講到機器學習系統,機器是通過什么樣的原理學習的,通過我們自己編的軟件,是有歸納還是什么過程,可以做到機器的學習呢?
郄小虎:這個是數學的建模過程,簡單的講它是根據歷史來預測將來。如果說,我們看到在過去大部分用戶的廣告請求中,我們能夠發現一些模式,那么我們會把這種模式,用來對未來進行預測。
支付原則:接納山羊作為廣告費
新浪科技:我們今天實際上在最后,也想問tiger一個問題,我們看到Google今天新的CEO上任之后,有很多改變,我們想知道在最開始的時候,Google的創始人包括在現在為止,對這個系統怎么看,他們當中有好玩的小故事沒有?
郄小虎:我們兩位創始人對系統要求相當高,對每一個產品來講都要求我們能打造出非常優秀的廣告平臺。在一開始在我們廣告平臺沒有完全搭建之前,他們已經有了非常長遠的宏偉規劃,其中有一個有趣的小故事。我們在廣告平臺建立時需要先設計一個系統,使廣告商支付他們產生的費用。
在這個系統設計開始,Google創始人提出,在電子商務不發達的國家,我們必須支持以當地接受的形式進行支付的過程。比如說你在中亞的某個地區,大部分的交易是以物異物的交易,你必須允許廣告商用他養的山羊來支付廣告費用。
新浪科技:現在沒有人給Google交羊是吧?
郄小虎:我們希望將來有一天是會實現的。
新浪科技:今天我們和tiger回憶了Google最賺錢的體系和發展,他有哪些失敗怎么走向成功,他有很多經驗,希望將來Google有更多的故事跟各位分享,我們今天的活動就到這里,謝謝tiger,謝謝大家!