2021-05-09 20:44:01
全球分布式数据库因异步复制(最终一致性)导致的经典问题,核心在于地理距离引发的网络延迟,使得数据同步时效性无法保证,进而引发用户体验问题。 以下是具体问题及解决方案分析:
一、经典问题场景以某网络游戏平台为例:
问题本质:异步复制下,数据最终一致性无法满足实时性需求,引发用户体验矛盾。
二、解决方案及缺陷分析方案1:用户读回源性能问题:用户B每次访问均需跨洋通信,延迟高,违背美国数据库部署初衷(提升本地访问速度)。
适用场景:仅适用于对实时性要求极低且用户可接受高延迟的场景。
性能问题:用户A需跨洋写入美国数据库,延迟高。
一致性矛盾:
若双写均成功,但用户B未及时读取,仍可能感知不一致。
若双写部分失败,需用户重试,违反CAP理论(高可用与严格一致性不可兼得)。
适用场景:适用于写操作频率低且用户可接受重试的场景。
性能问题:读写均需回源至Leader,延迟高。
原则冲突:违反“小范围同步复制(强一致),大范围异步复制(最终一致)”原则,扩展性差。
适用场景:仅适用于小规模集群且对延迟不敏感的场景。
sync_write:用户A写入后,数据库轮询中美binlog序号,确认同步后再返回响应。
sync_read:用户B读取前,数据库比较中美binlog序号,确认同步后再返回数据。
灵活性:用户可按需选择同步操作,正常请求不受影响。
一致性保障:通过同步原语确保关键操作一致性。
实现复杂度:需数据库支持binlog序号查询与轮询机制。
轻微延迟:同步操作仍需跨洋通信,但仅影响关键路径。
最终建议:结合业务场景,优先采用方案4的同步原语处理关键操作,其余操作维持异步复制,以平衡一致性与性能。