在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
相信每个人在互联网的业务系统中,每天都能接触到各种各样的ID,如在支付系统中就会有支付ID、退款ID等。今天,小编就来盘点五种分布式ID。
一、UUID
UUID (Universally Unique Identifier) 的标准型式包含 32 个 16 进制数字,以连字号分为五段,形式为 8-4-4-4-12 的 36 个字符,示例:550e8400-e29b-41d4-a716-446655440000,到目前为止业界一共有 5 种方式生成 UUID。
UUID 的优点:性能非常高:本地生成,没有网络消耗。
UUID 的缺点:
不易于存储:UUID 太长,16 字节 128 位,通常以 36 长度的字符串表示,很多场景不适用。
信息不安全:基于 MAC 地址生成 UUID 的算法可能会造成 MAC 地址泄露,这个漏洞曾被用于寻找梅丽莎病毒的制作者位置。
ID 作为主键时在特定的环境会存在一些问题,比如做 DB 主键的场景下,UUID 就非常不适用。MySQL 官方有明确的建议主键要尽量越短越好,36 个字符长度的 UUID 不符合要求;UUID 还对 MySQL 索引不利,如果作为数据库主键,在 InnoDB 引擎下,UUID 的无序性可能会引起数据位置频繁变动,严重影响性能。
二、snowflake
snowflake 我就不在介绍了,我直接说它的优点:
毫秒数在高位,自增序列在低位,整个ID都是趋势递增的。
不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也是非常高的。
可以根据自身业务特性分配bit位,非常灵活。
缺点:
强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态。
MongDB 的 ObjectID 可以算作是和snowflake类似方法,通过“时间+机器码+pid+inc”共12个字节,通过4+3+2+3的方式最终标识成一个24长度的十六进制字符。
三、美团开源的Leaf
支持多种不同模式的生成策略
号段模式:该模式需要建 DB 表, 需要有专门的服务来提供获取 id 的接口, 存在网络延迟
Snowflake 模式:为了追求更高的性能,需要通过 RPC Server 来部署 Leaf 服务,那仅需要引入 leaf-core 的包,把生成 ID 的 API 封装到指定的 RPC 框架中即可.
缺点,可能就是相对来说比较复杂。
四、sharding-jdbc
sharding-jdbc 是一个开源的主键生成组件。它的特点是简单易用,可以指定 workerId 或者不指定, 直接通过 jar 的方式引入即可。看它的名字就知道,它需要 DB 支持。
五、uid-generator
uid-generator 是百度开源的一个分布式 ID生成器。需要建 DB 表, 需要有专门的服务来提供获取 id 的接口, 存在网络延迟。
以上就是大家比较常见的五种分布式ID,大家都了解了吗?
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Linux和Ubuntu是什么关系?两者有区别吗?
Linux和Ubuntu是什么关系?两者有区别吗?对于不了解Linux的朋友来说,可能会说“我使用的是Linux操作系统”。其实Linux这个词本身指标是Linux内核。一般说的Linux系统其实是基于Linux内核的操作系统。而Ubuntu就是以Linux为内核的操作系统之一。
16200
2019-08-08 14:18:06
liunx开发信号捕捉函数alarm()和pause()知识点讲解
alarm()也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,它就向进程发送SIGALARM信号。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm()之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。
6910
2019-06-18 18:09:27
运维个人简历怎么写?运维简历制作技巧
运维简历怎么写?首先一定要有以下几个板块:求职意向、教育经历、个人技能、工作经验、项目经验、获奖情况。下面小编将一个版块一个版块的教大家,针对运维工程师和应届生,具体讲讲运维简历制作的一些技巧。
13490
2019-09-04 15:34:07
运维安全的主要工作是干什么?
互联网的三大技术岗位分别是研发、测试和运维。在许多人看来,运维好像并没有那么重要,然而运维安全其实是企业安全保障的基石,不同于其他的技术环节,运维安全环节出现问题往往会比较严重,因此运维的重要性早已不言而喻。那么运维安全的主要工作是什么?主要是终端的运行维护,包括客户端故障排除、硬件故障修复、应用系统软件客户端安装、终端安全防护等方面的内容。
22721
2019-09-11 15:41:09
运维面试基础知识复习整理
做运维需要掌握的基础知识十分广泛,其中包括了shell脚本、文本处理命令、数据库、监控工具和数据备份等等知识点。本文为面试运维的广大求职者,整理了一些运维基础知识复习的面试题,并附上了答案,希望对大家的面试有所帮助。现在我们赶紧来看看吧!
12664
2019-10-21 19:01:32