推薦幾個可以寫到簡歷上的Go方向優質開源專案(需花點心思研究)

asong發表於2021-12-08

原文連結:推薦幾個可以寫到簡歷上的Go方向優質開源專案(需花點心思研究)

前言

哈嘍,大家好,我是asong。最近總有讀者問我有沒有Go語言方向優質的開源專案,可以寫在簡歷上那種,一時還真想不起來,花了兩天時間調研了一下,針對有無工作經驗的分別推薦幾個開源專案,下面我們一起來看一下。

無工作經驗

對於還在上學的朋友們,除了知道必要的基礎知識外,也要有1-2個拿的出手的專案,光有基礎,沒有實踐,很難過去簡歷這一關,對於學生而言,簡單的crud還是要熟練掌握的,接下來就推薦幾個文件比較齊全的web專案,入門後可以在此基礎上深度開發。

bbs-go

bbs-go是一個使用Go語言搭建的開源社群系統,後端使用技術棧:

還有配套的前端專案,基於Vue搭建的,功能還是比較全面的,通過這個專案可以瞭解開發一個開源社群的設計思路,對於一個新手入門web開發還是很友好的,但是這個專案需要付費才能觀看搭建文件,不過程式碼是開源的,大家可以把原始碼下載下來自己研究一下,程式碼內容不多且簡潔,自己深耕幾天應該可以掌握。

專案地址:https://gitee.com/mlogclub/bb...

Gin-vue-admin

這個專案在Go語言領域還是很出名的,Gin-vue-admin是一個基於 vuegin 開發的全棧前後端分離的開發基礎平臺,整合jwt鑑權,動態路由,動態選單,casbin鑑權,表單生成器,程式碼生成器等功能,提供多種示例檔案,還配有完整的文件教程和視訊教程。這個專案個人覺得是新手入門必看專案,跟著做一遍後基本的crud就都掌握了,其中分片長傳、程式碼生成器的功能還是挺有借鑑意義的,可以深入瞭解一下。這個專案不需要介紹太多,文件比較詳細,可以達到手把手入門的程度。

專案地址:https://github.com/flipped-au...

rpcx

現在企業都是由單體應用向微服務架構轉型,微服務的實踐離不開RPC框架的應用,目前服務治理型的 RPC 框架有dubbo-gogo-zerogo-kit 等,跨語言呼叫型的 RPC 框架有 ThriftgRPCHessianFinaglerpcx 等,對於一個小白而言理解RPC的原理比較重要,所以可以先從rpcx框架入手,rpcx 是一個分散式的Go語言的RPC 框架,支援Zookepperetcdconsul多種服務發現方式,多種服務路由方式, 是目前效能最好的 RPC 框架之一,rpcx的文件比較齊全,有專門的團隊維護,是新手入門的不二選擇。

專案地址:https://github.com/smallnest/...

文件地址:https://doc.rpcx.io/

go-kit

大家可以關注一下go-kit這個微服務專案,基於go-kit可以快速構建健壯、可靠、可維護的微服務,go-kit提供了對consul、etcd、zookeeper、eureka等註冊中心的支援,有一位大佬開源了一份go-kit微服務實踐教程:

專案地址:https://github.com/go-kit/kit

有工作經驗

已經有工作經驗的朋友們就可以不用看一些基礎的專案和原理了,可以更多的關注專案的架構設計、效能優化、服務治理等,更多的去思考如何維護好一個專案,這其實並不需要來看開源框架,更多關注自己專案團隊的框架,從中找出優缺點去做優化,更加體現自己的價值。如果自己專案團隊的框架比較水的話,那麼下面就推薦幾個優秀的開源專案供你學習借鑑。

zinx

zinx是一個基於Go語言開發的TCP長連線伺服器框架,其可以應用在遊戲領域或其他長連線領域;我們可以學習zinx框架的設計思路,他有完整的視訊教程和文件,通過這個我們可以完全理解如何設計一個輕量級併發伺服器,然後自己基於zinx自己寫一個,並做一些優化,寫在簡歷上豈不是可以吹一吹!!!

專案地址:https://github.com/aceld/zinx

文件地址:https://www.kancloud.cn/aceld...

視訊地址:https://www.bilibili.com/vide...

go-zero

對於大多數朋友一進入公司就開始了crud,使用的web框架、rpc框架也都是企業已經搭建好的,直接就拿來用了,很少有機會參與到如何設計一個web框架、rpc框架之中,但是面試中面試官還愛考查這些東西,所以就需要我們平常多關注如何設計一款高效能的企業框架,go-zero就一款企業框架,我們可以從中學習到值得借鑑的的設計;go-zero整合了webrpc框架,是在20年由好未來開源的一款微服務框架,由於go-zero專案還是比較大的,建議大家帶著目的性去學習,比如我想了解微服務註冊與發現的原理實現、自適應負載均衡演算法原理與實現,這樣我們就可以帶著目的性去查閱原始碼,總結學習文件並把它摘要出來形成自己的東西,寫在簡歷上吹吹水他不香嘛!!!

go-zero的文件體系還不是很完善,一些知識點的學習還需要大家自己去總結提煉。

專案地址:https://github.com/zeromicro/...

go-nsq

NSQ是一個基於Go語言的分散式實時訊息平臺,可用於大規模系統中的實時訊息服務,並且每天能夠處理數億級別的訊息,其設計目標是為在分散式環境下執行的去中心化服務提供一個強大的基礎架構。他的強大就不必多說了,我推薦這個專案的原因是讓大家去學習nsq是如何設計的,使用起來是簡單的,但是如何設計才是重點,面試中如果讓你設計一個高效能的實時訊息平臺,你知道該如何設計嗎?

專案地址:https://github.com/nsqio/go-nsq

學習地址:https://cloud.tencent.com/dev...

Tidb

TidbNewSQL行業中的代表性產品,由PingCAP公司自主設計、研發的開源分散式關係型資料庫,相容MySQL 5.7 協議和 MySQL 生態等重要特性。目前很多公司都在使用Tidb,解決了關係型資料庫、彈性擴充套件以及全球分佈的問題。Tidb採用Go語言開發SQL層,下邊的分散式儲存引擎使用rust語言,使用Tidb具有以下優勢:

  • 支援彈性的擴縮容;
  • 支援 SQL,相容大多數 MySQL 的語法,在大多數場景下可以直接替換 MySQL;
  • 預設支援高可用,自動進行資料修復和故障轉移;
  • 支援 ACID 事務;

如果大家熟悉Tidb的設計與實現,可以寫到簡歷上,和麵試官吹吹水!!!

專案地址:https://github.com/pingcap/tidb

文件地址:https://docs.pingcap.com/zh/t...

kubernetes

一提到雲原生就提不開kubernetes,現在各個企業都在上雲原生,那麼我們每個人都要理解kubernetes,即使你是一名業務開發,不會一點kubernetes都不太好意思出去面試,這是一個必備技能。Kubernetes 是一個可移植的、可擴充套件的開源平臺,用於管理容器化的工作負載和服務,可促進宣告式配置和自動化。 Kubernetes 擁有一個龐大且快速增長的生態系統;Kubernetes由於是Go語言編寫,我們可以從原始碼開始學習,配合著官方文件,仔細專研一番,找個kubernetes相關的工作不久起飛了,現在很多做kubernetes方向的朋友也都是由業務開發轉去的,朋友們還不趕快學習來!!!

專案地址:https://github.com/kubernetes...

官網文件:https://kubernetes.io/docs/home/

中文文件:https://kubernetes.io/zh/docs...

推薦看英文文件,中文文件有些地方翻譯過來有點難理解。

Prometheus

PrometheusCloud Native Computing Foundation 的一個專案,是一個系統和服務監控系統。它以給定的時間間隔從配置的目標收集指標,評估規則表示式,顯示結果,並可以在觀察到指定條件時觸發警報。現在企業基本都使用Prometheus做監控上報,但是你知道他的工作原理是怎樣的嗎?已經工作的朋友不要只停留在使用階段了,其核心原理我們還是要花點時間研究一下的,一樣可以在面試中和麵試官吹水。

專案地址:https://github.com/prometheus...

文件地址:https://prometheus.io/blog/

總結

本文我們針對有無工作經驗的朋友們推薦了幾個優質的開源專案,有些專案已經廣泛在企業中應用,其實現原理需要我們深究,真正做到知其所以然,才能做到和麵試官的侃侃而談。

好啦,本文到這裡就結束了,我是asong,我們下期見。

建立了讀者交流群,歡迎各位大佬們踴躍入群,一起學習交流。入群方式:關注公眾號獲取。更多學習資料請到公眾號領取。

歡迎關注公眾號:【Golang夢工廠】

相關文章