分布式数据库,挂掉两台机器会发生什么
出处:
mp.weixin.qq.com
作者:
梦实
挂一部分机器,不会丢数据、不会不可服务,是对现代数据库的一个比较基本的要求。 对于早期的单机数据库,一般使用主备架构。主备架构有很多的缺陷,并且这些缺陷是无解的。穿过主备架构里各种“优化”的名词,最后也无非是选择一碗毒药而已,这几个毒药包括: 1.脑裂,两个节点同时写入的冲突数据无法合并,只能丢掉一部分。想要不脑裂?那只能牺牲可用性。 2.同步复制,备机不可用的情况下,算不算写入成功?算,可能丢数据;不算,备机不可用==集群不可用,牺牲可用性。 3.异步复制,这完全躺平了,不考虑一致性。 4.所谓semi-sync等方案,也属于主备架构的一种。 5.业务自己去容错,做针对自己业务场景的对账、补偿等方案。 其实可以看出,主备架构是CAP理论做取舍的重灾区,一致性和可用性之间的关系特别矛盾。所谓一致性和可用性“兼顾”的主备方案,实际上是“兼不顾”。