kratos 框架对传输层进行了抽象,用户可以通过实现接口来接入实现,框架默认实现了gRPC和HTTP两种通信协议传输层。用户在实现通讯协议传输层时可以参考一下官方实现的代码。

接口抽象

server

  1. // 服务的启动和停止,用于管理服务生命周期。
  2. type Server interface {
  3. Start(context.Context) error
  4. Stop(context.Context) error
  5. }

Transporter

  1. type Transporter interface {
  2. // 代表实现的通讯协议的种类,如内置的 http grpc,也可以实现其他的类型如 mqtt,websocket
  3. Kind() Kind
  4. // 提供的服务终端地址
  5. Endpoint() string
  6. // 用于标识服务的完整方法路径
  7. // 示例: /helloworld.Greeter/SayHello
  8. Operation() string
  9. // http 的请求头或者 grpc 的元数据
  10. Header() Header
  11. }

Endpointer

  1. type Endpointer interface {
  2. // 用于实现注册到注册中心的终端地址,如果不实现这个方法则不会注册到注册中心
  3. Endpoint() (*url.URL, error)
  4. }

使用方式

使用方式将 http 或 grpc 注册到 server 中

  1. app := kratos.New(
  2. kratos.Name(Name),
  3. kratos.Server(
  4. httpSrv,
  5. ),
  6. )