学校网站建设项目要多少钱,wordpress数据库连接,建个企业网站需要多久,wordpress优化指南分布式数据复制
我们在进行分布式数据存储设计时#xff0c;通常会考虑对数据进行备份#xff0c;以提高数据的可用性和可靠性#xff0c;“数据复制技术”就是实现数据备份的关键技术。
什么是数据复制技术#xff1f;
在分布式数据库系统中#xff0c;通常会设置主备…分布式数据复制
我们在进行分布式数据存储设计时通常会考虑对数据进行备份以提高数据的可用性和可靠性“数据复制技术”就是实现数据备份的关键技术。
什么是数据复制技术
在分布式数据库系统中通常会设置主备数据库当主数据库出现故障时备数据库可以替代主数据库进行后续的工作从而保证业务的正常运行。
数据复制技术就是如何让主备数据库保持数据一致的技术。
数据复制原理和应用
数据的一致性是指不同节点上的数据要保持一致。对于分布式存储系统中的数据复制技术来讲也需要在一致性和可用性之间做出权衡。
从一致性和可用性来看数据复制技术一般分为三类
比较注重一致性例如同步复制技术比较注重可用性例如异步复制技术平衡一致性和可用性例如半同步复制技术
同步复制技术
同步复制技术是指当用户请求更新数据时主数据库必须要同步到备数据库之后才可以给用户返回结果即如果主数据库没有同步到备数据库用户的更新操作会一直阻塞。
这种方式保证了数据的强一致性但是牺牲了系统的可用性。
在一个分布式数据库系统中有两个节点分别作为主节点和备节点。通常情况下两个节点都可以接收用户读请求然后将本节点的数据及时返回给用户也就是说读请求响应比较快。如果用户发送的事写请求写操作必须由主节点进行即使用户将写请求发送到备节点备节点也会将请求转发给主节点因此写请求要比读请求慢一些。
同步复制技术要求主数据库等待所有备数据库都操作成功才可以响应用户性能不是很好影响用户体验。因此同步复制技术适用于分布式数据库主备场景或者对数据一致性有严格要求的场合。
异步复制技术
异步复制技术是指当用户请求更新数据时主数据库处理完请求后可以直接给用户响应而不必等到备数据库完成同步即备数据库会异步进行数据同步用户的更新操作不会因为备数据库未完成数据同步而导致阻塞。
这种方式保证了系统的可用性但是牺牲了数据的一致性。
分布式数据库主备模式场景下如果对数据一致性要求不高也可以采用异步复制方法。
MySQL集群默认采用的数据复制模式就是异步复制技术主要流程如下
主数据库完成写操作后可以直接给用户回复成功将写操作写入binary log中binary log中记录着主数据库执行的所有更新操作以便备数据库获取更新信息。备数据库启动一个IO线程专门读取binary log中的内容然后写入relay log中。备数据库启动一个SQL线程会定时检查relay log中的内容如果发现有新内容则会立即在备数据库中执行从而实现数据的一致。
异步复制技术一般会应用在对用户请求响应时延要求很高的场景。
半同步复制技术
半同步复制技术的核心是用户发出写请求后主数据库会执行写操作并给备数据库发送同步请求但主数据库不用等待所有备份数据库回复数据同步成功便可以响应用户也就是说主数据库可以等待一部分备数据库同步完成后响应用户写操作执行成功。
半同步复制技术通常由两种方式
当主数据库收到多个备数据库中某一个回复数据同步成功后便可以给用户响应写操作完成。当主数据库收到超过一半节点回复数据更新成功后再给用户响应写操作成功。
我们之前谈过的ZooKeeper集群符合CP特征它采用的数据复制技术就是上述第二种半同步复制方案在ZooKeeper集群中写请求必须由Leader节点进行处理每次写请求Leader会给Follower发Proposal等待多数节点同意后写操作才可成功。通过这样的方式ZooKeeper实现了一致性。
数据复制技术选型
多数的分布式存储系统可以通过配置来选择不同的数据复制技术例如
MySQL的数据库集群支持全同步复制、异步复制和半同步复制三种模式。Oracle在数据复制方面提供了最大保护模式半同步复制技术的第一种方式、最大性能模式异步复制技术和最大可用性模式平时采用最大保护模式主备发生网络故障时采用最大性能模式这样在一致性和可用性之间做了权衡。
三种不同的数据复制技术的详细比较如下。