我尝试检查是否有一种方法可以在假设客户端和 ServiceN 之间的合约兼容且相同的情况下减少服务之间的跳数。 在这种情况下,“客户端”不被视为外部方,而是后端解决方案的一部分。
我通常看到的流程:
请求:客户端->服务1->服务2->...->服务N
响应:ServiceN -> ... -> Service2 -> Service1 -> Client
我正在寻找的是这个:
要求: 客户端 -> 服务 1 -> 服务 2 -> ... -> 服务 N
响应:ServiceN -> 客户端
或者换句话说,我想减少响应中的网络跳数,在这种情况下,它只是将相同的答案从 ServiceN 一直中继到 Client。
我可以通过 gRPC 中的一些配置来实现这一点还是不可能?
感谢您的任何反馈:-)
这本质上是不可能的。
gRPC 是一种远程过程调用机制和请求-响应机制。
所以,在你的流程中,你...
要求:
Client client --> Service1 server
...
Service(N-1) client --> ServiceN server
回应:
ServiceN server --> Service(N-1) client
...
Service1 server --> Client client
ServiceN
服务器直接向Client
发送消息的唯一方法是ServiceN
客户端(!)调用Client
服务器上的方法(!),这需要传入请求(!)包括 Client
服务器的端点,即
请求(!):
ServerN client --> Client server
这增加了复杂性,不仅在不寻常的流程中,而且在您的系统中,您需要能够将原始客户端请求与其配套服务器收到的请求(!)协调起来。