【发布时间】:2018-02-27 14:26:11
【问题描述】:
Java 服务(我们称之为门户)既是 gRPC 客户端又是服务器。它为数百万个 gRPC 客户端(服务器)提供服务,每个客户端都请求一些任务/资源。根据传入的请求,门户将找出后端服务并与其中的一个或多个对话,并将返回的响应发送给原始客户端。因此,这里的要求是:
- 原来的数百万客户端会有自己的超时时间
- 门户不应有一个线程阻塞数百万客户端(异步)。对于每个客户端对后端服务的调用(异步),它也不应该有线程阻塞。我们可以使用收到客户端调用的同一线程来调用后端服务。
- 如果原始客户端超时,门户应该能够将其传达给后端服务或终止对后端服务的特定调用。
- 如果后端服务出错,门户应该能够将其传达回调用失败的特定客户端。
所以这里的问题是:
- 我们必须在这里使用异步一元调用,对吗?
- 中间服务器(门户)如何将原始请求与后端服务的响应相匹配?
- 如果后端服务出错,中间服务器如何传播错误?
- 中间服务器如何传播截止日期?
- 如果源客户端终止,中间服务器如何取消对后端服务的请求?
【问题讨论】: