使用Spring Cloud实现全局锁定

时间:2015-07-17 16:59:54

标签: java distributed-computing spring-cloud

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

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

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

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

2 个答案:

答案 0 :(得分:2)

我们尚未发布任何内容,但您可以关注https://github.com/spring-cloud/spring-cloud-cluster的进展情况,其中包含使用各种技术实施锁定的概念。

答案 1 :(得分:1)

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