Acger Pair 是一個為了學習微服務框架go-zero而搭建的一個練手項目,供大家學習、參考
Acger Pair is a project built to learn go-zero, enjoy your self
主頁地址:https://acger-pair.com
源碼地址:https://github.com/acger/pair
web端源碼:https://github.com/acger/pair-web
項目基于TiDB、Elasticsearch、Filebeat、Kafka、Redis等技術(shù)棧開發(fā),也包含了gorm、validator、copier、json-iterator、go-queue、go-elasticsearch、websocket、qiniu等等常用庫,有興趣的小伙伴翻一下代碼就可以看到相關(guān)實踐。服務端總共只有三個模塊,用戶模塊 - user, 匹配模塊 - pair, 聊天通訊模塊 - chat,每個模塊都有自己得api與rpc服務,手寫的代碼不過兩三百行。自從使用了go-zero做開發(fā),摸魚時間翻倍生產(chǎn)效率直接提高100% ,go-zero yyds!
這里順手安利一下tidb,在群里看到經(jīng)常有小伙伴問分布式事務怎么搞,其實把這個問題交給分布式數(shù)據(jù)庫就好了。當你使用tidb的時候,跟使用單體的mysql數(shù)據(jù)庫幾乎是一模一樣的,零代碼入侵。分布式事務中的并發(fā)處理、數(shù)據(jù)的拆合、節(jié)點間的調(diào)度全部都在tidb內(nèi)部完成,應用端可以無感知的使用,非常舒適。
還有提一下的是,項目使用Github Actions + K8S 實現(xiàn)自動化CI/CD部署。部署流程也相當簡單,需要用到的文件都有保存在項目當中,詳細可以查看以下目錄:
/.github/workflows --- actions工作流的配置文件
/deploy/actions/dockerfile --- 部署時要用的dockerfile文件(去除了goproxy設置)
/deploy/k8s --- 初次部署到k8s需要用到的manifest文件
/deploy/k8s/temp --- temp文件夾下也有dockerfile,方便手動制作鏡像
如果在本地環(huán)境下,用k3d部署本項目,部署完大概是這樣子的:

acger-pair-local.png