我们正在开发一个 REST 服务 (2),充当黑盒 客户端 (1) 和黑盒 处理器微服务 (4) 之间的适配器。
(2) 和 (4) 使用 Kafka (3)
相互通信所有组件都是无状态的(除了 Kafka,对吧?)
首先,Client使用http POST(同步)向REST服务发起命令,然后REST服务接受该命令并通过Kafka(异步)将其转发到处理器ms(在进行一些转换之后) 。 在此步骤之后,REST服务将休眠(此http范围)并等待来自处理器ms
的结果然后 Processor ms 处理此命令,并通过 Kafka(异步)将结果发送回 REST 服务。 REST 服务 唤醒,并将 ResponseEntity 返回到同一 http 范围内的 Client。
现在我们决定将 (2) 迁移到微服务以利用此架构。问题出现了:(2)的实例1向(4)发送命令,(4)将结果发送给实例2。但是(1)和实例1之间建立了http会话,实例2无法返回( 1)。此返回必须由且仅由实例 1 完成。
我的第一个想法是,例如,让实例1知道(4)的结果,无论它被发送到哪个实例。但目前我们还没有解决方案来归档这个想法。
我们需要针对此架构的“非解决方案”解决方案。请帮忙。谢谢你
注意:我们无法更改黑盒组件
就我个人而言,我会: