电报超级群组消息同步的CRDT冲突解决机制
3 个回答
Telegram解决冲突的方式是:消息自带全局时间戳和设备ID,用向量时钟同步。冲突时,按照特定规则(比如时间戳+设备ID)保留其中一条。优点是,分布式下不用中心服务器,最后消息会自动收敛一致。具体场景中,即使你和好友同时发送消息,系统也会按照规则把两条消息都正常显示,不会丢消息或乱序。简单说就是——给每条消息发个身份证,冲突时看身份证号谁更大。
Telegram 超级群组用 CRDT 解决消息同步冲突,核心是数据结构带版本号自动解决乱序。按时间戳排序,设备离线时发的消息不会覆盖在线时发的消息。举例来说,多人发消息,系统选最早发的那一条,冲突就消除了。这种设计避免了人为干预,适合高并发的场景。实际表现就是你刷消息的时候不会突然冒出来一堆乱序的旧消息,很爽。
Telegram超群同步用CRDT主要是解决分布式场景下的消息冲突问题。简单来说就是给每条消息加全局唯一ID带时间戳排序,冲突自动按规则合并。如A发消息1,B发消息2。系统会自动排序成12或21,用户感受不到乱序问题。好处是省去人工干预,还能达到最终一致性。实际应用如多人聊天抢发消息,系统能自动正确排序。