寫代碼同寫文章同樣,既是技術活,又是藝術活。不是懂了語法可以寫出優秀的代碼,也正如不是認識字就可以寫出優美的文章同樣。那個做家飽讀史書,那個架構師不是在代碼堆裏和Bug堆裏泡出來的。 |
所以,程序員剛入門除了讀書外,閱讀好的代碼很重要。閱讀優秀的代碼能夠了解大牛開發的思路,軟件架構和語言技巧等。所以,本文針對Go語言,推薦你們5個很是優秀的開源項目,這些開源項目不只應用普遍,並且其中所用的技術有不少基礎技術,是作其它任何項目都不可或缺的。程序員
Codis算法
Codis是一個分佈式Redis解決方案,與官方的純P2P模式不一樣,Codis採用的是Proxy-based的方案。能夠將Codis理解成爲Web服務領域的Nginx,它實現了對Redis的反向代理和負載均衡。Redis自己就是就是一個高性能的緩存系統,可見Codis的性能更是無法說。數據庫
推薦閱讀該開源項目源代碼的緣由在於應用普遍、高性能和網絡協議。經過學習其代碼相信對Go語言的以下方面能有很大的提高:
網絡編程: Codis自己就是一個高性能網絡軟件,所以閱讀其代碼對於Go語言下的網絡編程會有很大的幫助
協程: 做爲網絡軟件,在Go語言協程使用上發揮的淋漓盡致,充分使用了其協程的特性
數據結構與算法: Codis爲了配合Redis的多種數據類型支持,在內部實現上充分使用了現有的數據結構編程
Etcd緩存
Etcd是CoreOS團隊於2013年6月發起的開源項目,它的目標是構建一個高可用的分佈式鍵值(key-value)數據庫。Etcd內部採用raft協議做爲一致性算法,etcd基於Go語言實現。閱讀其代碼對理解Go語言中的網絡編程、分佈式算法和數據結構等方面的內容有很是大的幫助。能夠了解世界級大牛的開發思路和編碼風格。服務器
Kubernetes網絡
相信作過Web開發或者玩過容器的同窗都接觸過,最起碼聽過這個軟件。這個軟件是純Go語言開發。這裏就不過多介紹了,Google設計並開發的東東,相信能從中學到不少內容。這裏就不過多介紹了。數據結構
Caddy架構
Caddy服務器(或者CaddyWeb)是一個開源的,使用Golang 編寫,支持HTTP/2 的Web 服務端。 它使用Golang 標準庫提供HTTP 功能。 Caddy 一個顯著的特性是默認啓用HTTPS。 它是第一個無需額外配置便可提供HTTPS 特性的Web 服務器。學習該軟件的代碼對高性能架構、網絡編程和HTTP協議會有更加深刻的理解。負載均衡
Go-MySQL
程序開發無非業務、數據結構算法、網絡和存儲,前面介紹了不少數據結構和網絡的開源軟件,本軟件是最後一部分。本軟件是Go語言實現的處理MySQL網絡協議和複製的功能,能夠做爲MySQL的從端,實現數據的進一步的處理。學習本軟件的代碼對MySQL會有更加深刻的理解,另外對數據中心容災也會有所幫助。