分布式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 算法
自己找吧,我不会,对不起。