Kratos是一款輕量級Go微服務框架,名字來源于:《戰(zhàn)神》游戲以希臘神話為背景。這款框架包含大量微服務相關框架及工具,可以有效的解決Gin在微服務場景下的一些適配和微服務本身的一系列生態(tài),歡迎有需要的用戶前來獲取!
功能
APIs:協(xié)議通信以 HTTP/gRPC 為基礎,通過 Protobuf 進行定義;
Errors:通過 Protobuf 的 Enum 作為錯誤碼定義,以及工具生成判定接口;
Metadata:在協(xié)議通信 HTTP/gRPC 中,通過 Middleware 規(guī)范化服務元信息傳遞;
Config:支持多數(shù)據(jù)源方式,進行配置合并鋪平,通過 Atomic 方式支持動態(tài)配置;
Logger:標準日志接口,可方便集成三方 log 庫,并可通過 fluentd 收集日志;
Metrics:統(tǒng)一指標接口,可以實現(xiàn)各種指標系統(tǒng),默認集成 Prometheus;
Tracing:遵循 OpenTelemetry 規(guī)范定義,以實現(xiàn)微服務鏈路追蹤;
Encoding:支持 Accept 和 Content-Type 進行自動選擇內(nèi)容編碼;
Transport:通用的 HTTP/gRPC 傳輸層,實現(xiàn)統(tǒng)一的 Middleware 插件支持;
Registry:實現(xiàn)統(tǒng)一注冊中心接口,可插件化對接各種注冊中心;
特色
簡易:不過多設計方案,編碼樸實簡易;
通用性:通用性業(yè)務流程開發(fā)設計所須要的基礎庫的作用;
高效率:提升業(yè)務流程迭代更新的高效率;
平穩(wěn):基礎庫可檢測性強,普及率高,有線上實踐活動可以信賴;
健碩:根據(jù)較好的基礎庫設計方案,降低錯用;
高性能:性能高,但不特殊為了更好地性能做hack提升,引入unsafe;
擴展性:優(yōu)良的接口設計,來拓展完成,或是根據(jù)增加基礎庫文件目錄來拓展作用;
容錯性:為不成功設計方案,很多引入對SRE的了解,可擴展性高;
工具鏈:包括很多工具鏈,例如cache代碼轉化成,lint工具這些;