原生redis遇到的问题
-
不支持双主同步;原生redis并没有提供跨机房的主主同步机制,仅支持主从同步;如果仅利用redis的主从数据同步机制,只能将主节点与从节点部署在不同的机房。当主节点所在机房出现故障时,从节点可以升级为主节点,应用可以持续对外提供服务。但这种模式下,若要写数据,则只能通过主节点写,异地机房无法实现就近写入,所以不能做到真正的异地多活,只能做到备份容灾。而且机房故障切换时,需要运维手动介入。
因此,想要实现主主同步机制,需要同步工具模拟从节点方式,将本地机房中数据同步到其他机房,其他机房亦如此。同时,使用同步工具实现跨数据中心数据同步,会遇到以下一些问题。-
数据回环:数据回环的意思是,A机房就近写入的数据,通过同步工具同步到B机房后,然后又通过B机房同步工具同步回A机房了。所以在同步的过程中需要识别本地就近写入的数据还是其他数据中心同步过来的数据,只有本地就近写入的数据需要同步到其他数据中心。
-
幂等性:同步过程中的命令可能因断点续传等原因导致重复同步了,此时需要保证同一命令多次执行保证幂等。
-
多写冲突:以双写冲突为例,如下图所示:
DC1写入set a 1,同时DC2写入set a 2,当这两条命令通过同步工具同步到对方机房时,导致最终DC1中保存的a为2,DC2中保存的a为1,也就是说两个机房最终数据不一致。
-
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏