优点:简单粗暴,自增Id顺序递增
缺点:只有主库才能生成,容易造成单点故障;性能不足时候,无法扩展;分库分表会有很多麻烦。
UUID优点:简单直接,无性能问题,真正的全球唯一
缺点:无规则;UUID是字符串,IO传输数据量大,存储空间大,查询效率低;基于UUID分库分表更难。
redis生成优点:基于内存操作的reids性能比数据库好;可以基于集群做有序的数字Id生成;利于分库分表;
缺点:需要搭建一套高可用redis集群;需要基于集群编写生成Id的方案;
zookeeper生成和redis类似业务规则生成举例订单号的生成:10_2298765801_1565283246399_781.业务字段用于区分具体的业务,采用2-4位,可以根据不同的系统或者业务自由决定;2.用户Id,最长10位够了吧3.毫秒级时间戳:13位4.随机数:2-4位个人还是喜欢采用业务规则生成的方案,性能肯定没的说,基于内存计算即可得到,也不存在什么单点故障,哪台机器都可以自己生成,不依赖第三方服务或者应用,也能保证顺序递增。
这样的设计能达到真正的分布式唯一Id吗?能满足上面所说的那些条件吗?大家还有什么好的生成方案?欢迎评论交流,批评指正~
mysql 破解工具,mysql的特性是,mysql8.0 窗口函数,mysql 修改字段编码格式,mysql同步结构,mysql库级别锁定