Kratos是一套輕量級(jí)Go微服務(wù)框架,包含大量微服務(wù)相關(guān)框架及工具,解決了gin在微服務(wù)場(chǎng)景下的一些適配和微服務(wù)本身的一系列生態(tài)!
軟件特色
簡(jiǎn)單:不過度設(shè)計(jì),代碼平實(shí)簡(jiǎn)單;
通用:通用業(yè)務(wù)開發(fā)所需要的基礎(chǔ)庫(kù)的功能;
高效:提高業(yè)務(wù)迭代的效率;
穩(wěn)定:基礎(chǔ)庫(kù)可測(cè)試性高,覆蓋率高,有線上實(shí)踐安全可靠;
健壯:通過良好的基礎(chǔ)庫(kù)設(shè)計(jì),減少錯(cuò)用;
高性能:性能高,但不特定為了性能做 hack 優(yōu)化,引入 unsafe ;
擴(kuò)展性:良好的接口設(shè)計(jì),來擴(kuò)展實(shí)現(xiàn),或者通過新增基礎(chǔ)庫(kù)目錄來擴(kuò)展功能;
容錯(cuò)性:為失敗設(shè)計(jì),大量引入對(duì) SRE 的理解,魯棒性高;
工具鏈:包含大量工具鏈,比如 cache 代碼生成,lint 工具等等;
功能介紹
APIs:協(xié)議通信以 HTTP/gRPC 為基礎(chǔ),通過 Protobuf 進(jìn)行定義;
Errors:通過 Protobuf 的 Enum 作為錯(cuò)誤碼定義,以及工具生成判定接口;
Metadata:在協(xié)議通信 HTTP/gRPC 中,通過 Middleware 規(guī)范化服務(wù)元信息傳遞;
Config:支持多數(shù)據(jù)源方式,進(jìn)行配置合并鋪平,通過 Atomic 方式支持動(dòng)態(tài)配置;
Logger:標(biāo)準(zhǔn)日志接口,可方便集成三方 log 庫(kù),并可通過 fluentd 收集日志;
Metrics:統(tǒng)一指標(biāo)接口,可以實(shí)現(xiàn)各種指標(biāo)系統(tǒng),默認(rèn)集成 Prometheus;
Tracing:遵循 OpenTelemetry 規(guī)范定義,以實(shí)現(xiàn)微服務(wù)鏈路追蹤;
Encoding:支持 Accept 和 Content-Type 進(jìn)行自動(dòng)選擇內(nèi)容編碼;
Transport:通用的 HTTP/gRPC 傳輸層,實(shí)現(xiàn)統(tǒng)一的 Middleware 插件支持;
Registry:實(shí)現(xiàn)統(tǒng)一注冊(cè)中心接口,可插件化對(duì)接各種注冊(cè)中心;