Warden

Summary

Warden,是用于实现微服务间通讯的框架。包含了:

  • 基于 gRPC 的 RPC 通讯实现
  • 集成了 trace、log、prom 等常用功能组件
  • 提供了服务注册和服务发现
  • 实现了服务群内的负载均衡

微服务间通讯是使用 protobuf 协议的,因此若需要微服务间通讯,需要先从定义 proto 开始。

.proto 文件

先看 kratos 提供的示例:

syntax = "proto3";

import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "google/protobuf/empty.proto";
import "google/api/annotations.proto";

package demo.service.v1;

option go_package = "api";
option (gogoproto.goproto_getters_all) = false;

service Demo {
	rpc SayHello (HelloReq) returns (.google.protobuf.Empty);
	rpc SayHelloURL(HelloReq) returns (HelloResp) {
        option (google.api.http) = {
            get:"/kratos-demo/say_hello"
        };
    };
}

message HelloReq {
	string name = 1 [(gogoproto.moretags)='form:"name" validate:"required"'];
}

message HelloResp {
    string Content = 1 [(gogoproto.jsontag) = 'content'];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

完整的语法文档请参考: https://developers.google.com/protocol-buffers/docs/proto

该 .proto 文件中,