統一ID服務

代碼已經修改 調用方式 爲restful請求  或者 feign請求  請參考 wiki:   http://192.168.120.46:8090/display/peixun/akucun+Guidjava

 

項目組 對接人員 採用的方式 版本 修改最後時間
訂單 賀周羣 工具類 1.0.20-SNAPSHOT 已修改,11月15日上線
支付 崔宏輝 工具類 本地 暫時不作修改
舊訂單 王碩星 工具類 1.0.20-SNAPSHOT 已修改,最遲11月20日上線
舊版會員 蔡建 zuul akucun-base-data-new 11月15日修改

 

 

guid ID 18 三個環境 算法

restful 調用方式
dev: http://192.168.120.97:8080/base/guid/31/31
test: http://172.19.1.198:8080/base/guid/31/31
prod: http://addr.infra.aikucun.com/base/guid/31/31spring

feign調用方式: sql

<dependency>
<groupId>com.akucun.base.data</groupId>
<artifactId>base-data-facade-stub</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>數據庫

調用其中的接口:  com.akucun.base.data.stub.GuidRemotesegmentfault

 

已下內容已通過期 , 供參考api

 

18位long型 ID生成算法snowflake原理:   http://www.javashuo.com/article/p-onzgjbbx-kr.html服務器

 

1) spring項目引用 akucun-common-base: restful

<dependency>     nosql

        <groupId>com.akucun</groupId>     

        <artifactId>akucun-common-base</artifactId>     

        <version>${com.akucun.cloud.base.version}</version>

</dependency> 

當前版本 :

<com.akucun.cloud.base.version>0.0.1-SNAPSHOT</com.akucun.cloud.base.version>

2) 項目中添加以下類

 

PrimaryKeyGenerater.java

3) 項目啓動添加參數

 

-Dguid.datacenter.id=2  -Dguid.machine.id=3

 

guid.datacenter.id 數據中心
guid.machine.id 數據中心中對應的服務器編號

 

4) 獲取對應數據

SpringUtil.getBean(PrimaryKeyGenerater.class).nextId()

datacenter:  SpringUtil.getBean(PrimaryKeyGenerater.class).getDatacenterId()

machine: SpringUtil.getBean(PrimaryKeyGenerater.class).getMachineId()

 

 

大廠的id設計
全局數據庫生成惟一id型:
京東商城訂單號格式:157444499 全局數據庫
蘇寧易購訂單號格式:2000839647 全局數據庫
凡客誠品訂單號格式:213052230059 業務編碼+年的後2位+月+日+訂單數
銀泰網訂單號格式:10030522161715 年的第三位數+業務編碼+年的後1位+月+日+訂單數
淘寶的訂單號格式:126036803257340376 14位爲序號+買家ID的倒數1-2位+買家ID的倒數3-4位
Twitter Snowflake 格式 :458607675730102138 14位時間戳+ 數據中心2+服務器2位 + 順序號4位
可歸類4種:
方案1: 利用全局數據庫(rmdb or nosql) 提供自增的字段ID, 具體業務端可一次讀取多條id 提升性能 -- id 短 , 性能通常,維護成本高, 可讀性通常
方案2: 年月日+日級別必定位數的序號(如 00001, 序號維護同方案1) -- id 短 , 性能通常,,維護成本高, 可讀性高
方案3:淘寶方案 4位序號+買家4位ID -- id 長, 性能通常,,維護成本高, 可讀性高只需讀取後6位基本可判斷訂單
方案4: Twitter Snowflake方案 -- id 長, 性能高,,維護成本底, 可讀性差 , 可參考方案3 把後4位改成用戶id後4位組合
愛庫存對id的需求場景:
1. 訂單ID (完整編號、短號)
2. 發貨單ID (完整編號、短號)
3. 代購ID (會員編號) (億級)
4. 商家ID (千萬級)
5. 售後申請服務號 (億級)
6. 支付流水號
7. 支付退款流水號
8. 業務上使用的合併支付單號
方案選取原則:
1: 12位左右ID 選擇方案2
2: 短id 選擇方案1
3: 考慮數據中心的概念 選擇方案4 ( 當前新項目採用此方案 , 新會員, 商戶商家)
相關文章
相關標籤/搜索