JAVA全系列 教程
3762个小节阅读:7089.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Java本身提供了UUID,这是一个唯一的字符串,它可以不依赖其他工具在本地生成。
优点
缺点
一个数据库压力大就搞多个数据库,之后搞一个Step步长的概念,每个数据库的自增起始值不同,但是他们的增长Step相同。如下图所示。
优点
返回的分布式ID是趋势递增的id唯一。解决了单点问题,即使一个宕机其他的还可以提供服务。
缺点
单点压力还是很大,因为DB本身写操作就耗时间。最主要的问题还是扩容困难,比如要加一台DB3是很难加进来的,除非停机,将所有DB的id进行修改,同时修改步长。
它没有采用新插入记录返回id的方案,而是一个业务类型就是一行数据,用一行数据来维护这个业务的自增id。服务来修改这行数据的max_id,比如当前max_id值是0,那么来给max_id加上1000,如果返回成功,就代表这个服务获得了1-1000这段分布式id,之后将这段缓存在服务内部,用光之后再来表中取。
优点
效率很高,db的压力减小,而且一张表可以维护很多业务的分布式id。
缺点
复杂性提高,需要系统为了这个生成方案对号段进行缓存。
通过incr命令让一个key自增,自增后的值作为分布式id。
优点
缺点
SnowFlake生成的是一个Long类型的值,Long类型的数据占用8个字节,也就是64位。SnowFlake将64进行拆分,每个部分具有不同的含义,当然机器码、序列号的位数可以自定义也可以。
优点
本地生成,不依赖中间件。 生成的分布式id足够小,只有8个字节,而且是递增的。
缺点
时钟回拨问题,强烈依赖于服务器的时间,如果时间出现时间回拨就可能出现重复的id。
实时效果反馈
1. 分布式全局唯一ID解决方案中属于UUID缺点的是____。
A 无序
B 没有可读性
C 占用空间大
D 以上都是正确
2. 分布式全局唯一ID最推荐使用____。
A UUID
B 数据库自增
C Redis
D 雪花算法
答案
1=>C 2=> D