我正在实现一个简单的 grpc 服务发现。我想做的一件事是跟踪当前有多少客户端使用该服务,并且该服务将向服务注册中心报告。grpc server api 是否提供此类信息?我在这里遇到了一个有点类似的问题。https://github.com/grpc/grpc-java/issues/779。
在响应的第 1 点中,提到通过流 API 跟踪所有传入的 rpc。我该怎么做?
这是我想要实现的一个示例 rpc,RegisterInstance 将充当“pinger”,服务器将使用 etcd 的 ttl 来检查服务的活跃度。connected_client当注册中心注册了多个相同的服务类型时,注册中心将使用来确定将哪个服务 ip 发送回客户端。我的问题是如何connected_clients从服务端获取?
syntax = "proto3";
package registry_grpc;
service ServiceRegistry{
rpc GetInstance(ServiceRequest) returns(ServiceInstance) {}
rpc RegisterInstance(ServiceInstance) returns(ServiceInstance) {}
}
message ServiceRequest{
string service_type = 1;
}
message ServiceInstance{
int32 id = 1;
int32 connected_clients = 2;
string service_type = 3;
string host_address = 4;
int32 port = 5;
}
Run Code Online (Sandbox Code Playgroud)
我发现可以拦截每个传入的 rpc 调用。通过这种方式,我可以报告例如最后一秒的传入连接数。我想它可以作为工作负载的代理。
| 归档时间: |
|
| 查看次数: |
3826 次 |
| 最近记录: |