集群微服务组件

Clustering Microservices Components

我有一个微服务,它实现为基于 Play 框架的 HTTP 服务。我们现在希望通过让另一个实例在一个实例出现故障时接收请求来为该服务添加容错能力。现在我明白微服务并不是从头开始设计成集群的,因为它们是纯粹的无状态、自我维持的组件,旨在简单地 运行.

有什么方法可以添加故障转移支持?我正在考虑一些检查服务状态并通过在其他主机上启动另一个实例来对故障做出反应的外部组件。有什么建议吗?

通常,有一个 discovery service 服务可以自行注册的地方。如果一个服务需要与另一个服务通信,它会在发现服务中请求这些服务的实例,并且大多数时候还有客户端负载平衡。

我还使用 Hystrix 包装 HTTP 调用来处理失败。

我不熟悉使用 Play framework 构建微服务,但在使用 Spring 时我使用过:

  • Netflix Eureka - 作为发现服务
  • Hystrix - 在服务中断时处理 HTTP 故障/超时
  • 功能区 - 客户端负载平衡

提供使用完整堆栈示例的博客系列是 this one。但是,它正在使用 Spring,但我想这两种方式都会有所帮助。