推荐几个可以写到简历上的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/bbs-go
Gin-vue-admin
這個項目在Go語言領域還是很出名的,Gin-vue-admin是一個基于 vue 和 gin 開發的全棧前后端分離的開發基礎平臺,集成jwt鑒權,動態路由,動態菜單,casbin鑒權,表單生成器,代碼生成器等功能,提供多種示例文件,還配有完整的文檔教程和視頻教程。這個項目個人覺得是新手入門必看項目,跟著做一遍后基本的crud就都掌握了,其中分片長傳、代碼生成器的功能還是挺有借鑒意義的,可以深入了解一下。這個項目不需要介紹太多,文檔比較詳細,可以達到手把手入門的程度。
項目地址:https://github.com/flipped-aurora/gin-vue-admin
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/rpcx
文檔地址:https://doc.rpcx.io/
go-kit
大家可以關注一下go-kit這個微服務項目,基于go-kit可以快速構建健壯、可靠、可維護的微服務,go-kit提供了對consul、etcd、zookeeper、eureka等注冊中心的支持,有一位大佬開源了一份go-kit微服務實踐教程:
觀看這個系列的博客:https://juejin.cn/post/6844903794380111886
源碼地址在這里:https://github.com/hwholiday/learning_tools/tree/master/go-kit
go-kit自動生成代碼的命令行工具:https://github.com/kujtimiihoxha/kit
項目地址:https://github.com/go-kit/kit
有工作經驗
已經有工作經驗的朋友們就可以不用看一些基礎的項目和原理了,可以更多的關注項目的架構設計、性能優化、服務治理等,更多的去思考如何維護好一個項目,這其實并不需要來看開源框架,更多關注自己項目團隊的框架,從中找出優缺點去做優化,更加體現自己的價值。如果自己項目團隊的框架比較水的話,那么下面就推薦幾個優秀的開源項目供你學習借鑒。
zinx
zinx是一個基于Go語言開發的TCP長連接服務器框架,其可以應用在游戲領域或其他長連接領域;我們可以學習zinx框架的設計思路,他有完整的視頻教程和文檔,通過這個我們可以完全理解如何設計一個輕量級并發服務器,然后自己基于zinx自己寫一個,并做一些優化,寫在簡歷上豈不是可以吹一吹!!!
項目地址:https://github.com/aceld/zinx
文檔地址:https://www.kancloud.cn/aceld/zinx
視頻地址:https://www.bilibili.com/video/av71067087
go-zero
對于大多數朋友一進入公司就開始了crud,使用的web框架、rpc框架也都是企業已經搭建好的,直接就拿來用了,很少有機會參與到如何設計一個web框架、rpc框架之中,但是面試中面試官還愛考查這些東西,所以就需要我們平常多關注如何設計一款高性能的企業框架,go-zero就一款企業框架,我們可以從中學習到值得借鑒的的設計;go-zero集成了web和rpc框架,是在20年由好未來開源的一款微服務框架,由于go-zero項目還是比較大的,建議大家帶著目的性去學習,比如我想了解微服務注冊與發現的原理實現、自適應負載均衡算法原理與實現,這樣我們就可以帶著目的性去查閱源碼,總結學習文檔并把它摘要出來形成自己的東西,寫在簡歷上吹吹水他不香嘛!!!
go-zero的文檔體系還不是很完善,一些知識點的學習還需要大家自己去總結提煉。
項目地址:https://github.com/zeromicro/go-zero/blob/master/readme-cn.md
go-nsq
NSQ是一個基于Go語言的分布式實時消息平臺,可用于大規模系統中的實時消息服務,并且每天能夠處理數億級別的消息,其設計目標是為在分布式環境下運行的去中心化服務提供一個強大的基礎架構。他的強大就不必多說了,我推薦這個項目的原因是讓大家去學習nsq是如何設計的,使用起來是簡單的,但是如何設計才是重點,面試中如果讓你設計一個高性能的實時消息平臺,你知道該如何設計嗎?
項目地址:https://github.com/nsqio/go-nsq
學習地址:https://cloud.tencent.com/developer/article/1735996
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/tidb/stable
kubernetes
一提到云原生就提不開kubernetes,現在各個企業都在上云原生,那么我們每個人都要理解kubernetes,即使你是一名業務開發,不會一點kubernetes都不太好意思出去面試,這是一個必備技能。Kubernetes 是一個可移植的、可擴展的開源平臺,用于管理容器化的工作負載和服務,可促進聲明式配置和自動化。Kubernetes 擁有一個龐大且快速增長的生態系統;Kubernetes由于是Go語言編寫,我們可以從源碼開始學習,配合著官方文檔,仔細專研一番,找個kubernetes相關的工作不久起飛了,現在很多做kubernetes方向的朋友也都是由業務開發轉去的,朋友們還不趕快學習來!!!
項目地址:https://github.com/kubernetes/kubernetes
官網文檔:https://kubernetes.io/docs/home/
中文文檔:https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/
推薦看英文文檔,中文文檔有些地方翻譯過來有點難理解。
Prometheus
Prometheus 是Cloud Native Computing Foundation 的一個項目,是一個系統和服務監控系統。它以給定的時間間隔從配置的目標收集指標,評估規則表達式,顯示結果,并可以在觀察到指定條件時觸發警報。現在企業基本都使用Prometheus做監控上報,但是你知道他的工作原理是怎樣的嗎?已經工作的朋友不要只停留在使用階段了,其核心原理我們還是要花點時間研究一下的,一樣可以在面試中和面試官吹水。
項目地址:https://github.com/prometheus/prometheus
文檔地址:https://prometheus.io/blog/
總結
本文我們針對有無工作經驗的朋友們推薦了幾個優質的開源項目,有些項目已經廣泛在企業中應用,其實現原理需要我們深究,真正做到知其所以然,才能做到和面試官的侃侃而談。
好啦,本文到這里就結束了,我是asong,我們下期見。
創建了讀者交流群,歡迎各位大佬們踴躍入群,一起學習交流。入群方式:關注公眾號獲取。更多學習資料請到公眾號領取。
總結
以上是生活随笔為你收集整理的推荐几个可以写到简历上的Go方向优质开源项目(需花点心思研究)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想G470拆掉屏幕,当主机使用
- 下一篇: 个人网站引导展示单页源码