【发布时间】:2015-07-17 16:59:54
【问题描述】:
我需要实现一个序列生成服务,以便它在 n 个数据中心(虚拟机或裸机机器)中运行该服务的多个实例。以下是服务的规则,无论调用哪个服务实例(从任何数据中心):
- 所有序列都必须是唯一的
- 不能跳过序列号(即不能在 1 之前生成 2 等)
- 如果服务的一个实例出现故障(或整个数据中心),其他实例必须能够处理请求并符合前 2 条规则。
- 每天必须能够提供至少 200,000 个序列。
我想过很多不同的解决方案,但基本上都归结为某种分布式服务锁定。 Spring cloud 声称有某种“全局锁”,但是,我没有看到任何真实的描述或实现示例。我对任何其他解决方案持开放态度(Apache Zookeeper 除外)。
我玩弄了在 RabbitMQ 后面运行每个服务并让每个服务在运行时通知其他服务的想法,但这似乎不是很有效。
【问题讨论】:
标签: java distributed-computing spring-cloud