學習經歷
2020時間過的很快,在這一年裡,無論是工作,學習還是家庭都發生了很大的變化,今天在這裡介紹一下我go語言的學習路線
基本語法
學習任何一門語言,最基礎的就是語法了,語法沒得說的,但是相對於其它的老式程式語言還是有點差距的,推薦連線:
web框架學習
作為一名web開發者,學習web框架是有必要的,在這裡我深入研究了Gin和Beego,包括它們的使用和設計,其實原始碼並不複雜,
這2個框架都只是在go http庫上面套個殼而已,沒啥難的,一天即看完所有的原始碼,原始碼不是重點,重點是他們的設計思路
http2協議
作為http協議的後繼者http2,真可謂是進行了大大闊斧的改革,學習http2,主要是為了學子GRPC,因為GRPC基於http2進行開發,我覺得所有的go開發人員都應該學習下http2協議,
看一下它是如何設計出來的,下面列出http2的retf地址:
至於HTTP2 的go實現,你應該看看go的官方包:
GRPC
GRPC是啥,這裡就不多說了,搞Go開發,不知道這個咋行呢?它的東家是Google,用法嘛,沒啥難的,如果你有興趣的話,可以看看Google的GRPC實現,
原始碼並不複雜,學習它主要是為了理解它的設計,以便用於自己以後多的開發
微服務
我學習的是go-mirco,其實也主要是學習它的設計思路,框架本身沒啥難的,相對於etcd來說,就是小意思了,地址:
RAFT 分散式協議
RAFT是一種分散式一致性協議,最初是為了易於理解和工程實踐而設計的,如果你要精通分散式開發的話,RAFT是你繞不過去的攔路虎,首先你要理解什麼是RAFT,那麼請你看它的論文,下面是史丹佛大學多的論文地址:
In Search of an Understandable Consensus Algorithm
RAFT 協議實現
光看論文的,理解還是不夠深刻的,我建議你看看RAFT的go實現,給大家推薦幾個github地址:
hashicorp 沒聽說不要緊,你總聽說過consul吧,consul就是這個公司開發的,牛逼不需要解釋,如果你想要知道這個庫怎麼用的話,沒關係,有人給你寫了個例子:
這哥們的作者也是個Google程式設計師,看他的github主頁,就覺得有點牛逼!
除了上面所說的Raft實現外,還有一個重量級的實現,現在業界廣泛使用的就是etcd-raft,它是etcd的一個模組:
大型分散式軟體開發
光搞web有啥意思?我們得來點兒有點難度的東西,大型分散式軟體開發才是程式設計師的終極目標啊,在這裡我給大家推薦業界廣泛使用的分散式鍵值儲存軟體etcd,叼的不行,不服不行,連結如下:
etcd
etcd的原始碼寫的很複雜,讀起來不是那麼容易,因為我也是搞了一個多月,才算是完全搞明白了呀,在這裡給大家推薦一本輔助書籍《etcd技術內幕》,相信你看完的那天,終會有所成
學習寄語
我始終相信,做難事,終有所得,學習沒啥大的技巧,唯有堅持才是制勝法寶,還是那句話:
山重水複疑無路,聊暗花明又一村
本作品採用《CC 協議》,轉載必須註明作者和本文連結