2019-09-09 18:57:57 +03:00
|
|
|
syntax = "proto3";
|
|
|
|
|
|
|
|
package go.micro.registry;
|
|
|
|
|
|
|
|
service Registry {
|
|
|
|
rpc GetService(GetRequest) returns (GetResponse) {};
|
|
|
|
rpc Register(Service) returns (EmptyResponse) {};
|
|
|
|
rpc Deregister(Service) returns (EmptyResponse) {};
|
|
|
|
rpc ListServices(ListRequest) returns (ListResponse) {};
|
|
|
|
rpc Watch(WatchRequest) returns (stream Result) {};
|
2019-09-23 23:08:31 +03:00
|
|
|
rpc Sync(SyncRequest) returns (SyncResponse) {};
|
2019-09-09 18:57:57 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
// Service represents a go-micro service
|
|
|
|
message Service {
|
|
|
|
string name = 1;
|
|
|
|
string version = 2;
|
|
|
|
map<string,string> metadata = 3;
|
|
|
|
repeated Endpoint endpoints = 4;
|
|
|
|
repeated Node nodes = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Node represents the node the service is on
|
|
|
|
message Node {
|
|
|
|
string id = 1;
|
|
|
|
string address = 2;
|
|
|
|
int64 port = 3;
|
|
|
|
map<string,string> metadata = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Endpoint is a endpoint provided by a service
|
|
|
|
message Endpoint {
|
|
|
|
string name = 1;
|
|
|
|
Value request = 2;
|
|
|
|
Value response = 3;
|
|
|
|
map<string, string> metadata = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Value is an opaque value for a request or response
|
|
|
|
message Value {
|
|
|
|
string name = 1;
|
|
|
|
string type = 2;
|
|
|
|
repeated Value values = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Result is returns by the watcher
|
|
|
|
message Result {
|
|
|
|
string action = 1; // create, update, delete
|
|
|
|
Service service = 2;
|
|
|
|
int64 timestamp = 3; // unix timestamp
|
|
|
|
}
|
|
|
|
|
|
|
|
message EmptyResponse {}
|
|
|
|
|
|
|
|
message GetRequest {
|
|
|
|
string service = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message GetResponse {
|
|
|
|
repeated Service services = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListRequest {
|
|
|
|
// TODO: filtering
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListResponse {
|
|
|
|
repeated Service services = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message WatchRequest {
|
|
|
|
// service is optional
|
|
|
|
string service = 1;
|
|
|
|
}
|
2019-09-23 19:25:15 +03:00
|
|
|
|
2019-09-23 23:08:31 +03:00
|
|
|
// SyncRequest to request registry sync
|
|
|
|
message SyncRequest {}
|
|
|
|
|
|
|
|
message SyncResponse {
|
|
|
|
repeated Service services = 1;
|
|
|
|
}
|
|
|
|
|
2019-09-23 19:25:15 +03:00
|
|
|
// EventType defines the type of event
|
|
|
|
enum EventType {
|
|
|
|
Create = 0;
|
|
|
|
Delete = 1;
|
|
|
|
Update = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Event is registry event
|
|
|
|
message Event {
|
|
|
|
// Event Id
|
|
|
|
string id = 1;
|
|
|
|
// type of event
|
|
|
|
EventType type = 2;
|
|
|
|
// unix timestamp of event
|
|
|
|
int64 timestamp = 3;
|
|
|
|
// service entry
|
|
|
|
Service service = 4;
|
|
|
|
}
|