分布式ID的需求
在分布式系统中。ID有如下需求
全局唯一性,不能出现重复的id号
信息安全:防止恶意用户规矩id的规则来获取数据
数据递增:保证我的下一ID一定大于上一个ID
UUID通用唯一识别码,16个字节128位的长数字
组成部分:当前时间和时间序列+全局唯一性网卡地址
优点:代码实现简单,不占用宽带,数据迁移不受影响
缺点:无序,无法保证趋势递增,查询慢,不可读
国外的twitter分布式下ID生成算法
1bit+41bit+10bit+10bit=62bit
高位随机+毫秒数+机器码(数据中心+机器id)+10的流水号
优点:代码实现简单,不占用宽带,数据迁移不受影响,低位趋势递增
缺点:多台服务器时间一定要一样,无序无法保证趋势递增要求
优点:代码实现方便,性能不错,数字排序,可读性很强
缺点:受限数据库,扩展麻烦,插入数据库才能拿到ID,单点故障问题
主从同步的时候:电商下单–>支付 intsert master db select 数据 因为数据库同步延迟导致查不到这个数据,加cahe不是最好的解决方式,数据要求比较严谨的话查master主库.
年份+当前这天属于这一年的第多少天+小时+redis自增
2+3+2+5=12位
数据多了可以设置一个失效时间重新生成,
优点:不依赖数据,灵活方便,性能优于数据库,没有单故障,高可用
缺点:需要占用网络资源,性能要比本地生成慢,需要增加插件
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71185.html
摘要:几乎所有的系统都存在生成唯一的需求,如用户账单等,由于系统通常是分布式架构,因而需要有合适的分布式生成方案。优势和数据库自增方案类似缺点同样仍然有性能上限,依赖数据库的可用性。使用时,可以使用具体的场景选择合适的方案。几乎所有的系统都存在生成唯一ID的需求,如用户ID、账单ID等,由于系统通常是分布式架构,因而需要有合适的分布式ID生成方案。常见的分布式唯一ID方法有(欢迎补充):时间戳数据...
摘要:序本文主要来聊聊分布式的生成方案。分布式的生成,以为代表的,系列算法采用的就是划分命名空间并行生成的思路。 序 本文主要来聊聊分布式id的生成方案。 目标 业务系统需要什么样的ID生成器中提出了几点目标: 唯一性 时间相关 粗略有序 可反解 可制造 主要思路 对于每个标识,都需要有一个命名空间(namespace),来保证其相对唯一性。分布式的ID生成,以Twitter Snowf...
摘要:为什么需要发号器在分布式系统中,经常需要对大量的数据消息请求等进行唯一标识,例如对于分布式系统,服务间相互调用需要唯一标识,调用链路分析,日志追踪的时候需要使用这个唯一标识。 原文链接:何晓东 博客 文章起源于 康神交流群的 panda大佬和boss li关于发号器的一些交流,特此感谢让我们学到了新知识。 为什么需要发号器 在分布式系统中,经常需要对大量的数据、消息、http 请求等进...
摘要:原文地址唯一的生成并不是一件小事想说爱它也并不是像简单来一个这样一件容易的事为什么要唯一数据库的自增在分库的时候会是一场灾难假设分两个库因为每个库都会开始从开始自增届时系统中将会出现两个为的用户自增会暴露用户量或者其他业务量自增会让有心者 [原文地址:https://blog.ti-node.com/blog...] 唯一ID的生成并不是一件小事 , 想说爱它 , 也并不是像简单来一个...
摘要:同时除了对号码自身的要求,业务还对号生成系统的可用性要求极高,想象一下,如果生成系统瘫痪,整个美团点评支付优惠券发券骑手派单等关键动作都无法执行,这就会带来一场灾难。 分布式id主要用到哪些地方 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,...
阅读 2148·2021-11-22 14:56
阅读 9207·2021-09-08 10:45
阅读 1898·2019-08-30 13:54
阅读 2799·2019-08-29 16:54
阅读 1980·2019-08-29 14:20
阅读 1750·2019-08-29 12:25
阅读 1816·2019-08-29 12:17
阅读 1002·2019-08-23 18:29