簡體   English   中英

使用Spring Cloud實施全局鎖定

[英]Using Spring Cloud to implement a Global Lock

我需要實現一個序列生成服務,以便它在n個數據中心(vm或裸機)中運行該服務的多個實例。 以下是該服務的規則,無論調用哪個服務實例(從任何數據中心):

  • 所有序列必須唯一
  • 不能跳過序列號(即不能在1之前生成2,等等)
  • 如果服務的某個實例發生故障(或整個數據中心),則其他實例必須能夠處理請求並符合前面的2條規則。
  • 必須每天能夠處理至少200,000個序列。

我考慮過很多不同的解決方案,但是基本上可以歸結為某種分布式服務鎖定。 Spring Cloud聲稱具有某種“全局鎖定”,但是,我沒有看到任何真實的描述或實現示例。 我願意接受任何其他解決方案(Apache Zookeeper除外)。

我玩弄了在RabbitMQ后面運行每個服務並讓每個服務在運行時通知其他服務的想法,但這似乎不是很有效。

我們還沒有發布任何東西,但是您可以關注https://github.com/spring-cloud/spring-cloud-cluster的進度,其中包含使用各種技術實現的鎖的概念。

看看Consul,它是一種輕量級的分布式鎖定機制,可用於像您描述的那樣通過網絡公開服務。 您仍然需要實現一種增加序列的方法,但是Consul可用於保存值並實現鎖定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM