新聞中心
寫代碼同寫文章一樣,既是技術(shù)活,又是藝術(shù)活。不是懂了語法能夠?qū)懗鰞?yōu)秀的代碼,也正如不是認(rèn)識字就能夠?qū)懗鰞?yōu)美的文章一樣。那個作家飽讀史書,那個架構(gòu)師不是在代碼堆里和Bug堆里泡出來的。

因此,程序員剛?cè)腴T除了讀書外,閱讀好的代碼很重要。閱讀優(yōu)秀的代碼可以了解大牛開發(fā)的思路,軟件架構(gòu)和語言技巧等。因此,本文針對Go語言,推薦大家5個非常優(yōu)秀的開源項目,這些開源項目不僅應(yīng)用廣泛,而且其中所用的技術(shù)有很多基礎(chǔ)技術(shù),是做其它任何項目都不可或缺的。
Codis
Codis是一個分布式Redis解決方案,與官方的純P2P模式不同,Codis采用的是Proxy-based的方案??梢詫odis理解成為Web服務(wù)領(lǐng)域的Nginx,它實現(xiàn)了對Redis的反向代理和負(fù)載均衡。Redis本身就是就是一個高性能的緩存系統(tǒng),可見Codis的性能更是沒法說。
推薦閱讀該開源項目源代碼的原因在于應(yīng)用廣泛、高性能和網(wǎng)絡(luò)協(xié)議。通過學(xué)習(xí)其代碼相信對Go語言的如下方面能有很大的提升:網(wǎng)絡(luò)編程: Codis本身就是一個高性能網(wǎng)絡(luò)軟件,因此閱讀其代碼對于Go語言下的網(wǎng)絡(luò)編程會有很大的幫助協(xié)程: 作為網(wǎng)絡(luò)軟件,在Go語言協(xié)程使用上發(fā)揮的淋漓盡致,充分使用了其協(xié)程的特性數(shù)據(jù)結(jié)構(gòu)與算法: Codis為了配合Redis的多種數(shù)據(jù)類型支持,在內(nèi)部實現(xiàn)上充分使用了現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)
Etcd
Etcd是CoreOS團(tuán)隊于2013年6月發(fā)起的開源項目,它的目標(biāo)是構(gòu)建一個高可用的分布式鍵值(key-value)數(shù)據(jù)庫。Etcd內(nèi)部采用raft協(xié)議作為一致性算法,etcd基于Go語言實現(xiàn)。閱讀其代碼對理解Go語言中的網(wǎng)絡(luò)編程、分布式算法和數(shù)據(jù)結(jié)構(gòu)等方面的內(nèi)容有非常大的幫助??梢粤私馐澜缂壌笈5拈_發(fā)思路和編碼風(fēng)格。
Kubernetes
相信做過Web開發(fā)或者玩過容器的同學(xué)都接觸過,最起碼聽過這個軟件。這個軟件是純Go語言開發(fā)。這里就不過多介紹了,Google設(shè)計并開發(fā)的東東,相信能從中學(xué)到很多內(nèi)容。這里就不過多介紹了。
Caddy
Caddy服務(wù)器(或者CaddyWeb)是一個開源的,使用Golang 編寫,支持HTTP/2 的Web 服務(wù)端。 它使用Golang 標(biāo)準(zhǔn)庫提供HTTP 功能。 Caddy 一個顯著的特性是默認(rèn)啟用HTTPS。 它是第一個無需額外配置即可提供HTTPS 特性的Web 服務(wù)器。學(xué)習(xí)該軟件的代碼對高性能架構(gòu)、網(wǎng)絡(luò)編程和HTTP協(xié)議會有更加深入的理解。
Go-MySQL
程序開發(fā)無非業(yè)務(wù)、數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)和存儲,前面介紹了很多數(shù)據(jù)結(jié)構(gòu)和網(wǎng)絡(luò)的開源軟件,本軟件是最后一部分。本軟件是Go語言實現(xiàn)的處理MySQL網(wǎng)絡(luò)協(xié)議和復(fù)制的功能,可以作為MySQL的從端,實現(xiàn)數(shù)據(jù)的進(jìn)一步的處理。學(xué)習(xí)本軟件的代碼對MySQL會有更加深入的理解,另外對數(shù)據(jù)中心容災(zāi)也會有所幫助。
文章題目:Go語言開發(fā)工程師必備5個開源項目
網(wǎng)址分享:http://www.dlmjj.cn/article/ccsdsjp.html


咨詢
建站咨詢
