【问题标题】:Using Spring Cloud to implement a Global Lock使用 Spring Cloud 实现全局锁
【发布时间】:2015-07-17 16:59:54
【问题描述】:

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

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

我想过很多不同的解决方案,但基本上都归结为某种分布式服务锁定。 Spring cloud 声称有某种“全局锁”,但是,我没有看到任何真实的描述或实现示例。我对任何其他解决方案持开放态度(Apache Zookeeper 除外)。

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

【问题讨论】:

    标签: java distributed-computing spring-cloud


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我们还没有发布任何东西,但是您可以关注https://github.com/spring-cloud/spring-cloud-cluster 的进展,它具有使用各种技术实现的锁的概念。

      【讨论】:

      • 谢谢...我会去看看
      猜你喜欢
      • 1970-01-01
      • 2018-03-28
      • 2015-09-04
      • 1970-01-01
      • 2012-05-09
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      相关资源
      最近更新 更多