基本設計目標
Google使用最多的服務就是它的搜索引擎,以此為例,有資料表明,用戶的平均每—次前臺搜索會導致Google的后臺發(fā)生1011次的處理。用戶將一個關鍵字通過Google的輸入框傳到Google的后臺,系統(tǒng)再將具體的查詢任務分配到很多子系統(tǒng)中,這些子系!統(tǒng)有些是用來處理涉及關鍵字的廣告,有些是用來處理圖像、視頻等搜索的,最后所有這 些子系統(tǒng)的搜索結果被匯總在一起返回給用戶。在我們看來很簡單的一次搜索實際上涉及了眾多Google后臺子系統(tǒng),這些子系統(tǒng)的運行狀態(tài)都需要進行監(jiān)控,而且隨著時間的推 移Google的服務越來越多,新的子系統(tǒng)也在不斷被加入,因此在設計時需要考慮到的第一個問題就是設計出的監(jiān)控系統(tǒng)應當能夠對盡可能多的Google服務進行監(jiān)控,即廣泛可部署性(Ubiquitous Deployment)。另一方面,Google的服務是全天候的,如果不能對Google的后臺同樣進行全天候的監(jiān)控很可能會錯過某些無法再現(xiàn)的關鍵性故障,因此需要進行不間斷的監(jiān)控。這兩個基本要求導致了如下三個基本設計目標。
(1)低開銷:這個是廣泛可部署性的必然要求。監(jiān)控系統(tǒng)的開銷越低,對于原系統(tǒng)的影響就越小,系統(tǒng)的開發(fā)人員也就越愿意接受這個監(jiān)控系統(tǒng)。
(2)對應用層透明:監(jiān)控系統(tǒng)對程序員應當是不可見的。如果監(jiān)控系統(tǒng)的使用需要程序開發(fā)人員對其底層的一些細節(jié)進行調整才能正常工作的話,這個監(jiān)控系統(tǒng)肯定不是一個完善的監(jiān)控系統(tǒng)。
(3)可擴展性:Google的服務增長速度是驚人的,設計出的系統(tǒng)至少在未來幾年里要能夠滿足Google服務和集群的需求。