将故障切换添加到Java microservice

将故障切换添加到Java microservice,java,microservices,failover,Java,Microservices,Failover,我有一个JavaMiroservice,它将作为多个服务实例部署。微服务以一种简单的方式无状态工作:根据预定义的标准从数据库中获取请求,处理请求,获取下一个并处理它,等等。 现在我考虑向服务添加故障转移。如果请求由某个实例处理,我可能需要向请求中添加额外的信息(如processor_id)。因此,如果在没有响应的情况下确定实例,则该请求可以由其他实例执行。我还需要向微服务添加心跳信号。也许我可以利用Apache Zookeeper或策展人来实现这一点。 但我不知道如何让不同的部分一起工作。如果有

我有一个JavaMiroservice,它将作为多个服务实例部署。微服务以一种简单的方式无状态工作:根据预定义的标准从数据库中获取请求,处理请求,获取下一个并处理它,等等。 现在我考虑向服务添加故障转移。如果请求由某个实例处理,我可能需要向请求中添加额外的信息(如processor_id)。因此,如果在没有响应的情况下确定实例,则该请求可以由其他实例执行。我还需要向微服务添加心跳信号。也许我可以利用Apache Zookeeper或策展人来实现这一点。
但我不知道如何让不同的部分一起工作。如果有Java的例子就更好了。

我在职业生涯中看到的是,有一个负载平衡器可以跨微服务分发请求。负载平衡器知道调用返回http状态的状态端点的微服务的可用性。如果没有响应,或者响应为负,则负载平衡器会将微服务从组中排除。

如何自定义对负载平衡器的响应?事实上,在我的情况下,我可能不需要负载平衡器来分发请求,因为每个实例将永远获取一个请求,有时会竞争同一个请求。我不明白“因为每个实例将永远获取一个请求,有时会竞争同一个请求”是什么意思。您的客户端需要在给定的地址访问您的微服务,假设www.myapp.com/my/end/point在该地址,负载平衡器应该在内部将请求重定向到部署微服务的节点之一。我没有说清楚。微服务有两个公共接口:sumit和query。这两种实现都非常简单:对于提交,只需将请求添加到数据库;对于查询,只需从数据库查询结果。服务中的大多数工作都是请求处理,这不是公共的。当然,我需要为两个公共接口使用loadbalancer。在我之前的评论中,我的意思是我不知道如何将loadbalancer用于请求处理部分,事实上,处理器从DB获取请求条目并进行处理,然后重复下一个处理。每个部署的实例都以相同的方式工作。因此,请求可以分布式处理。现在我想为微服务添加故障切换功能。我正在考虑使用ApacheCurator/Zookeeper来注册和发现服务。