一位曾經的谷歌工程師,花費兩年時間,辛苦整理了一份清單。
這個名為“xg2xg”的清單,原本是這位前谷歌工程師(ex-Googler),為所有離職的谷歌工程師寫的一份“廠外”生存指南。
但實際上,這個大全實打實地也成為了一份最佳開發工具大全。
所有的程序員,都能受益于此。
美國網友對這個大全給予了很高的評價:這份清單中列出的開源軟件,不僅解決了硅谷大廠前員工的難處,也能為其他所有碼農解除困惑。
在這套大全的指導下,任何一個工程師,都能獲得類似在谷歌內部寫代碼的體驗。xg2xg上線僅僅一天就登上趨勢榜,收獲2500+星!
清單其中大部分替代軟件是Google開源的項目,或者是受谷歌論文的啟發,由開源軟件基金會自己做的第三方實現。即使你從來沒進過Google工作,也在享受著Google工程師們帶來的福利。不禁讓人感嘆“谷歌拯救世界”。
下面就讓我們一起來看看這份清單吧。
開發工具一覽
這份清單總共有兩部分,前半部分介紹的是碼農常用的開發工具,包括核心技術、基礎設施、服務、開發運維等;后半部分則面向非技術人員。
核心技術工具
大數據處理工具
Google內部工具:MapReduce;替代品:ApacheHadoop、Spark
想要在上千臺機器組成的大集群上、并行處理上TB級別的海量數據集,就要用到這類大規模數據處理工具了。
MapReduce,就是這類工具的先驅。JeffDean等人2004年提出了這個分布式計算架構,最早在Google內部用來處理大規模數據的并行計算。JeffDean還親自為它撰寫過使用指南。
而ApacheHadoop這個開源替代品,也是根據JeffDean當年的論文自行實現而成,能提供與MapReduce文件系統類似的功能。
如果想要更快的數據處理速度,還有ApacheSpark供你選擇。相對于Hadoop的MapReduce會在運行完工作后將中介數據存放到磁盤中,Spark使用了存儲器內運算技術,能在數據尚未寫入硬盤時即在存儲器內分析運算。
序列化工具
Google內部:ProtocolBuffer;外部替代品:Protobuf、Thrift、Avro
這一組工具用于結構化數據序列化,上面這些,都是xml替代品,比它更小、更快、也更簡單。
ProtocolBuffer和Protobuf都是Google開發的序列化格式(SerializationFormat),github上可以找到這個項目的源代碼。
比起XML和JSON,Protobuf更小、更快,也更簡潔,很適合做數據存儲或RPC數據交換格式。只需要定義一次數據結構,就可以利用各種不同語言或者從各種不同數據流中對結構化數據進行輕松讀寫。
完全撇開Google,也不是就沒有別的選擇了。其他廠商也有類似的序列化方案。
比如Facebook開發的Thrift,它與Protobuf基本一樣。
Avro同樣也有schema(也就是程序中結構化數據的定義),但是實現方式跟Protobuf和Thrift有很大區別。
由于數據不需要額外的標注,Avro在序列化大量相同的數據時會比Protobuf和Thrift更有效率。不過在編碼大量變化的數據時,因為schema會隨數據一同存儲,Avro的效率會退化到JSON和MessagePack的級別。
看來在核心技術工具上,重回人間的前Google人還是有許多不錯的選擇的。
基礎設施
大型集群管理系統
Google內部:Borg;外部替代品:Kubernetes、ApacheMesos、HashiCorpNomad
大型集群管理系統用于管理云平臺中多個主機上的容器化的應用。
Borg是Google內部的大型集群管理系統,現如今應用最廣泛的服務編配系統Kubernetes就脫胎于Borg。
Borg讓開發者能夠不必操心資源管理的問題,做到跨多個數據中心的資源利用率最大化。
沒有Borg十五年的經驗,也就不會有Kubernetes。雖然作者把它放在開源/真實世界這一欄里,但事實上Kubernetes也是由Google設計并參與開發的。
Kubernetes使用Go語言編寫,是一個大而全的解決方案,服務調度、網絡、存儲、安全通通一手抓,而且本身的架構也非常好,在上面做二次開發非常容易。
HashiCorpNomad同樣是一個比較常見的開源調度程序,架構簡單,能將資源管理器和調度程序的功能集成到一個系統中。Nomad也是分布式的,高可用且易操作。但顯然Kubernetes的功能會更豐富。
至于Mesos,它僅僅是一個調度系統,無法直接使用,要配合各種Mesosframework來實現各類功能。
存儲
當然,Google內部工具也不是所有的都能找到完美的替代品。
至少在存儲這件事情上,就有網友不贊同原作者觀點。他認為這份清單在一定程度上具有誤導性,某些替代品根本達不到Google內部工具的水平。
比如將Colossus和HDFS對比是在開玩笑,相比之下,HDFS就像是一個玩具。要說對比,它智能和十年前已經退役的GFS相當。
但HDFS恐怕是開源軟件中Colossus最好的替代品,對于“通用,大型,分布式文件系統”的使用情況,很難找到有比HDFS更好的了。
其他開發工具
列表中還有服務、開發運維、安全等工具的替代品清單,由于篇幅限制,我們不再一一介紹,有需求的同學可以自取。全部工具的下載鏈接請參閱文末的GitHub地址。
還有什么福利
如果你不是工程師,上面那些工具大概就用不上了。不過,只要是個公司或者團隊,總會有IT和運營需求。
比如說,飯總是要吃的。
很多網友看了這份清單,最感興趣的就是這一項:
離開Google的人類,再也找不回免費食堂。
畢竟,“中午吃什么”的哲學問題,每次想起來都是折磨。
羨慕的時候,可以用以下口令來安慰自己:
公司有吃的,還不是為了讓你們多點時間工作?
如果你覺得這一條說服力不夠,還可以跟一句補充說明:
Google最初是為什么提供免費食物的?就是山景城總部周圍吃的選擇太少了,開車出去吃來回要一小時。對,就是想讓員工省下時間好好上班。
吃,只是IT/運營章節的第一條。
后面,還有梗圖生成器Memegen。
工作太辛苦的時候,可以皮一下:
△當沒有GPU的人,遇到了Google Colab
對此,甚至有人呼吁:
如果Google全家桶把Memegen收了就好了。
所以,這個章節并沒有和工作相關的資源么?
看看完整列表的話,還是能找到的:
有一些必要的小工具。
比如,CODEOWNERS可以用來指定哪些用戶來審查代碼,1Password是個密碼管理器。
也有一些同學,沒在上面找到自己需要的答案,便直接提問了:
Google這樣的大廠,公司內部wiki用的是什么???我們公司用的是Quip,它就是個黑洞,文檔一進去就出不來了。
然后,有熱心人士回答了這個問題:
雖然不知道Google用的什么,但Confluence是很常用的。
xg2xg項目地址:https://github.com/jhuangtw-dev/xg2xg
-
Google
+關注
關注
5文章
1762瀏覽量
57506 -
存儲器
+關注
關注
38文章
7484瀏覽量
163764 -
源代碼
+關注
關注
96文章
2945瀏覽量
66730
原文標題:最佳開發工具大全!前谷歌工程師兩年打造“廠外生存指南”,登上GitHub熱榜
文章出處:【微信號:CAAI-1981,微信公眾號:中國人工智能學會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論