框架组件

📄️ API 定义
Kratos API 与用户的通信协议,通常是 REST API 和 RPC API 作为传输层协议,而 Kratos 主要参考 Google API 指南,实现了对应通信协议支持,并且遵守了 gRPC API 使用 HTTP 映射功能进行 JSON/HTTP 的支持

📄️ 配置
Kratos 配置源可以指定多个,并且 config 会进行合并成 map[string]interface{},然后通过 Scan 或者 Value 获取值内容

📄️ 序列化
我们抽象出了Codec接口,用于统一处理请求的序列化/反序列化逻辑,您也可以实现您自己的Codec以便支持更多格式。具体源代码在encoding。

📄️ 错误处理
Kratos API 错误码可以统一通过 proto 定义业务原因,然后通过 protoc-gen-go 生成枚举定义。

📄️ 日志
Kratos 为了方便业务自适配不同的 log 接入使用,Logger 只包含了最简单的 Log 接口。当业务需要在 kratos 框架内部使用自定义的 log 的时候,只需要简单实现 Log 方法即可

📄️ 元信息传递
微服务之间通过 HTTP 和 gRPC API 进行接口交互,服务架构需要使用统一的元信息(Metadata)传输进行微服务间的传递。

📄️ 监控接口
Kratos 暴露了三种监控接口,分别是 Counter, Gauge, Observer

📄️ 服务注册与发现
Kratos Registry 接口分为两个,Registrar 为实例注册和反注册,Discovery 为服务实例列表获取

📄️ 路由与负载均衡
路由与负载均衡主要的接口是 Selector,但在同目录下也提供了一个默认的 Selector 实现,该实现可以通过替换 NodeBuilder、Filter、Balancer 来分别实现节点权重计算、路由过滤、负载均衡算法的可插拔

🗃️ 中间件

🗃️ 传输协议