机房之间的数据同步一直是行业里的痛,因为高昂的实现代价,如果不能做到双活,总是会有一个 1:1 机器数量的机房在空跑,而且发生故障时,没有人能保证冷备机房可以马上对外服务。
但是双活模式的维护成本也不低,机房之间的数据同步常常会因为网络延迟或数据冲突而停止,最终导致两个机房的数据不一致。好在 Otter 对数据同步做了很多措施,能在大多数情况下保证数据的完整性,并且降低了同城双活的实现难度。
即使如此,在业务的运转过程中,我们仍然需要人工梳理业务,避免多个机房同时修改同一条数据。对此,我们可以通过 HttpDNS 调度,让一个用户在某一段时间内只在一个机房内活跃,这样可以降低数据冲突的情况。
而对于修改频繁、争抢较高的服务,一般都会在机房本地做整体事务执行,杜绝跨机房同时修改导致同步错误的发生。