本文中KKX小編給大家分享的Kratos是一套輕量級Go微服務框架,內置大量微服務相關框架及工具,基于gin進行模塊化設計,可以進行代碼的高效開發,能夠解決了gin在微服務場景下的一些適配和微服務本身的一系列生態!
優勢
HTTP 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文檔;
Kratos功能
APIs:協議通信以 HTTP/gRPC 為基礎,通過 Protobuf 進行定義;
Errors:通過 Protobuf 的 Enum 作為錯誤碼定義,以及工具生成判定接口;
Metadata:在協議通信 HTTP/gRPC 中,通過 Middleware 規范化服務元信息傳遞;
Config:支持多數據源方式,進行配置合并鋪平,通過 Atomic 方式支持動態配置;
Logger:標準日志接口,可方便集成三方 log 庫,并可通過 fluentd 收集日志;
Metrics:統一指標接口,可以實現各種指標系統,默認集成 Prometheus;
Tracing:遵循 OpenTelemetry 規范定義,以實現微服務鏈路追蹤;
Encoding:支持 Accept 和 Content-Type 進行自動選擇內容編碼;
Transport:通用的 HTTP/gRPC 傳輸層,實現統一的 Middleware 插件支持;
Registry:實現統一注冊中心接口,可插件化對接各種注冊中心;
Kratos特色
簡易:不過度設計,編碼樸實簡易;
通用性:通用性業務開發所需的基礎庫的功效;
高效率:提升業務流程迭代更新效率;
平穩:基礎庫可測試性高,普及率高,有線上實踐活動可以信賴;
健碩:根據較好的基礎庫設計方案,降低誤用;
高性能:性能高,但是不特殊為了能性能做hack提升,引入unsafe;
可擴展性:較好的界面設計,來拓展完成,或者利用新增加基礎庫文件目錄來擴展功能;
可擴展性:為不成功設計方案,很多引入對SRE的認知,可擴展性高;
工具鏈:包括很多工具鏈,例如cache代碼形成,lint工具這些;