没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1 概念
1.1 模型
节点
在具体的工程项目中 ,一个节点往往是一个操作系统上的进程。在本文的模型中 ,认
为节点是一个完整的、不可分的整体 ,如果某个程序进程实际上由若干相对独立部分
构成 ,则在模型中可以将一个进程划分为多个节点。
异常
1. 机器宕机 :机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概
率为千分之一左右 ,在实践中 ,一台宕机的机器恢复的时间通常认为是24 小
时 ,一般需要人工介入重启机器。
2. 网络异常 :消息丢失 ,两片节点之间彼此完全无法通信 ,即出现了“ 网络分
化” ;消息乱序 ,有一定的概率不是按照发送时的顺序依次到达目的节点 ,考
虑使用序列号等机制处理网络消息的乱序问题 ,使得无效的、过期的网络消息
不影响系统的正确性;数据错误;不可靠的TCP ,TCP 协议为应用层提供了可
靠的、面向连接的传输服务 ,但在分布式系统的协议设计中不能认为所有网络
通信都基于TCP 协议则通信就是可靠的。TCP协议只能保证同一个TCP 链接内
的网络消息不乱序 ,TCP 链接之间的网络消息顺序则无法保证。
3. 分布式三态 :如果某个节点向另一个节点发起RPC(Remote
procedure call)
调用 ,即某个节点A
向另一个节点B 发送一个消息 ,节点B 根据收到的消息内
容完成某些操作 ,并将操作的结果通过另一个消息返回给节点A ,那么这个RPC
执行的结果有三种状态:“成功”、“失败”、“超时(未知) ” ,称之为分
布式系统的三态。
4. 存储数据丢失:对于有状态节点来说 ,数据丢失意味着状态丢失 ,通常只能从
其他节点读取、恢复存储的状态。
5. 异常处理原则:被大量工程实践所检验过的异常处理黄金原则是 :任何在设
计阶段考虑到的异常情况一定会在系统实际运行中发生 ,但在系统实际运行遇
到的异常却很有可能在设计时未能考虑 ,所以 , 除非需求指标允许 ,在系统设
计时不能放过任何异常情况。
1.2 副本
副本(replica/copy) 指在分布式系统中为数据或服务提供的冗余。对于数据副本指
在不同的节点上持久化同一份数据 , 当出现某一个节点的存储的数据丢失时 ,可以从
副本上读到数据。数据副本是分布式系统解决数据丢失异常的唯一手段。另一类副本
是服务副本 ,指数个节点提供某种相同的服务 ,这种服务一般并不依赖于节点的本地
存储 ,其所需数据一般来自其他节点。
副本协议是贯穿整个分布式系统的理论核心。
副本一致性
分布式系统通过副本控制协议 ,使得从系统外部读取系统内部各个副本的数据在一定
的约束条件下相同 ,称之为副本一致性(consistency)。副本一致性是针对分布式系统
而言的 ,不是针对某一个副本而言。
1. 强一致性(strong consistency) :任何时刻任何用户或节点都可以读到最近
一次成功更新的副本数据。强一致性是程度最高的一致性要求 ,也是实践中最
难以实现的一致性。
2. 单调一致性(monotonic consistency) :任何时刻 ,任何用户一旦读到某个
数据在某次更新后的值 ,这个用户不会再读到比这个值更旧的值。单调一致性
是弱于强一致性却非常实用的一种一致性级别。 因为通常来说 ,用户只关心从
己方视角观察到的一致性 ,而不会关注其他用户的一致性情况。
3. 会话一致性(session consistency) :任何用户在某一次会话内一旦读到某
个数据在某次更新后的值 ,这个用户在这次会话过程中不会再读到比这个值更
旧的值。会话一致性通过引入会话的概念 ,在单调一致性的基础上进一步放松
约束 ,会话一致性只保证单个用户单次会话内数据的单调修改 ,对于不同用户
间的一致性和同一用户不同会话间的一致性没有保障。实践中有许多机制正好
对应会话的概念 ,例如php
中的session 概念。
4. 最终一致性(eventual consistency) :最终一致性要求一旦更新成功 ,各个
副本上的数据最终将达 到完全一致的状态 ,但达到完全一致状态所需要的时间
不能保障。对于最终一致性系统而言 ,一个用户只要始终读取某一个副本的数
据 ,则可以实现类似单调一致性的效果 ,但一旦用户更换读取的副本 ,则无法
保障任何一致性。
5. 弱一致性(week consistency) :一旦某个更新成功 ,用户无法在一个确定
时间内读到这次更新的值 ,且即使在某个副本上读到了新的值 ,也不能保证在
其他副本上可以读到新的值。弱一致性系统一般很难在实际中使用 ,使用弱一
致性系统需要应用方做更多的工作从而使得系统可用。
1.3 衡量分布式系统的指标
1. 性能 :系统的吞吐能力 ,指系统在某一时间可以处理的数据总量 ,通常可以
用系统每秒处理的总的数据量来衡量;系统的响应延迟 ,指系统完成某一功能
需要使用的时间;系统的并发能力 ,指系统可以同时完成某一功能的能力 ,通
常也用QPS(query per second)来衡量。上述三个性能指标往往会相互制约 ,
追求高吞吐的系统 ,往往很难做到低延迟;系统平均响应时间较长时 ,也很难
提高QPS。
2. 可用性 :系统的可用性(availability)指系统在面对各种异常时可以正确提供
服务的能力。系统的可用性可以用系统停服务的时间与正常服务的时间的比例
来衡量 ,也可以用某功能的失败次数与成功次数的比例来衡量。可用性是分布
式的重要指标 ,衡量了系统的鲁棒性 ,是系统容错能力的体现。
3. 可扩展性 :系统的可扩展性(scalability)指分布式系统通过扩展集群机器规模
提高系统性能(吞吐、延迟、并发) 、存储容量、计算能力的特性。好的分布
式系统总在追求“线性扩展性” ,也就是使得系统的某一指标可以随着集群中
的机器数量线性增长。
4. 一致性:分布式系统为了提高可用性 ,总是不可避免的使用副本的机制 ,从
而引发副本一致性的问题。越是强的一致的性模型 ,对于用户使用来说使用起
来越简单。
2 分布式系统原理
2.1 数据分布方式
剩余55页未读,继续阅读
资源评论
千源万码
- 粉丝: 764
- 资源: 368
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- HM2305B-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 基于52单片机、ADC0832、LCD1602、两个74HC393和一个74HC08的频率测量计 不能用,请私我
- HM2302-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- python实战项目-学生成绩管理系统(基础版)
- 微信小程序源码 实现查公交 滴滴公交 app 源码下载
- HM2302E-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 基于C#图片相似度比较,感知哈希算法
- VR开发的概要介绍与分析
- 自动驾驶定位系列教程七:点云畸变补偿.pdf
- HM2302D-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功