IM海量聊天消息序列号生成
2018-12-11 本文已影响29人
Tucke
如何确保聊天消息的唯一性和顺序性?
- 看到这个问题,普遍考虑的是用自增序列作为消息ID,这样既可以保证唯一性,又可以保证顺序性。但是在分布式情况下很难保证id的唯一性和顺序递增,维护id生成的一致性难度又很大。
目前找到的方案
- Twitter的snowflake算法 (算法简单,值得一试)
-
snowflake 是 Twitter 开源的分布式 ID 生成算法,结果是一个 long 型的 ID。其核心思想是:使用 41bit 作为毫秒数,10bit 作为机器的 ID ( 5 个 bit 是数据中心,5 个 bit 的机器 ID ),12bit 作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID ),最后还有一个符号位,永远是 0。
-
- seqsvr(在没有微信那么高的并发情况下,暂时不考虑,毕竟实现麻烦)