Java分布式任务

我正在构建系统,该系统应由3台服务器组成,并且所有3台服务器都将运行相同的 Java(Spring mvc)服务.

服务将能够完成3类任务,即A,B和C.

我想要的是使服务器上的每个服务在与其他服务器通信时只执行一个类别.如果一台服务器死机,其余服务器应该进行协商,其中只有一台服务器应该进行分类.

例:

>服务器1 – 服务做A

服务器2 – 服务做B

服务器3 – 服务做C
>服务器2死亡

服务器1和服务器3协商

服务器1 – 服务执行A和B.

服务器3 – 服务做C

如果服务器2返回正常状态,它应该从服务器1(A或B)中取类

是否有任何模式,架构,技术,链接可以帮助我解决这个问题?

最佳答案 Zookeeper特别适用于在分布式环境中处理这些类型的场景.通过获取锁定,将从N个服务器中选出一个主服务器.一旦主人死亡,它将导致重新选举,新主人将为客户请求服务.

另一种容易出错的选择是自己实现共享的全局分布式锁定并处理极端情况.获取锁的服务器将为客户端请求提供服务.

从zookeeper文档页面:

ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or another by distributed applications

《Java分布式任务》

您可以在zookeeper Overview页面找到更多详细信息.

点赞