java - 使用Spring Cloud实现一个全局锁

标签 java distributed-computing spring-cloud

我需要实现一个序列生成服务,以便它在 n 个数据中心(虚拟机或裸机机器)中运行该服务的多个实例。以下是服务的规则,无论调用哪个服务实例(来自任何数据中心):

  • 所有序列必须是唯一的
  • 不能跳过序列号(即不能在 1 之前生成 2,等等)
  • 如果服务实例(或整个数据中心)出现故障,其他实例必须能够处理请求并遵守前 2 条规则。
  • 必须能够每天提供至少 200,000 个序列。

我考虑过很多不同的解决方案,但基本上归结为某种分布式服务锁定。 Spring Cloud 声称有某种“全局锁”,但是,我没有看到任何真实的描述或实现示例。我愿意接受任何其他解决方案(Apache Zookeeper 除外)。

我考虑过在 RabbitMQ 后面运行每个服务并让每个服务在运行时通知其他服务的想法,但这似乎不是很有效。

最佳答案

看看Consul它是一种轻量级分布式锁定机制,可用于像您描述的那样通过网络公开服务。您仍然需要实现一种增加序列的方法,但 Consul 可用于保存值并实现锁定。

关于java - 使用Spring Cloud实现一个全局锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31481017/

相关文章:

java - 如何使用java 8按 'name'对对象进行分组?

performance - 什么是带宽需求?

mongodb - 在 Master - Master Configuration - 的情况下,最终一致性是否可能 -

java - 如何从 Oauth2 SSO 服务器注销

java - 由 netbeans 构建的 JAR 文件未执行

java - OpenShift在线: European Hosting

distributed-computing - 从应用程序内运行zookeeper

java - Spring Cloud : Microservice authentication works through Eureka Discovery, 但不是通过 Zuul

spring-cloud - 如何使用应用程序名称替换 ip :port about spring cloud eureka?

java - 无法使用 HtmlUnitDriver 单击 Web 元素