grpc活跃客户/频道的数量

时间:2016-12-24 08:06:58

标签: grpc

我正在实现一个简单的grpc服务发现。我想做的一件事就是跟踪服务当前有多少客户端,服务会将其报告给服务注册表。 grpc服务器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;
}

修改

我发现可以拦截每个传入的rpc调用。这样我可以报告最后一秒中传入连接的数量。我想它可以作为工作量的代理。

1 个答案:

答案 0 :(得分:4)

ServerBuilderaddTransportFilter(),允许您安装ServerTransportFilter,在创建和终止连接(即传输)时会收到通知。

相关问题