删除服务调用的网络跃点

问题描述 投票:0回答:1

我尝试检查是否有一种方法可以在假设客户端和 ServiceN 之间的合约兼容且相同的情况下减少服务之间的跳数。 在这种情况下,“客户端”不被视为外部方,而是后端解决方案的一部分。

我通常看到的流程:

请求:客户端->服务1->服务2->...->服务N

响应:ServiceN -> ... -> Service2 -> Service1 -> Client

我正在寻找的是这个:

要求: 客户端 -> 服务 1 -> 服务 2 -> ... -> 服务 N

响应:ServiceN -> 客户端

或者换句话说,我想减少响应中的网络跳数,在这种情况下,它只是将相同的答案从 ServiceN 一直中继到 Client。

我可以通过 gRPC 中的一些配置来实现这一点还是不可能?

感谢您的任何反馈:-)

grpc
1个回答
0
投票

这本质上是不可能的。

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

这增加了复杂性,不仅在不寻常的流程中,而且在您的系统中,您需要能够将原始客户端请求与其配套服务器收到的请求(!)协调起来。

© www.soinside.com 2019 - 2024. All rights reserved.