分布式 ID
分布式数据库,分成多个表之后,需要一个全局唯一的 ID。
UUID
不适合作为主键,因为太长了,并且无序不可读,查询效率低。比较适合用于生成唯一的名字的标示比如文件的名字。
自增 ID
两台数据库分别设置不同步长,生成不重复 ID 的策略来实现高可用。 这种方式生成的 ID 有序,但是需要独立部署数据库实例,成本高,还会有性能瓶颈。
利用 Redis 生成 ID
性能好,灵活方便,不依赖于数据库。 但引入了新的组件造成系统更加复杂,可用性降低,编码更加复杂,增加了系统成本。
Snowflake
Twitter 的 Snowflake算法
https://github.com/twitter-archive/snowflake
Leaf
美团的Leaf分布式ID生成系统, 能保证全局唯一性、趋势递增、单调递增、信息安全,里面也提到了几种分布式方案的对比,但也需要依赖关系数据库、Zookeeper等中间件。