go-kratos微服務(wù)框架學(xué)習(xí)(1)-從demo學(xué)起

1.首先如果需要了解go-kratos的詳細(xì)文檔,可以先去看看官方的文檔。

(1)https://github.com/go-kratos/kratos
(2)https://go-kratos.gitee.io/kratos/#/

2.接下來會(huì)跟著官方的項(xiàng)目創(chuàng)建步驟進(jìn)行

(PS:此處的開發(fā)環(huán)境是ubuntu20.04,windows系統(tǒng)同理)

(1)安裝kratos工具

go get -u github.com/go-kratos/kratos/tool/kratos

(2)安裝protoc

sudo apt install -y protobuf-compiler

這步不能少,不然執(zhí)行demo中的kratos tool protoc --grpc api.proto命令時(shí)會(huì)提示錯(cuò)誤。

(3)使用kratos工具創(chuàng)建項(xiàng)目

cd $GOPATH/src
kratos new kratos-demo

這個(gè)地方在創(chuàng)建項(xiàng)目的時(shí)候,kratos工具已經(jīng)自動(dòng)幫我們安裝好了protoc。(于此同時(shí),也會(huì)把其他的工具也順道安裝一遍)具體有哪些頁面,可以看看文檔 https://go-kratos.gitee.io/kratos/#/kratos-tool

(4)項(xiàng)目結(jié)構(gòu)

├── CHANGELOG.md 
├── OWNERS
├── README.md
├── api                     # api目錄為對(duì)外保留的proto文件及生成的pb.go文件
│   ├── api.bm.go
│   ├── api.pb.go           # 通過go generate生成的pb.go文件
│   ├── api.proto
│   └── client.go
├── cmd
│   └── main.go             # cmd目錄為main所在
├── configs                 # configs為配置文件目錄
│   ├── application.toml    # 應(yīng)用的自定義配置文件,可能是一些業(yè)務(wù)開關(guān)如:useABtest = true
│   ├── db.toml             # db相關(guān)配置
│   ├── grpc.toml           # grpc相關(guān)配置
│   ├── http.toml           # http相關(guān)配置
│   ├── memcache.toml       # memcache相關(guān)配置
│   └── redis.toml          # redis相關(guān)配置
├── go.mod
├── go.sum
└── internal                # internal為項(xiàng)目?jī)?nèi)部包,包括以下目錄:
│   ├── dao                 # dao層,用于數(shù)據(jù)庫、cache、MQ、依賴某業(yè)務(wù)grpc|http等資源訪問
│   │   ├── dao.bts.go
│   │   ├── dao.go
│   │   ├── db.go
│   │   ├── mc.cache.go
│   │   ├── mc.go
│   │   └── redis.go
│   ├── di                  # 依賴注入層 采用wire靜態(tài)分析依賴
│   │   ├── app.go
│   │   ├── wire.go         # wire 聲明
│   │   └── wire_gen.go     # go generate 生成的代碼
│   ├── model               # model層,用于聲明業(yè)務(wù)結(jié)構(gòu)體
│   │   └── model.go
│   ├── server              # server層,用于初始化grpc和http server
│   │   ├── grpc            # grpc層,用于初始化grpc server和定義method
│   │   │   └── server.go
│   │   └── http            # http層,用于初始化http server和聲明handler
│   │       └── server.go
│   └── service             # service層,用于業(yè)務(wù)邏輯處理,且為方便http和grpc共用方法,建議入?yún)⒑统鰠⒈3謌rpc風(fēng)格,且使用pb文件生成代碼
│       └── service.go
└── test                    # 測(cè)試資源層 用于存放測(cè)試相關(guān)資源數(shù)據(jù) 如docker-compose配置 數(shù)據(jù)庫初始化語句等
    └── docker-compose.yaml

乍一看一臉蒙比,雖然官方的demo,進(jìn)到cmd目錄,執(zhí)行

go run main -config ../configs/

demo就可以跑起來了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容