Java雪花算法生成分布式id詳解
Java雪花算法生成分布式id
隨著業(yè)務的增長,有些表可能要占用很大的物理存儲空間,為了解決該問題,后期使用數(shù)據(jù)庫分片技術。
將一個數(shù)據(jù)庫進行拆分,通過數(shù)據(jù)庫中間件連接。
如果數(shù)據(jù)庫中該表選用ID自增策略,則可能產生重復的ID,此時應該使用分布式ID生成策略來生成ID。
snowflake是Twitter開源的分布式ID生成算法,結果是一個long型的ID。
其核心思想是:使用41bit作為毫秒數(shù),10bit作為機器的ID(5個bit是數(shù)據(jù)中心,5個bit的機器ID),12bit作為毫秒內的流水號(意味著每個節(jié)點在每毫秒可以產生 4096 個 ID),最后還有一個符號位,永遠是0
mybatis-plus已經(jīng)集成了雪花算法,完成以下兩步即可在項目中集成雪花算法
第一:在實體類中的id上加入如下配置,指定類型為id_worker
@TableId(value = "id",type = IdType.ID_WORKER) private Long id;
第二:在application.yml文件中配置數(shù)據(jù)中心id和機器id
mybatis-plus: mapper-locations: classpath*:mapper/*.xml # 設置別名包掃描路徑,通過該屬性可以給包中的類注冊別名 type-aliases-package: com.heima.model.article.pojos global-config: datacenter-id: 1 workerId: 1
datacenter-id:數(shù)據(jù)中心id(取值范圍:0-31)
workerId:機器id(取值范圍:0-31)
到此這篇關于Java雪花算法生成分布式id詳解的文章就介紹到這了,更多相關Java雪花算法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot整合Elasticsearch實現(xiàn)索引和文檔的操作方法
Elasticsearch 基于 Apache Lucene 構建,采用 Java 編寫,并使用 Lucene 構建索引、提供搜索功能,本文分步驟通過綜合案例給大家分享SpringBoot整合Elasticsearch的相關知識,感興趣的朋友跟隨小編一起看看吧2021-05-05SpringBoot Test 多線程報錯的根本原因(dataSource already
在使用Springboot test進行相關測試的時候,發(fā)現(xiàn)開啟線程操作數(shù)據(jù)庫的時候異常,這篇文章主要介紹了SpringBoot Test 多線程報錯:dataSource already closed的根本原因及解決方法,需要的朋友可以參考下2022-06-06詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵
這篇文章主要介紹了詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵,有興趣的可以了解一下。2017-01-01springboot通過注解、接口創(chuàng)建定時任務詳解
使用SpringBoot創(chuàng)建定時任務其實是挺簡單的,這篇文章主要給大家介紹了關于springboot如何通過注解、接口創(chuàng)建這兩種方法實現(xiàn)定時任務的相關資料,需要的朋友可以參考下2021-07-07詳解Java中的do...while循環(huán)語句的使用方法
這篇文章主要介紹了Java中的do...while循環(huán)語句的使用方法,是Java入門學習中的基礎知識,需要的朋友可以參考下2015-10-10Spring MVC 更靈活的控制 json 返回問題(自定義過濾字段)
本篇文章主要介紹了Spring MVC 更靈活的控制 json 返回問題(自定義過濾字段),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02SpringBoot將logback替換成log4j2的操作步驟
文章介紹了如何在SpringBoot項目中將默認的日志框架logback替換為log4j2,以利用log4j2的高性能異步日志記錄特性,特別是通過Disruptor實現(xiàn)的無鎖化隊列,提高了日志處理速度,同時,文章提供了詳細的配置步驟,需要的朋友可以參考下2024-10-10