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个追随者同步复制,以防止在领导者倒下时数据丢失
- 卡夫卡