如果微服务由于以下任何原因而没有响应,我们如何确保整个应用程序的可用性?
答案 0 :(得分:0)
其他调用相同微服务的微服务
如果您有互相调用的服务,那么听起来好像他们在使用Kafka。
如果您有发送到Kafka的应用程序,则这些消息将保留在代理日志中。只要消息(可配置)保留在Kafka集群中,任何下游使用者都可以保持脱机状态。
最终,当使用Kafka(任何持久性消息队列)时,服务彼此之间并不了解,而仅与代理有关。
答案 1 :(得分:0)
您应尽可能避免在微服务架构中进行耦合。
在您的情况下,我想您正在向微服务发送只读请求以获取数据,但称为微服务未启动。因此,调用者微服务无法完成其工作。
为避免这种情况,可以使用数据复制技术。在这种技术中,微服务是数据的源,使用诸如Kafka之类的代理将插入,更新,删除有关数据的信息作为事件。然后其他也需要此数据的微服务从相应的主题获取数据。通过这种方式,您无需发出只读请求即可获取数据。然后,您将避免微服务之间的耦合。
在这种情况下会发生什么?
在这种情况下,如果没有被调用的微服务冗余,则调用者微服务将得到一个异常,例如“无实例可用于CalledMicroservice”