跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 一种自动配置雪花 id 算法参数的方法
未分類
15 5 月 2020

一种自动配置雪花 id 算法参数的方法

一种自动配置雪花 id 算法参数的方法

資深大佬 : Honwhy 5

id-demo

Snowflake powered by Redis or Zookeeper

简化参数配置

雪花 id 算法需要配置 dataCenterId 和 workerId,分别都是 5 位,两项加起来是 10,范围是 2 ^ 10 = 1024; 可以简化处理,两个参数简化为一个,使用下面的依赖,

        <dependency>             <groupId>com.relops</groupId>             <artifactId>snowflake</artifactId>             <version>1.1</version>         </dependency> 
int node = 0; Snowflake snowflake = new Snowflake(node); 

node 的范围建议 0~1023

解决分配 node 参数难题

在集群部署环境,多台服务器肯定是不能用同一个 node 参数的,比较简单想到的方案就是根据服务器的 ip 地址分配,不过需要首先知道所有服务器的 ip 地址,不过这样的方案是无法支持服务器扩容的,也不支持容器化部署的方式;

假设服务器数量不超过 10 个,版本迭代大约所有服务器都会重新部署,想办法让每次部署都获取新的 node,因为只要是新的就不会存在冲突,

方案 1, 使用 Redis 的 increment 原子性操作,然后对 1024 取模即为新分配的 node,想象 1024 数字环,当新部署服务器获得余数再次出现 0 时,原来其他的服务器获取的 node 要比 0 大很多,千数量级比个位数数量级的差距还是足够我们使用的;

方案 2, 使用 Zookeeper 的 SEQUENTIAL 模式创建节点,获得序列值然后也是对 1024 取模处理,基本与方案 1 相同。

demo

https://github.com/THH3/id-demo

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具