不知不覺,我們團隊選擇go語言已經(jīng)兩年了,從最開始摸著石頭過河到現(xiàn)在的駕輕就熟,感慨萬千,總結(jié)來說:不服就干。
孫悟空不服天庭,所以大鬧天空,那我們不服誰呢?可能不服某位年齡不低的老大哥對世界的絕對統(tǒng)治吧,想要翻出點浪花來。
是的,不服那就干!干之前當然得考慮過潛在的風險,最終確定在可控范圍之內(nèi),同時因為Go的簡單,團隊轉(zhuǎn)型也非常順利,大概一周時間,就華麗麗的轉(zhuǎn)型成功。
項目方面,先后做了消息推送、IM即時聊天、API網(wǎng)關(guān)、統(tǒng)一監(jiān)控平臺(系統(tǒng)監(jiān)控、應(yīng)用監(jiān)控、全鏈路跟蹤、服務(wù)可用性、業(yè)務(wù)監(jiān)控等等),一路下來,最大的感受就是‘爽’,其次就是‘風一般的自由’。
Go語言本身并不自由,較為強制的代碼規(guī)范、泛型的缺失、略啰嗦的錯誤處理等,但是我們?yōu)槭裁锤惺艿健L一般的自由’呢?原因就在于Go實在是太他么的簡單了: 簡單上手、簡單開發(fā)、簡單測試、簡單部署、簡單維護,基本所有你能想到現(xiàn)代化軟件研發(fā)過程中備受詬病的復(fù)雜性問題,在Go這里,都不存在。
可能有同學要說了,這個世界上不僅僅Go語言簡單,比如python,能被科學界和學生普遍接受,也是因為簡單啊,而且名氣比Go大,生態(tài)比Go好,你們?yōu)槭裁床贿xPython,別急,且聽我細細道來。
不知道大家有沒有思考過,是什么讓我們在用一門工具時能感受到:哇,牛逼,答案可能是:是否擁有簡單、強大的生產(chǎn)力。
Go的生產(chǎn)力體現(xiàn)在以下方面:
1.簡單的語法
- 新加入的員工很容易就轉(zhuǎn)型為Go程序員,而且一上手就能有不俗的開發(fā)效率
- 有過豐富開發(fā)經(jīng)驗的同學肯定都很痛恨去維護歷史代碼吧?各種神奇的magic代碼,就算你喊破喉嚨也沒人能幫你解決這些,還好Go的語法足夠簡單,你想寫出黑魔法代碼估計也無能為力,因此Go的三方庫代碼可讀性一般都很好
2.代碼規(guī)范強制統(tǒng)一
- 原因基本同上
- Go的標準工具鏈提供了代碼格式化
3.部署簡單
- 在本地交叉編譯為目標平臺的可執(zhí)行文件,無需任何依賴,扔上去就可以運行
- 容器親和度極高
4.優(yōu)秀全面的標準庫
基本上正常開發(fā)需要的所有功能,標準庫都支持了,而且簡單易用,穩(wěn)定性和性能俱佳
-
我們有express、tomcat
go: 我們有標準庫我們有強大的fastjson
go: 我們有標準庫我們有netty
go: 我們有標準庫我們有強大的異步回調(diào)和纖程庫
go: 我們只需要在任何函數(shù)前加一個go關(guān)鍵字即可我們有強大的三方性能分析工具
go: 我們有自帶的標準工具鏈我們有強大的測試框架
go: 我們有自帶的標準工具鏈
5.寫Go項目基本不用擔心性能問題
- 語言級并發(fā)和高執(zhí)行性能決定了只要你用Go寫出了項目,那么性能一般都是不錯的(數(shù)據(jù)庫性能和語言性能無關(guān))
- Go強大的標準工具鏈支持,能讓項目的任何一段代碼執(zhí)行過慢、內(nèi)存占用過高等問題纖毫畢現(xiàn),我們團隊解決過多個棘手的性能問題,在其它語言可能需要花費一兩天的功夫,對go來說10分鐘足矣
6.良好的生態(tài)
- 是的,我承認,go的生態(tài)遠遠比不上java,但是該有的都有,而且三方庫質(zhì)量還都高,作者也普遍較為活躍
- 現(xiàn)代化的框架、平臺對go往往都支持的很好,甚至是官方原生大力支持,比如grpc、tensorflow等等
7.極快的編譯速度
- 我要編譯了,請允許我喝杯咖咖咖咖啡啡啡啡放松下,shit,這就編譯完了?咖啡包裝還沒拆
8.IDE親和
- go的ide插件都是go語言自己寫的,因此跨平臺支持的很好,對于ide的親和度也很高,vscode、idea、vim都能很好的寫Go代碼
9.軟實時級別的GC
- 微妙級別的GC時間,決定了Go可以在部分實時領(lǐng)域大展身手,比如實時證券行情等
- 我們就不必借助于C++、C去實現(xiàn)高性能代碼了,大大提升了開發(fā)和維護效率
寫了,這么多,前面的為什么在一些場景不選python,大家應(yīng)該也明白了,說到底,還是想追求'風一般的自由‘。
快到尾聲了,再簡單提下Go適合的應(yīng)用場景
- Web服務(wù)
- 中間件基礎(chǔ)服務(wù)
- DevOps服務(wù)
- 云計算
- 游戲、直播等實時性要求較高的領(lǐng)域
- 跨平臺可執(zhí)行腳本
最后,再送大家一些福利,自從用了Go,團隊加班顯著減少,終于有時間陪伴女朋友了,想怎么happy就怎么happy。
我們都是平凡的,也都渴望著成功。一路千辛萬苦,跨過山和大海,想要逆襲,可是你敢像孫大圣那樣放棄所有嗎?
不服就干。
如果您喜歡這篇文章,請點擊喜歡;如果想及時獲得最新的咨詢,請點擊關(guān)注。您的支持是對作者都是最大的激勵,萬分感激!By 孫飛