微服务和作为中间件的Kafka之间的相互通信如何发生?

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

[如果一个微服务失败并且没有运行,而其他微服务正在调用没有响应的相同微服务。在这种情况下会发生什么?

apache-kafka microservices
2个回答
0
投票

其他微服务调用相同的微服务

如果您有互相调用的服务,那听起来就好像他们在使用Kafka。

[如果您有发送到Kafka的应用程序,则这些消息将保留在代理日志中。只要消息(可配置)保留在Kafka集群中,任何下游使用者都可以保持脱机状态。

最终,当使用Kafka(任何持久性消息队列)时,服务彼此之间并不了解,而仅与代理有关。


0
投票

您应尽可能避免在微服务架构中进行耦合。

在您的情况下,我想您正在向微服务发送只读请求以获取数据,但称为微服务未启动。因此,调用者微服务无法完成其工作。

为了避免这种情况,您可以使用数据复制技术。在这种技术中,微服务是数据的源,它使用诸如Kafka之类的代理将有关数据的信息作为事件发送插入,更新,删除。然后其他也需要此数据的微服务从相应的主题获取数据。通过这种方式,您无需发出只读请求即可获取数据。然后,您将避免微服务之间的耦合。

在那种情况下会发生什么?

在这种情况下,如果没有微服务的冗余被调用。然后,调用者微服务将收到一个异常,例如“无实例可用于CalledMicroservice”

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