【问题标题】:Add failover to Java microservice向 Java 微服务添加故障转移
【发布时间】:2018-05-08 05:48:21
【问题描述】:

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

【问题讨论】:

    标签: java microservices failover


    【解决方案1】:

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

    【讨论】:

    • 如何自定义对负载均衡器的响应?
    • 事实上,就我而言,我可能不需要负载均衡器来分发请求,因为每个实例都会永远获取一个请求,有时还会竞争同一个请求。
    • 我不明白你的意思是“因为每个实例都会永远获取一个请求,有时会竞争同一个请求。”,你的客户需要在给定的地址访问你的微服务,比如说www.myapp.com/my/end/point 在该地址,负载均衡器应在内部将请求重定向到部署微服务的节点之一。
    • 我没有说清楚。微服务有两个公共接口:smit 和 query。两种实现都非常简单:提交,只需向数据库添加请求;对于查询,只需从数据库中查询结果。服务中的大部分工作都是请求处理,不公开。当然,我需要为两个公共接口使用负载均衡器。
    • 在我之前的评论中,我的意思是我不知道如何将负载均衡器用于请求处理部分,实际上处理器从数据库中获取请求条目并对其进行处理,然后重复处理下一个。每个部署的实例都以相同的方式工作。因此可以分布式处理请求。现在我想为微服务添加故障转移功能。我正在考虑使用 Apache Curator/Zookeeper 来注册和发现服务。
    猜你喜欢
    • 2015-06-05
    • 2010-11-06
    • 2021-02-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 2019-07-05
    相关资源
    最近更新 更多