Grpc服务器扩展(双向无限流)

时间:2017-11-13 11:29:55

标签: python python-2.7 python-3.x kubernetes grpc

我们正在python中构建一个grpc服务,它具有双向流端点和一元端点。

我们希望流永远存在,因此我们没有超时和流正常工作,我们正在使用kubernates和docker进行部署。

但我们面临着扩展服务,如何扩展无限流式grpc服务器的问题,我们无法根据大量请求进行扩展,但只有一个请求,数据作为帧发送。

我们如何扩展此服务?现在在工作线程池中,最大线程为100。

一个快速的解决方案是根据CPU负载和内存使用情况为最大工作线程提供更高的数量和规模。

有没有更好的方法呢。

1 个答案:

答案 0 :(得分:3)

现在我们没有一个好的答案:在我们意识到&#34之前,每个RPC的线程假设很早就被深入到gRPC Python中,只是保持一个开放的连接以防万一任何一方都有话要说#34;长寿命的RPC是一个用例。

我们正在研究更好的解决方案,但他们可能还会有一段时间。

增加工作线程数肯定听起来像是正确的答案。我很好奇听到它是如何工作的,因为你的线程大部分时间都是空闲的(对吧?)。

可能尝试可能运行良好的选项是设计一个实现futures.ThreadPoolExecutor接口的对象,但实际上做了一些复杂的内部多路复用以服务更多的RPC。这是an idea that I've had on my mind for a while但我们还没有去测试自己。