如果在运行过程中发生故障,如何保证相关数据的完整性呢?
收起对于双活架构下,会包含很多的层面,比如应用层,数据库层,服务器层,存储层等等,要实现真正的业务双活,必须做到每个层面都是活的,而每个层面都会有各自的技术来实现,数据的一致性也是通过这些层面采用的技术来保证的,比如数据层面采用oracle RAC,那么RAC需要解决的关键问题就是多节点进行数据访问时如何保证数据的一致性,Oracle是通过各节点间的私有连接进行内存融合(cache fusion)来保证各节点数据访问的一致性。对于存储层面,如果采用了svc来搭建双活架构,那么其数据一致性是通过svc节点之间的缓存数据同步来完成;
当双活架构发生故障的时候,最主要的是避免集群的脑裂,避免脑裂的方式是一定要部署第三站点的仲裁机制,仲裁站点可以采用存储仲裁或者ip仲裁等不同的方式,避免集群发生脑裂,从而导致业务数据的不一致性发生。