分布式唯一ID
使用 RocketMQ 时,需要使用到分布式唯一 ID
消息可能会发生重复,所以要在消费端做幂等性,为了达到业务的幂等性,生产者必须要有一个唯一 ID, 需要满足以下条件:
同一业务场景要全局唯一...(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
* 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的...;
//毫秒内序列溢出
if (sequence == 0) {
//阻塞到下一个毫秒,获得新的时间戳...** 实现调整位段
* 使用 **1** 位作为 **符号位,** 即生成的分布式I唯一d为正数
* 使用 **38** 位作为 **时间戳,** 表示当前时间相对于初始时间的增量值,单位为毫秒...* 使用 **15** 位作为 **机器ID,** 最多可支持3.28万个节点
* 使用 **10** 位作为 **毫秒内的序列号,** 理论上可以生成210个序列号
* 因为服务的无状态关系