KratosGo 微服務(wù)框架
Kratos 是 bilibili 開源的一套 Go 微服務(wù)框架,包含大量微服務(wù)相關(guān)框架及工具。
名字來源于:《戰(zhàn)神》游戲以希臘神話為背景,講述由凡人成為戰(zhàn)神的奎托斯(Kratos)成為戰(zhàn)神并展開弒神屠殺的冒險歷程。
Goals
我們致力于提供完整的微服務(wù)研發(fā)體驗,整合相關(guān)框架及工具后,微服務(wù)治理相關(guān)部分可對整體業(yè)務(wù)開發(fā)周期無感,從而更加聚焦于業(yè)務(wù)交付。對每位開發(fā)者而言,整套Kratos框架也是不錯的學(xué)習(xí)倉庫,可以了解和參考到bilibili在微服務(wù)方面的技術(shù)積累和經(jīng)驗。
Features
- APIs:協(xié)議通信以 HTTP/gRPC 為基礎(chǔ),通過 Protobuf 進行定義;
- Errors:通過 Protobuf 的 Enum 作為錯誤碼定義,以及工具生成判定接口;
- Metadata:在協(xié)議通信 HTTP/gRPC 中,通過 Middleware 規(guī)范化服務(wù)元信息傳遞;
- Config:支持多數(shù)據(jù)源方式,進行配置合并鋪平,通過 Atomic 方式支持動態(tài)配置;
- Logger:標準日志接口,可方便集成三方 log 庫,并可通過 fluentd 收集日志;
- Metrics:統(tǒng)一指標接口,可以實現(xiàn)各種指標系統(tǒng),默認集成 Prometheus;
- Tracing:遵循 OpenTelemetry 規(guī)范定義,以實現(xiàn)微服務(wù)鏈路追蹤;
- Encoding:支持 Accept 和 Content-Type 進行自動選擇內(nèi)容編碼;
- Transport:通用的 HTTP/gRPC 傳輸層,實現(xiàn)統(tǒng)一的 Middleware 插件支持;
- Registry:實現(xiàn)統(tǒng)一注冊中心接口,可插件化對接各種注冊中心;
Architecture
Quick start
Requirments
Go version>=1.12 and GO111MODULE=on
Installation
go get -u github.com/bilibili/kratos/tool/kratos cd $GOPATH/src kratos new kratos-demo
通過 kratos new 會快速生成基于kratos庫的腳手架代碼,如生成 kratos-demo
Build & Run
cd kratos-demo/cmd go build ./cmd -conf ../configs
打開瀏覽器訪問:http://localhost:8000/kratos-demo/start,你會看到輸出了Golang 大法好 !!!
評論
圖片
表情
