grpc 活跃客户端/通道数量

2024-06-18

我正在实现一个简单的 grpc 服务发现。我想做的一件事是跟踪当前有多少客户端使用该服务,并且该服务会将其报告给服务注册表。 grpc server api 是否提供此类信息?我在这里遇到了一个有点类似的问题。https://github.com/grpc/grpc-java/issues/779 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;
}

edit

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


ServerBuilder has a addTransportFilter(),它允许您安装ServerTransportFilter,当连接(即传输)创建和终止时您会收到通知。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

grpc 活跃客户端/通道数量 的相关文章

随机推荐