我正在实现一个grpc服务器(运行中),如果我的服务器已经在服务(目前)设置的最大数量的RPC,我需要用某种服务器繁忙/不可用消息进行响应。
我之前已经用grpc-python实现了grpc服务器,在此我通过结合maximum_concurrent_rpcs
和threadpool
中的最大线程数来实现这一点。我正在grpc-go中寻找类似的东西。我能找到的最接近的服务器设置可以通过调用MaxConcurrentStreams
返回的ServerOptions来设置。我的应用程序仅支持unary RPCs
,但不确定此设置是否适用。
我只是想强制执行/设置服务器可以处理的最大活动并发请求数。设置maxConcurrentStreams
会起作用还是我应该在代码本身中考虑做到这一点(我已经完成了一些基本的实现,但是我宁愿使用grpc-go提供的功能)?
答案 0 :(得分:0)
我以前从未使用过MaxConcurrentStreams
,因为对于高负载服务,您通常希望从硬件中获得最大收益,而且这种限制似乎没有道理。使用此设置也许可以实现您的目标,但是您需要研究一下,实现MaxConcurrentStreams
时会返回哪种错误。我认为这应该是GRPC
的传输错误,而不是您自己的错误,因此您将无法控制错误消息和代码。