原文連結:推薦幾個可以寫到簡歷上的Go方向優質開源專案(需花點心思研究)
前言
哈嘍,大家好,我是asong
。最近總有讀者問我有沒有Go
語言方向優質的開源專案,可以寫在簡歷上那種,一時還真想不起來,花了兩天時間調研了一下,針對有無工作經驗的分別推薦幾個開源專案,下面我們一起來看一下。
無工作經驗
對於還在上學的朋友們,除了知道必要的基礎知識外,也要有1-2個拿的出手的專案,光有基礎,沒有實踐,很難過去簡歷這一關,對於學生而言,簡單的crud
還是要熟練掌握的,接下來就推薦幾個文件比較齊全的web
專案,入門後可以在此基礎上深度開發。
bbs-go
bbs-go
是一個使用Go
語言搭建的開源社群系統,後端使用技術棧:
- iris (https://github.com/kataras/iris) Go 語言 mvc 框架
- gorm (http://gorm.io/) Go 語言 orm 框架
- Nuxt.js (https://nuxtjs.org/) 基於Vue.js的服務端頁面渲染框架,簡單、好用、功能強大
- resty (https://github.com/go-resty/resty) Go 語言好用的 http-client
- cron (https://github.com/robfig/cron) 定時任務
- goquery (https://github.com/PuerkitoBio/goquery) html dom 元素解析
還有配套的前端專案,基於Vue
搭建的,功能還是比較全面的,通過這個專案可以瞭解開發一個開源社群的設計思路,對於一個新手入門web
開發還是很友好的,但是這個專案需要付費才能觀看搭建文件,不過程式碼是開源的,大家可以把原始碼下載下來自己研究一下,程式碼內容不多且簡潔,自己深耕幾天應該可以掌握。
專案地址:https://gitee.com/mlogclub/bb...
Gin-vue-admin
這個專案在Go
語言領域還是很出名的,Gin-vue-admin
是一個基於 vue 和 gin 開發的全棧前後端分離的開發基礎平臺,整合jwt鑑權,動態路由,動態選單,casbin鑑權,表單生成器,程式碼生成器等功能,提供多種示例檔案,還配有完整的文件教程和視訊教程。這個專案個人覺得是新手入門必看專案,跟著做一遍後基本的crud
就都掌握了,其中分片長傳、程式碼生成器的功能還是挺有借鑑意義的,可以深入瞭解一下。這個專案不需要介紹太多,文件比較詳細,可以達到手把手入門的程度。
專案地址:https://github.com/flipped-au...
rpcx
現在企業都是由單體應用向微服務架構轉型,微服務的實踐離不開RPC
框架的應用,目前服務治理型的 RPC
框架有dubbo-go
、go-zero
、go-kit
等,跨語言呼叫型的 RPC
框架有 Thrift
、gRPC
、Hessian
、Finagle
、rpcx
等,對於一個小白而言理解RPC
的原理比較重要,所以可以先從rpcx
框架入手,rpcx 是一個分散式的Go
語言的RPC
框架,支援Zookepper
、etcd
、consul
多種服務發現方式,多種服務路由方式, 是目前效能最好的 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://juejin.cn/post/684490...
- 原始碼地址在這裡:https://github.com/hwholiday/...
- go-kit自動生成程式碼的命令列工具:https://github.com/kujtimiiho...
專案地址: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
整合了web
和rpc
框架,是在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
Tidb
是NewSQL
行業中的代表性產品,由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
Prometheus
是Cloud Native Computing Foundation
的一個專案,是一個系統和服務監控系統。它以給定的時間間隔從配置的目標收集指標,評估規則表示式,顯示結果,並可以在觀察到指定條件時觸發警報。現在企業基本都使用Prometheus
做監控上報,但是你知道他的工作原理是怎樣的嗎?已經工作的朋友不要只停留在使用階段了,其核心原理我們還是要花點時間研究一下的,一樣可以在面試中和麵試官吹水。
專案地址:https://github.com/prometheus...
文件地址:https://prometheus.io/blog/
總結
本文我們針對有無工作經驗的朋友們推薦了幾個優質的開源專案,有些專案已經廣泛在企業中應用,其實現原理需要我們深究,真正做到知其所以然,才能做到和麵試官的侃侃而談。
好啦,本文到這裡就結束了,我是asong
,我們下期見。
建立了讀者交流群,歡迎各位大佬們踴躍入群,一起學習交流。入群方式:關注公眾號獲取。更多學習資料請到公眾號領取。
歡迎關注公眾號:【Golang夢工廠】