分布式唯一ID
使用 RocketMQ 时,需要使用到分布式唯一 ID
消息可能会发生重复,所以要在消费端做幂等性,为了达到业务的幂等性,生产者必须要有一个唯一 ID, 需要满足以下条件:
同一业务场景要全局唯一...算法
Snowflake是Twitter开源的分布式ID生成算法, 结果是一个 Long 型的ID,核心思想是:
使用 1 位作为符号位,确定为 0, 表示 正
使用 41 位作为 毫秒数
使用 10...算法Java实现SnowflakeIdWorker:
/**
* Twitter_Snowflake
* SnowFlake的结构如下(每部分用-分开):
* 0 - 0000000000...
* SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID...使用 **15** 位作为 **机器ID,** 最多可支持3.28万个节点
* 使用 **10** 位作为 **毫秒内的序列号,** 理论上可以生成210个序列号
* 因为服务的无状态关系,正常情况下