什么是分布式ID

世间万物皆KV,那么系统中的很多数据都需要唯一ID来标识,方便用于查询。
单库环境下,表的自增ID足以,分库分表后,不能直接用表自增ID,会重复,因为A库的表不能了解到B库的表的ID生成情况。所以ID就需要通过组件来生成,而不是用自增ID。

自增ID优化

ID分段:多个库之间的数据通过分配不同的数据区间,比如1KW一个库。
指定步长:根据库size,设置为步长。

UUID

优点:jdk自带、简单、方便、唯一、高并发、稳定性
缺点:太长导致mysql基于该主键建立的索引查询性能不好、无序导致不能根据其进行新老数据区分、可读性差

数据库自增ID

和前面的区别在于,这里是专门用一个表来生成ID用,这样就避免ID冲突。
优点:ID短、有序
缺点:ID生成组件存在单点需要做高可用、并发能力有限、存在一次网络调用(可以优化ID段进行本地缓存)。