Database design 多主与对等数据库体系结构

Database design 多主与对等数据库体系结构,database-design,architecture,p2p,multi-master-replication,Database Design,Architecture,P2p,Multi Master Replication,我的理解是,在多主数据库体系结构中: 您有2+DB服务器,两者都充当读/写主机;及 它要么由某种类型的负载平衡器来平衡这些多个主机之间的操作;及 每当服务器读取数据时,它都会在本地获取并返回查询的数据;及 每当服务器获得写入时,它会在本地写入+提交,然后将该写入实时复制到其他服务器(这就是为什么系统隐含地需要负载平衡器,以防止同一写入同时发送到2+个不同的主机);及 您可以有主动/主动或主动/被动设置。使用前者,负载平衡器可以真正平衡所有节点上的写操作我不太理解后者(主动/被动) 因此,首先

我的理解是,在多主数据库体系结构中:

  • 您有2+DB服务器,两者都充当读/写主机;及
  • 它要么由某种类型的负载平衡器来平衡这些多个主机之间的操作;及
  • 每当服务器读取数据时,它都会在本地获取并返回查询的数据;及
  • 每当服务器获得写入时,它会在本地写入+提交,然后将该写入实时复制到其他服务器(这就是为什么系统隐含地需要负载平衡器,以防止同一写入同时发送到2+个不同的主机);及
  • 您可以有主动/主动或主动/被动设置。使用前者,负载平衡器可以真正平衡所有节点上的写操作我不太理解后者(主动/被动)
因此,首先,如果我上面所说的任何东西是不正确的,请首先纠正我或为我澄清它!假设我或多或少达到了目标:


那么多主机和点对点(P2P)之间(实际上)有什么区别呢?在P2P系统中,任何读操作都会在本地执行并返回,任何写操作都会在本地写入,然后复制到所有的对等方…那么它们不是一个吗

它们可能看起来相似,但存在细微的差异,希望这有助于:

在活动/活动中,写入可以到达任何服务器,然后级联到集群中的其他服务器

在主动/被动模式下,读取只会进入集群中的单个节点,然后级联到其他节点


根据这两种方案中的技术和实现,读可能由集群中的任何节点提供服务。

主从

  • 只有大师才能写作
  • 从属服务器从主服务器异步复制,并仅为读取查询服务
  • 为了防止数据丢失,当至少有n个从机与主机一起写入时,可以将提交标记为已完成
  • MySql
主控-主控或多主控

  • 任何服务器都可以进行读/写操作
  • 所有服务器都同步复制。所以数据总是一致的
  • 可以配置为异步复制,但随后它将类似于对等体系结构
  • 只有两位大师有分裂大脑的问题。至少有3个主控可以解决此问题
  • CouchDB
点对点

  • 所有服务器都可以进行读/写操作
  • 服务器之间的异步复制,因此读取可能不同。(最终一致性)
  • 卡桑德拉,弹性搜索
领导者-追随者

  • 只有领导者负责读/写操作
  • 跟随者仅异步复制
  • 可以配置为N个追随者同步复制,以防止在领导者倒下时数据丢失
  • 卡夫卡

CouchDB同时属于多主机和点对点,多主机更倾向于其群集()功能,而点对点更倾向于其复制()功能