读书笔记-云原生分布式存储基石:etcd深入解析.docx

读书笔记-云原生分布式存储基石:etcd深入解析.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

关于一致性

CAP原理

分布式系统中,讨论原子系统读写场景时,反复提到的CAP原理:

Consistency:(强)一致性,任意时刻所有节点上的数据保持同步,所有读写操作就是原子的、有序的

Availability:可用性,任何非故障节点必须在有限时间内对请求作出响应

tolerancetothe?Partitionofnetwork:出现网络分区、丢失任意多消息的情况下,系统仍然能工作

任何分布式系统无法同时满足CAP:

满足AP:如果在出现网络分区的情况下,还要保证可用性,则一致性C必须放弃。因为网络分区导致节点间存在无法通信的情况,为了可用性节点必须使用本地数据提供服务,则就导致了不一致

满足CP:如果在出现网络分区的情况下,还要保证一致性,那就意味着节点之间的数据同步一直阻塞,丧失可用性

满足CA:不出现网络分区的情况下,一致性、可用性可以满足

某些NoSQL数据库,为了换取基本的可用性,往往放弃强一致性,仅仅要求最终一致性,此所谓BASE理论。

何为一致性

为了防止单点故障导致数据不可用、丢失,分布式系统通常引入副本机制。保证副本的一致性,成为分布式系统的核心问题。

一致性这个术语,在计算机的不同领域对了三个英文单词:

Coherence:在多核共享内存CPU中,各核心上的缓存的数据如何保持一致

Consensus:强调多个提议者如何就某件事情达成共识,Paxos、Raft等协议解决的就是共识问题

Consistency:强调并发状态下系统暴露给客户端的行为。CAP、ACID中的C都有这个意思

强一致性为何很难满足:

消息传递异步无序(Asynchronous):现实网络不是一个可靠的信道,存在消息延时、丢失,节点间消息传递做不到同步有序

节点宕机(fail-stop):节点持续宕机,数据损坏

节点宕机恢复(fail-recover):节点宕机后恢复,数据冲突

网络分区(Networkpartition):网络链路出现问题,将N个节点隔离成多个不能相互通信的部分

拜占庭将军问题(ByzantineGeneralsProblem):节点宕机或逻辑错误,甚至不按套路出牌抛出干扰决议的信息。大多数原则

一致性模型

严格一致性

即强一致性,也叫原子一致性,可线性化(Linearizability)。严格一致性要求

任何一次读操作,都能读取到数据的最近一次写的结果

所有进程看到的操作,其顺序均一致

顺序一致性

也叫可序列化。所有进程都以相同的顺序看到所有的修改。允许进程没读到其它进程对数据的写更新,但是每个进程读到数据的不同值的顺序必须一致。

因果一致性

要求对一个数据的写操作,必然发生在,读取到此写操作结果的读操作之前。

最终一致性

这种模型从用户,而非数据的角度阐述一致性。最终一致性属于弱一致性,允许用户读取到数据的更新存在延迟,此延迟叫做不一致性窗口。

复制状态机

包括etcd、ZooKeeper、HDFS在内的分布式系统,均遵循复制状态机模型。一个分布式的复制状态机,由多个复制单元组成。每个复制单元均是一个状态机,其状态保存在一组状态变量中。这些变量(也就是状态机的状态)仅仅能通过外部命令改变。

实现中,“一组状态变量“通常基于操作日志来实现。每个复制单元均存储操作日志,并且严格按顺序逐条执行日志中的操作指令。需要注意的是,执行顺序不一定需要和指令发起顺序完全一致,只需要保证所有复制单元是同样的顺序即可。

如果复制单元的初态相同,只需要保证操作日志(在它们之间)的一致性,就可以复制状态机的整体一致性。

拜占庭将军问题

拜占庭将军们依靠信差达成进攻or撤退的共识,在已知存在不可靠成员的情况下,忠诚将军们如何排除叛徒/间谍的影响?此即拜占庭将军问题。叛徒/间谍传递的虚假消息即拜占庭错误。

在分布式系统中,拜占庭错误可以是硬件错误、网络堵塞、连接断开、遭受攻击,等等。理论上说,要容忍N个拜占庭错误,则需要至少2N+1个复制节点。因此典型的一致性协议都要求半数以上的投票才能作出决定。

ETCD

Etcd是什么

Etcd是一种分布式的键值存储,用于保存分布式系统中的关键信息。Etcd:

提供基于gRPC的面向用户的简单API

支持TLS和可选的客户端身份验证

每秒可以支持高达10000写操作

基于分布式共识算法Raft

可以用于配置管理、服务发现、机器探活

可以很轻松的实现分布式锁、选举、写屏障、事件监控、租约等分布式协同

默认情况下,Etcd使用TCP端口2379来监听客户端请求,使用TCP端口2380进行Peer之间的通信。

/etc是Unix下存放配置文件的地方,d表示分布式的意思。可以看出Etcd适用于存储非频繁更新的配置信息,而非海量数据,但是目前版本在处理100GB级别的大量数据下性能也不错。此外,

您可能关注的文档

文档评论(0)

meow9x + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档