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就可以跑起來了。