REST 微服务怎么可能与另一个混合的微服务通信,这意味着他可以与 REST 和消息队列进行通信。例如 API 网关。对于外部世界,他可以通过 REST 与 App、手机进行通信,但来自后端的通信是通过消息队列进行的。
用例:
我的主页想从数据库中获取一辆 Vehicle。他通过 GET-Request 请求 API-Gateway。API 网关接受 GET 请求并将其发布到消息队列中。另一个微服务接收消息并发布结果。然后 API 网关使用结果并将其作为响应发送回来。
我该如何实施?我是否将 Spring Boot 与 Apache Kafka 一起使用?我需要实现异步通信吗?
有一些方法可以解决这种情况。
您可以为每个客户端请求创建主题并等待另一端的回复,例如,DriverService 将读取请求消息,获取您的所有数据并将其发布到您的客户端请求主题。一旦您使用响应消息,您就会销毁该主题。
但是在请求-响应交互中删除“临时”主题可能需要很长时间(如果没有配置避免这种情况,例如 delete.topic.enable 属性),您需要监视可能的主题过度增长。
Websocket 是另一种可能的解决方案。您的客户端将开始侦听先前与您的服务器达成一致的特定主题,然后在特定超时时间内您将等待响应,当您的 DriverService 将发布到该特定套接字通道时。
Spring Boot 为您提供了很好的 Kafka 和 Websockets 入门。如果您期望有大量交易,我会采用混合策略,使用 Kafka 帮助我的后端扩展和处理所有交易,然后通过 Websocket 响应客户端。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句