分布式Id设计方案

分布式id生成方法

数据库自增主键ID    缺点:数据库的常用架构是一主多从+读写分离

id是写请求  主库挂了就是单点挂了   


改进方法:增加主库,避免单点写入
数据库水平切分保证每个库的id生成不一样  0 步长 2
                                  1 步长 2

数据库的写压力依然很大
丧失数据库id绝对递增的优势




单点批量Id生成服务  数据库只保存当前max id
0 1 2 3 4 5 全部由id生成服务去下发   数据库只保存5
不再每次都去访问数据库
优点:
    id的绝对有序
    减少了数据库的读压力
缺点:
    服务依然是单点
    服务挂了的话,id会有空洞
    性能上限,无法水平扩展



uuid
本地调用  巨快无敌
无法保证趋势递增
uuid过长的话数据库主键查询很慢




如果并发量不是特别大
可以使用毫秒
优点:1.本地生成
     2.生成的id趋势递增
     3.id是整数,建立索引后的查询效率很快
缺点:
    毫秒也是有限制的,甚至微秒 1000  10000000的并发量将是极限




twitter snowflake 算法
自己找吧,我不会,对不起。
0%