◀背景▶ 对于一套分布式部署的 IM 系统,要求每条消息的 ID 要保证在集群中全局唯一且按生成时间有序排列.如何快速高效的生成消息数据的唯一 ID ,是影响系统吞吐量的关键因素.那么,融云是如何做到生成全局唯一消息 ID 的呢? 首先需要明确下 ID 生成的核心需求: 1. 全局唯一 2. 有序 ◀设计▶ 融云消息数据的唯一 ID 长度采用 80 Bit .每 5 个 Bit ,进行一次 32 进制编码,转换为一个字符,字符取值范围是,( 2 ~ 9 ) 和 ( A ~ B ),其中,已经去掉…
在分布式系统中,有一些场景需要使用全局唯一 ID ,可以和业务场景有关,比如支付流水号,也可以和业务场景无关,比如分库分表后需要有一个全局唯一 ID,或者用作事务版本号.分布式链路追踪等等,好的全局唯一 ID 需要具备这些特点: 全局唯一:这是最基本的要求,不能重复: 递增:有些特殊场景是必须递增的,比如事务版本号,后面生成的 ID 一定要大于前面的 ID :有些场景递增比不递增要好,因为递增有利于数据库索引的性能: 高可用:如果是生成唯一 ID 的系统或服务,那么一定会有大量的调用,那么保证其…