首頁>技術>

Kratos

Kratos是bilibili開源的一套Go微服務框架,包含大量微服務相關框架及工具。

FeaturesHTTP Blademaster:核心基於gin進行模組化設計,簡單易用、核心足夠輕量;GRPC Warden:基於官方gRPC開發,整合discovery服務發現,並融合P2C負載均衡;Cache:優雅的介面化設計,非常方便的快取序列化,推薦結合代理模式overlord;Database:整合MySQL/HBase/TiDB,新增熔斷保護和統計支援,可快速發現數據層壓力;Config:方便易用的paladin sdk,可配合遠端配置中心,實現配置版本管理和更新;Log:類似zap的field實現高效能日誌庫,並結合log-agent實現遠端日誌管理;Trace:基於opentracing,集成了全鏈路trace支援(gRPC/HTTP/MySQL/Redis/Memcached);Kratos Tool:工具鏈,可快速生成標準專案,或者透過Protobuf生成程式碼,非常便捷使用gRPC、HTTP、swagger文件;

讀者福利:關注小編+轉發文章+私信【專案】獲取整理好的100+個Java專案影片+原始碼+筆記

快速開始

快速開始前,首先需要安裝Go環境:Go version>=1.13

CentOS Go環境搭建,Windows自行百度哈

設定代理環境變數,提高下載速度。注意GO1.13及之後支援direct的寫法

go env -w GOPROXY=https://goproxy.cn,direct

由於安裝過程中需要用到Protobuf,所以建議先安裝Protobuf

CentOS安裝ProtobufWindows安裝快速安裝
GO111MODULE=on && go get -u github.com/go-kratos/kratos/tool/kratos

Windows注意,GO111MODULE設定無效,需要單獨執行以下命令設定

go env -w GO111MODULE=on

注意:設定GO111MODULE=on後,可能IDE無法識別包內容:原因:由於設定為on後,go get命令下載的第三方包都會下載到GOPATH的pkg裡需要對IDE進行相關設定

新建demo

cd $GOPATH/src #此處GO111MODULE=on,可在任意目錄新建demokratos new mykratos

生成目錄框架結構:

├── CHANGELOG.md ├── OWNERS├── README.md├── api                     # api目錄為對外保留的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    # 應用的自定義配置檔案,可能是一些業務開關如:useABtest = true│   ├── db.toml             # db相關配置│   ├── grpc.toml           # grpc相關配置│   ├── http.toml           # http相關配置│   ├── memcache.toml       # memcache相關配置│   └── redis.toml          # redis相關配置├── go.mod├── go.sum└── internal                # internal為專案內部包,包括以下目錄:│   ├── dao                 # dao層,用於資料庫、cache、MQ、依賴某業務grpc|http等資源訪問│   │   ├── dao.bts.go│   │   ├── dao.go│   │   ├── db.go│   │   ├── mc.cache.go│   │   ├── mc.go│   │   └── redis.go│   ├── di                  # 依賴注入層 採用wire靜態分析依賴│   │   ├── app.go│   │   ├── wire.go         # wire 宣告│   │   └── wire_gen.go     # go generate 生成的程式碼│   ├── model               # model層,用於宣告業務結構體│   │   └── model.go│   ├── server              # server層,用於初始化grpc和http server│   │   ├── grpc            # grpc層,用於初始化grpc server和定義method│   │   │   └── server.go│   │   └── http            # http層,用於初始化http server和宣告handler│   │       └── server.go│   └── service             # service層,用於業務邏輯處理,且為方便http和grpc共用方法,建議入參和出參保持grpc風格,且使用pb檔案生成程式碼│       └── service.go└── test                    # 測試資源層 用於存放測試相關資源資料 如docker-compose配置 資料庫初始化語句等    └── docker-compose.yaml

執行示例:

cd mykratos/cmdgo build./cmd -conf ../configs

開啟瀏覽器訪問:

http://localhost:8000/mykratos/start

你會看到輸出了Golang 大法好 !!!

如果你修改了demo的名字,訪問地址也要跟著修改,例如專案名:mydemo

http://localhost:8000/mydemo/start

除了使用go build執行示例外,你還可以使用以下命令

kratos run
kratos工具包

kratos包含了一批好用的工具集,比如專案一鍵生成、基於proto生成http&grpc程式碼,生成快取回原始碼,生成memcache執行程式碼,生成swagger文件等。

執行以下命令,即可快速安裝好kratos工具

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

安裝所有工具包

kratos tool install all
kratos本體

kratos是所有工具集的本體,就像go一樣,擁有執行各種子工具的能力,如go build和go tool。先讓我們看看-h的輸出:

NAME:   kratos - kratos toolUSAGE:   kratos [global options] command [command options] [arguments...]VERSION:   0.0.1COMMANDS:     new, n        create new project     build, b      kratos build     run, r        kratos run     tool, t       kratos tool     version, v    kratos version     self-upgrade  kratos self-upgrade     help, h       Shows a list of commands or help for one commandGLOBAL OPTIONS:   --help, -h     show help   --version, -v  print the version123456789101112131415161718192021

可以看到kratos有如:new build run tool等在內的COMMANDS。

工具包使用

kratos new

kratos new是快速建立一個專案的命令,執行如下:

kratos new kratos-demo

即可快速在當前目錄生成一個叫kratos-demo的專案。此外還支援指定owner和path,如下:

kratos new kratos-demo -o YourName -d YourPath

注意,kratos new預設會生成透過 protobuf 定義的grpc和bm示例程式碼的,如只生成bm請加–http,如下:

kratos new kratos-demo -o YourName -d YourPath --http

如只生成grpc請加–grpc,如下:

kratos new kratos-demo -o YourName -d YourPath --grpc

特別注意,如果不是MacOS系統,需要自己進行手動安裝protoc,用於生成的示例專案api目錄下的proto檔案並不會自動生成對應的.pb.go和.bm.go檔案。

也可以參考以下說明進行生成:protoc說明

kratos build & run

kratos build和kratos run是go build和go run的封裝,可以在當前專案任意目錄進行快速執行進行除錯,並無特別用途。

kratos tool

kratos tool是基於proto生成http&grpc程式碼,生成快取回原始碼,生成memcache執行程式碼,生成swagger文件等工具集,先看下的執行效果:

kratos toolprotoc(已安裝): 快速方便生成pb.go的protoc封裝,windows、Linux請先安裝protoc工具 Author(kratos) [2019/10/31]genbts(已安裝): 快取回源邏輯程式碼生成器 Author(kratos) [2019/10/31]testcli(已安裝): 測試程式碼生成 Author(kratos) [2019/09/09]genmc(已安裝): mc快取程式碼生成 Author(kratos) [2019/07/23]swagger(已安裝): swagger api文件 Author(goswagger.io) [2019/05/05]

安裝工具: kratos tool install demo執行工具: kratos tool demo安裝全部工具: kratos tool install all全部升級: kratos tool upgrade all

小小說明:如未安裝工具,第一次執行也可自動安裝,不需要特別執行install

目前已經整合的工具有:

kratos 為本體工具,只用於安裝更新使用;protoc 用於快速生成gRPC、HTTP、Swagger檔案,該命令Windows,Linux使用者需要手動安裝 protobuf工具;swagger 用於顯示自動生成的HTTP API介面文件,透過 kratos tool swagger serveapi/api.swagger.json 可以檢視文件;genmc 用於自動生成memcached快取程式碼;genbts 用於生成快取回原始碼生成,如果miss則呼叫回源函式從資料來源獲取,然後塞入快取;

作者:IM魂影

原文:https://imsoul.blog.csdn.net/article/details/108393770

15
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 微服務架構--註冊中心服務Nacos叢集搭建