1. 程式人生 > >Google的免費午餐

Google的免費午餐

年時孟嚴寫過一篇很有意思的, 其中提到了C++大師的文章,因為CPU主頻的進一步發展受到制約,我們已經不能像從前幾個時代那樣期待軟體效能可以隨著CPU的效能水漲船高,從而,我們將不得不基於有限的CPU主頻來應對日趨複雜的應用,唯一解決之道就是改變我們的程式設計模型,面向多核多CPU甚至多機的硬體架構來實現並行運算,這個過程可以稱為Concurrent Programming.

但是包括分散式運算在內的Concurrent Programming, 並不容易實現。我們在開發CIC內部的分散式文字儲存和索引引擎時,對此也深有體會。其中對程式設計思維最大的衝擊是:單機的軟體開發,大部分時間可以很放心的假設所有的硬體都是正常工作的,譬如你的CPU
不會突然掛掉,硬碟不會有壞道,記憶體不是購自奸商等等;但是放在一個分散式的環境中,這一切假設都不成立了,不正常才是正常。藉助一個簡單的概率公式來演示,如果一臺機器的可靠性是99,那麼包含100臺這樣機器的分散式系統,其中有那麼幾臺出狀況的概率 就飆升到了63.4%(1-99%^100),更不要提還有網路裝置可能造成的故障。這樣惡劣的環境裡,你要考慮計算的同步還有事務性,資源的排程,資料的安全性和冗餘,系統整體的容錯...... 如果未來每一個程式設計師寫任何程式都要考慮這些情景,那麼各位CSDN版上兄弟姐妹就要提早教育自己的孩子,珍惜生命,遠離程式設計。好在孟嚴在文中給出免費午餐延續的另一可能,即Google
"叢集,分散式檔案系統 - GFS,分散式計算環境,分散式結構化儲存等等。 只是這些優秀的技術,一直都是Google公司內部的盛宴,外人只有眼饞的份兒,好在還有開源的Hadoop 可以一定程度彌補大家的缺憾。不過對於很多公司來說,即便是配置Hadoop,也不是易事一件,此外還要考慮購買機器,網路頻寬等等。

Google
新近推出的App Engine, 往免費的方向更近了一步(借用開源軟體的術語,這裡的free,是free beerfree,而非free speechfree)App EngineBlog 上對其特性有如下描述