Global Unique ID
๐: ไปฅๅ ใใญใธใงใฏใใงๅฎ่ฃ ๆธ ใฟ
Approaches
- UUID
- Database (SQL)
- Redis ๐
- Snowflake
- Baidu
UidGeneratorDefaultUidGeneratorCachedUidGenerator
- Meituan Leaf
Leaf-segment: DatabaseLeaf-snowflake
Redis
- ใทใณใฐใซในใฌใใ
INCR(),INCRBY()ใฎใขใใใใฏๆไฝ ใง GUID ใๅฎ่ฃ- ็ๆ ใใใใใผใฟใฏ้ ๅบ ไป ใใใใฆใใใใฝใผใๆฅญๅ ใซๆๅฉ
Design Considerations
First Thought
- ๅพๆฅ ใฎใใผใฟใใผในใง auto_increment ๅฑๆง ใๆ ใคไธป ใญใผใไฝฟ็จ ใใใใจใ่ ใใใใใใใพใใใ
- ๆช
ใใขใคใใข:
- auto_increment ใฏๅๆฃ ็ฐๅข ใงใฏๅไฝ ใใพใใ
- ๅไธ ใฎใใผใฟใใผในใตใผใใผใงใฏๅๅ ใชๅฎน้ ใใใใพใใ
- ่คๆฐ ใฎใใผใฟใใผใน้ ใงๆๅฐ ใฎ้ ๅปถ ใงไธๆ ใฎ ID ใ็ๆ ใใใฎใฏๅฐ้ฃ ใงใ
Questions to Ask
- ไธๆ ID ใฎ็นๆง ใฏไฝ ใงใใ๏ผ
- ๆฐ ใใใฌใณใผใใใจใซ ID ใฏ 1 ใใคๅขๅ ใใพใใ๏ผ
- ID ใฏๆฐๅค ใฎใฟใๅซ ใฟใพใใ๏ผ
- ID ใฎ้ท ใใฎ่ฆไปถ ใฏไฝ ใงใใ๏ผ
- ใทในใใ ใฎ่ฆๆจก ใฏไฝ ใงใใ๏ผ
Use Cases
Multi-master Replication
็ญๆ :
- ่คๆฐ ใฎใใผใฟใปใณใฟใผใงใฎในใฑใผใชใณใฐใๅฐ้ฃ
- ่คๆฐ ใฎใตใผใใผ้ ใง ID ใๆ้ ใจใจใใซๅขๅ ใใชใ
- ใตใผใใผใฎ่ฟฝๅ ใๅ้ค ๆ ใซในใฑใผใซใใซใใ
UUID
่ก็ช ใฎ็ขบ็ ใฏ้ๅธธ ใซไฝ ใใ
Wikipedia ใใใฎๅผ็จ
๏ผใ็ด
100 ๅนด้
ใๆฏ็ง
10 ๅ
ๅใฎ UUID ใ็ๆ
ใใๅพ
ใๅไธ
ใฎ้่ค
ใ็บ็
ใใ็ขบ็
ใฏ 50% ใซ้
ใใใ
Ticket Server
ๅ่ : Ticket Servers: Distributed Unique Primary Keys on the Cheap
็ญๆ :
- ๅไธ้ๅฎณ็น ๏ผSPOF๏ผ
Twitter Snowflake Approach
- ๅๅฒ็ตฑๆฒป
Additional Talking Points
- ๆๅป ๅๆ ๏ผใใใใฏใผใฏใฟใคใ ใใญใใณใซ๏ผ
- ใปใฏใทใงใณ้ท ใฎ่ชฟๆด
- ้ซๅฏ็จๆง