当一个或多个微服务失败时,如何确保应用程序可用性?

时间:2019-12-19 07:40:28

标签: microservices

如果微服务由于以下任何原因而没有响应,我们如何确保整个应用程序的可用性?

  1. 微服务崩溃
  2. 发生网络分区或发生其他暂时性错误
  3. 服务超载

2 个答案:

答案 0 :(得分:0)

  

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

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

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

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

答案 1 :(得分:0)

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

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

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

  

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

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