timestamp + zookeeper node number + sequence local + hash(goupid/shopid)
1.timestamp 32位unix時間戳,包含年月資訊,用於分表
2.zookeeper node number: 通過zookeeper獲取唯一node number作為伺服器id,長度為8位(128)用於解決機器間相同時間戳的id衝突。
3.sequence local:伺服器自增序列id,長度12位(2056)用於解決同一伺服器相同時間戳的id衝突
4.goupid/shopid 的hash值,取4096模,容量為4096,即最大分成4096個庫,12位
總位數:32(timestamp) +8(zookeeper node數) + 12(sequenceno) + 12(hash) = 64
最多部署256臺伺服器
單台伺服器每秒處理新增訂單限額為4098(sequence local範圍決定)
總容量每秒新增訂單 256*4096 = 1048576(百萬數量級)
最多支援4個機房(0-3)
dbindex = shopid%64
tableindex = shopid/64%64
分庫分表相關知識
背景情況 使用者表達到了 幾千萬級別,在做很多操作都比較吃力,所以,考慮對其進行分庫分表,或者在進行高併發讀寫的時候採用分庫分表的形式也更能增強讀寫的效能,保證服務的穩定高效 常用的切分方案 資料的切分 sharding 根據其切分規則的型別,可以分為兩種切分模式。一種是按照不同的表 或者schem...
mysql資料庫分表相關
分表是分散資料庫壓力的好方法。分表,最直白的意思,就是將乙個表結構分為多個表,然後,可以再同乙個庫里,也可以放到不同的庫。當然,首先要知道什麼情況下,才需要分表。個人覺得單錶記錄條數達到百萬到千萬級別時就要使用分表了。1,分表的分類 1 縱向分表 將本來可以在同乙個表的內容,人為劃分為多個表。所謂的...
表相關操作
使用t sql建立表 use database name 指向操作的資料庫 go 批處理的標記 create table table name 新建表 column name 資料型別 identity 1000,1 not null,最後一列不需要逗號 go說明 資料型別 int varchar ...