本文中KKX小編給大家分享的Kratos是一套輕量級(jí)Go微服務(wù)框架,內(nèi)置大量微服務(wù)相關(guān)框架及工具,基于gin進(jìn)行模塊化設(shè)計(jì),可以進(jìn)行代碼的高效開(kāi)發(fā),能夠解決了gin在微服務(wù)場(chǎng)景下的一些適配和微服務(wù)本身的一系列生態(tài)!
優(yōu)勢(shì)
HTTP Blademaster:核心基于gin進(jìn)行模塊化設(shè)計(jì),簡(jiǎn)單易用、核心足夠輕量;
GRPC Warden:基于官方gRPC開(kāi)發(fā),集成discovery服務(wù)發(fā)現(xiàn),并融合P2C負(fù)載均衡;
Cache:優(yōu)雅的接口化設(shè)計(jì),非常方便的緩存序列化,推薦結(jié)合代理模式overlord;
Database:集成MySQL/HBase/TiDB,添加熔斷保護(hù)和統(tǒng)計(jì)支持,可快速發(fā)現(xiàn)數(shù)據(jù)層壓力;
Config:方便易用的paladin sdk,可配合遠(yuǎn)程配置中心,實(shí)現(xiàn)配置版本管理和更新;
Log:類似zap的field實(shí)現(xiàn)高性能日志庫(kù),并結(jié)合log-agent實(shí)現(xiàn)遠(yuǎn)程日志管理;
Trace:基于opentracing,集成了全鏈路trace支持(gRPC/HTTP/MySQL/Redis/Memcached);
Kratos Tool:工具鏈,可快速生成標(biāo)準(zhǔn)項(xiàng)目,或者通過(guò)Protobuf生成代碼,非常便捷使用gRPC、HTTP、swagger文檔;
Kratos功能
APIs:協(xié)議通信以 HTTP/gRPC 為基礎(chǔ),通過(guò) Protobuf 進(jìn)行定義;
Errors:通過(guò) Protobuf 的 Enum 作為錯(cuò)誤碼定義,以及工具生成判定接口;
Metadata:在協(xié)議通信 HTTP/gRPC 中,通過(guò) Middleware 規(guī)范化服務(wù)元信息傳遞;
Config:支持多數(shù)據(jù)源方式,進(jìn)行配置合并鋪平,通過(guò) Atomic 方式支持動(dòng)態(tài)配置;
Logger:標(biāo)準(zhǔn)日志接口,可方便集成三方 log 庫(kù),并可通過(guò) 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è)中心;
Kratos特色
簡(jiǎn)易:不過(guò)度設(shè)計(jì),編碼樸實(shí)簡(jiǎn)易;
通用性:通用性業(yè)務(wù)開(kāi)發(fā)所需的基礎(chǔ)庫(kù)的功效;
高效率:提升業(yè)務(wù)流程迭代更新效率;
平穩(wěn):基礎(chǔ)庫(kù)可測(cè)試性高,普及率高,有線上實(shí)踐活動(dòng)可以信賴;
健碩:根據(jù)較好的基礎(chǔ)庫(kù)設(shè)計(jì)方案,降低誤用;
高性能:性能高,但是不特殊為了能性能做hack提升,引入unsafe;
可擴(kuò)展性:較好的界面設(shè)計(jì),來(lái)拓展完成,或者利用新增加基礎(chǔ)庫(kù)文件目錄來(lái)擴(kuò)展功能;
可擴(kuò)展性:為不成功設(shè)計(jì)方案,很多引入對(duì)SRE的認(rèn)知,可擴(kuò)展性高;
工具鏈:包括很多工具鏈,例如cache代碼形成,lint工具這些;