美文网首页
《全栈工程师修炼指南》学习笔记 18

《全栈工程师修炼指南》学习笔记 18

作者: VioletJack | 来源:发表于2023-02-21 11:36 被阅读0次

数据的持久化和一致性

可用性

保证服务对于客户端的可用。
服务为了高可用,就要部署多个节点;数据为了高可用,就要存放多个备份。

一致性

保证服务的数据对于客户端来说是一致的。
一致性,简单来说指的是在存储系统中,客户端对数据的读写行为是可预期的、符合一定规则的。
可以预期和符合规则,而不是说读到的数据是一致的、准确的和最新的。
一致性的判断要从客户端来看。存储系统实际存储的数据可以某些时候不遵从我们所需的一致性,而只需要保证存储系统的客户端能读取到一致的数据就可以了。

数据持久化

本质上就是把内存中的数据给转换并写入指定的存储系统中,这个过程是保证数据不丢失的基本方式。有了数据副本,一致性就成了逃不开的话题。

一致性模型

强一致性 —— 在任意时间下,读操作总是能取到最近的一次的写入数据。
弱一致性 —— 读操作不一定能够获取到最新写入的数据,比如缓存。
最终一致性 —— 介于强一致性和弱一致性之间,写操作之后立即执行读操作,可能无法读到最新的值,但是如果经过一个指定的时间窗口,就能保证可以读到那个更新后的值。比如搜索引擎。

数据高可用的架构技术

简单备份 Backups

定期或按需对存储系统中的数据进行全量或者增量的复制,并保存为副本。
缺点是一旦存储系统挂掉了,服务也就中断了。没有可用性。

Multi-Master

存在多个主节点,各自都提供完整的读写服务,数据备份之间的互相拷贝为了不影响读写请求的性能,通常是异步进行的。
优点是如果某个节点挂掉了,其他节点还可以继续提供服务。
缺点是本地事务可以提交成功,但全局事务却可能失败。
在某个节点写操作成功,而数据拷贝还没完成的时候,这个节点挂掉了。就会有数据丢失。
几个节点同时提交成功,但如果发生事务冲突,就会很麻烦。

Master-Slave

只存在一个可读可写的 Master 节点,而存在多个只读的 Slave 节点,每当有通过 Master 节点的更新出现,数据会以异步的方式单向拷贝到所有 Slave 节点上去。
优点:适用于读大于写的业务,读的可扩展性较强,而且不存在事务冲突。
缺点:只有一个可写节点,所以写的扩展性很差。数据同步也是异步进行的,可能存在数据丢失的问题。

Master-Slave 解决异步备份导致的数据丢失问题。

同步备份数据到“最小副本数量”的节点中,成功后异步备份其他节点。
这种数据拷贝的方法是部分同步、部分异步的,既降低了异步导致的数据丢失的可能性,又避免了同步导致的某个 Slave 节点的问题导致 Master 长时间等待的问题。

Master-Slave 写入节点故障

如果 Master 节点故障导致无法写入,那么用一个 Slave 节点顶上去成为新的写入节点。

各种备份技术的特点

Backups、M/S 和 MM 得益于异步的副本拷贝,能够做到低延迟,这就无法做到强一致性;而 2PC 和 Paxos 通过同步操作可以做到强一致性,却带来了高延迟。

相关文章

网友评论

      本文标题:《全栈工程师修炼指南》学习笔记 18

      本文链接:https://www.haomeiwen.com/subject/uiaikdtx.html