曉查 栗子 方馭洋 發自 凹非寺

  量子位 報道 | 公衆號 QbitAI

  一位曾經的谷歌工程師,花費兩年時間,辛苦整理了一份清單。

  這個名爲“xg2xg”的清單,原本是這位前谷歌工程師(ex-Googler),爲所有離職的谷歌工程師寫的一份“廠外”生存指南。

  但實際上,這個大全實打實地也成爲了一份最佳開發工具大全

  所有的程序員,都能受益於此。

  美國網友對這個大全給予了很高的評價:這份清單中列出的開源軟件,不僅解決了硅谷大廠前員工的難處,也能爲其他所有碼農解除困惑。

  在這套大全的指導下,任何一個工程師,都能獲得類似在谷歌內部寫代碼的體驗。xg2xg上線僅僅一天就登上趨勢榜,收穫2500+星!

  清單其中大部分替代軟件是Google開源的項目,或者是受谷歌論文的啓發,由開源軟件基金會自己做的第三方實現。即使你從來沒進過Google工作,也在享受着Google工程師們帶來的福利。不禁讓人感嘆“谷歌拯救世界”。

  下面就讓我們一起來看看這份清單吧。

  開發工具一覽

  這份清單總共有兩部分,前半部分介紹的是碼農常用的開發工具,包括核心技術、基礎設施、服務、開發運維等;後半部分則面向非技術人員。

  核心技術工具

  大數據處理工具

  Google內部工具:MapReduce;

  替代品:Apache Hadoop、Spark

  想要在上千臺機器組成的大集羣上、並行處理上TB級別的海量數據集,就要用到這類大規模數據處理工具了。

  MapReduce,就是這類工具的先驅。Jeff Dean等人2004年提出了這個分佈式計算架構,最早在Google內部用來處理大規模數據的並行計算。Jeff Dean還親自爲它撰寫過使用指南。

  而Apache Hadoop這個開源替代品,也是根據Jeff Dean當年的論文自行實現而成,能提供與MapReduce文件系統類似的功能。

  如果想要更快的數據處理速度,還有Apache Spark供你選擇。相對於Hadoop的MapReduce會在運行完工作後將中介數據存放到磁盤中,Spark使用了存儲器內運算技術,能在數據尚未寫入硬盤時即在存儲器內分析運算。

  序列化工具

  Google內部:Protocol Buffer;

  外部替代品:Protobuf、Thrift、Avro

  這一組工具用於結構化數據序列化,上面這些,都是xml替代品,比它更小、更快、也更簡單。

  Protocol Buffer和Protobuf都是Google開發的序列化格式(Serialization Format),github上可以找到這個項目的源代碼。

  比起XML和JSON,Protobuf 更小、更快,也更簡潔,很適合做數據存儲或 RPC 數據交換格式。只需要定義一次數據結構,就可以利用各種不同語言或者從各種不同數據流中對結構化數據進行輕鬆讀寫。

  完全撇開Google,也不是就沒有別的選擇了。其他廠商也有類似的序列化方案。

  比如Facebook開發的Thrift ,它與Protobuf基本一樣。

  Avro 同樣也有schema(也就是程序中結構化數據的定義),但是實現方式跟 Protobuf 和 Thrift 有很大區別。

  由於數據不需要額外的標註,Avro 在序列化大量相同的數據時會比 Protobuf 和 Thrift 更有效率。不過在編碼大量變化的數據時,因爲schema會隨數據一同存儲,Avro的效率會退化到 JSON 和 MessagePack 的級別。

  看來在覈心技術工具上,重回人間的前Google人還是有許多不錯的選擇的。

  基礎設施

  大型集羣管理系統

  Google內部:Borg;外部替代品:Kubernetes、Apache Mesos、HashiCorp Nomad

  大型集羣管理系統用於管理雲平臺中多個主機上的容器化的應用。

  Borg是Google內部的大型集羣管理系統,現如今應用最廣泛的服務編配系統Kubernetes就脫胎於Borg。

  Borg 讓開發者能夠不必操心資源管理的問題,做到跨多個數據中心的資源利用率最大化。

  沒有Borg十五年的經驗,也就不會有Kubernetes。雖然作者把它放在開源/真實世界這一欄裏,但事實上Kubernetes也是由Google設計並參與開發的。

  Kubernetes使用Go語言編寫, 是一個大而全的解決方案,服務調度、網絡、存儲、安全通通一手抓,而且本身的架構也非常好,在上面做二次開發非常容易。

  HashiCorp Nomad同樣是一個比較常見的開源調度程序,架構簡單,能將資源管理器和調度程序的功能集成到一個系統中。Nomad也是分佈式的,高可用且易操作。但顯然Kubernetes的功能會更豐富。

  至於Mesos,它僅僅是一個調度系統,無法直接使用,要配合各種 Mesos framework 來實現各類功能。

  存儲

  當然,Google內部工具也不是所有的都能找到完美的替代品。

  至少在存儲這件事情上,就有網友不贊同原作者觀點。他認爲這份清單在一定程度上具有誤導性,某些替代品根本達不到Google內部工具的水平。

  比如將Colossus和HDFS對比是在開玩笑,相比之下,HDFS就像是一個玩具。要說對比,它智能和十年前已經退役的GFS相當。

  但HDFS恐怕是開源軟件中Colossus最好的替代品,對於“通用,大型,分佈式文件系統”的使用情況,很難找到有比HDFS更好的了。

  其他開發工具

相关文章