分布式系统理论-terms
Distributed programming is the art of solving the same problem that you can solve on a single computer using multiple computers.
Scalability
处理每件事情都需要注意它的规模,如果规模达到一定程度,处理的难度明显加强。例如你可以计算出一个房间中的人数,但是很难计算出一个国家的人数。在一个可扩展的分布式系统中,系统从小变大,但是相关性能没有变差。
比如在单机文件系统上加 RAID5 做数据冗余,来解决单机文件系统的可靠性问题。假设 RAID5 的数据修复时间是1天(实际上往往做不到,尤其是业务系统本身压力比较大的情况下,留给 RAID 修复用的磁盘读写带宽很有限),这种方案单机的可靠性大概是100年丢失一次数据(即可靠性是2个9)。看起来尚可?但是你得小心两种情况。一种是你的集群规模变大,你仍然沿用这个土方法,比如你现在有 100 台这样的机器,那么就会变成1年就丢失一次数据。另一种情况是如果实际数据修复时间是 3 天,那么单机的可靠性就直降至4年丢失一次数据,100台就会是15天丢失一次数据。这个数字显然无法让人接受。
scalability(可扩展性)是指在一个系统、网络以及处理能力范围内,可以处理不断增长的任务,并它们可以加强自己的能力来适应任务的增长(有点儿抽象)。
- 大小可扩展性:增加节点可以线性增加性能,并数据集的增加不增加延迟性
- 地理位置可扩展性:数据中心间延迟性采用合理的方式处理,则可以跨数据中心,减少用户数据查询响应时间
- 管理可扩展性:增加更多的节点不增加管理的开销
Performance
性能特点是在一定任务情况下,系统处理所需要的时间和资源使用量来衡量的。如快速回复(低延迟性)、高吞吐量以及计算资源低使用率。但是这几个性能,在实际中只能权衡。
latency
延迟性指事件初始化和发生的时间段。比如在分布式系统中写操作,就写发生到新的数据可以被用户看到的时间段。latency经常要受一些硬件(ram的性能、cpu性能)的限制。
Availability
指系统处在运行状态时间的比例,用户不可以访问,那么系统就是不可用。
分布式系统上可以获得单机非常的特性,比如单机就是无法容忍机器宕机。分布式系统可以由一些非常不好的组件构成,但是可以提供可信赖的系统。
Availability = uptime / (uptime + downtime)
例如:
| Availability % | How much downtime is allowed per year? |
|---|---|
| 90% ("one nine") | More than a month |
| 99% ("two nines") | Less than 4 days |
| 99.9% ("three nines") | Less than 9 hours |
| 99.99% ("four nines") | Less than an hour |
| 99.999% ("five nines") | ~ 5 minutes |
| 99.9999% ("six nines") | ~ 31 seconds |
availability不仅仅是uptime,还可能受网络中断以及该业务超出系统的功能的影响。
Fault tolerance
指在故障发生时,系统还可以正常运行(和没有发生故障时功能相同)的能力。
容错归结为:确定你所期望的故障,然后设计一个系统或一个算法可以容错他们。没有考虑过故障是无法容错的。
什么在阻止我们获得理想的状态呢?
有以下两个硬件方面的因素:
1 nodes的数量
2 nodes的距离
伴随着以下限制:
1 独立节点的增加,就增加了系统失败的概率(减小了availability并增加了管理成本)
2 独立节点的增加,就增加了节点的通信 (降低了可扩展的performance)
3 节点的跨机房部署,增加了节点之间的延迟性(降低了某些操作的performance)
可用性和性能是系统必须保证的,更高一级,可以考虑SLA(服务等级协议),如果我写数据,如何更快在其他地方看到?
在数据被写入时,什么可以保证耐久性?如果让系统运行一个计算,如何迅速返回结果?当组件发生故障,执行取出操作,什么样的影响将在在系统上?
设计技术:partition and replicate
如果要把数据分布在不同节点,那么上面两个技术非常关键。数据可以被分割在多个节点(partition),以允许更多的并行处理。也可以被复制或缓存在不同的节点上,以减少客户端和服务器之间距离以及更大的容错性(replicate)

partitioning是把数据分成相互独立的数据集,这样可以避免数据的增长带来的影响。partitioning是通过限制被检查数据集的大小和定位相关数据在相同partition来提高性能的(如一个数据一分钟的记录,那么这个数据分布在一台机器和多台机器性能是截然不同的)。容许partition独立失败,来挺高可用性。在不可用情况下,容易更多节点失败。
replication可以通过复制数据集,提高计算和带宽能力。可以提高可用性,在不可用情况下,容易更多节点失败。当然replication又会带来一致性问题,后面再讨论一致性的问题。
参考文献:
分布式系统理论-terms的更多相关文章
- 分布式系统理论进阶 - Raft、Zab
引言 <分布式系统理论进阶 - Paxos>介绍了一致性协议Paxos,今天我们来学习另外两个常见的一致性协议——Raft和Zab.通过与Paxos对比,了解Raft和Zab的核心思想.加 ...
- 分布式系统理论进阶 - Paxos变种和优化
引言 <分布式系统理论进阶 - Paxos>中我们了解了Basic Paxos.Multi Paxos的基本原理,但如果想把Paxos应用于工程实践,了解基本原理还不够. 有很多基于Pax ...
- 分布式系统理论--CAP理论、BASE理论
问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然 ...
- 分布式系统理论进阶7:Paxos变种和优化
本文转自:https://www.cnblogs.com/bangerlee/p/6189646.html 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到 ...
- Java工程师学习指南第8部分:分布式系统理论与实践
本文整理了微信公众号[Java技术江湖]发表和转载过的分布式相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧. 细聊分布式ID生成方法 近期面试Java后端的一些感悟 本专栏介绍分布式的 ...
- 分布式系统理论进阶 - Paxos
引言 <分布式系统理论基础 - 一致性.2PC和3PC>一文介绍了一致性.达成一致性需要面临的各种问题以及2PC.3PC模型,Paxos协议在节点宕机恢复.消息无序或丢失.网络分化的场景下 ...
- 分布式系统理论之Quorum机制
一,Quorum机制介绍 在分布式系统中有个CAP理论,对于P(分区容忍性)而言,是实际存在 从而无法避免的.因为,分布系统中的处理不是在本机,而是网络中的许多机器相互通信,故网络分区.网络通信故障问 ...
- 分布式系统理论:一致性协议Paxos
Paxos算法是莱斯利·兰伯特(Leslie Lamport)于1990年提出的一种基于消息传递的一致性算法. Paxos 算法是一个解决分布式系统中,多个节点之间就某个值(注意是某一个值,不是一系列 ...
- 从分布式一致性谈到CAP理论、BASE理论
问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然 ...
随机推荐
- Delphi Math单元函数
本文转至http://blog.sina.com.cn/s/blog_976ba8a501010vvf.html 这个单元包含高性能的算术.三角.对数.统计和金融方面的计算及FPU程序函数用于补充De ...
- kubernetes理论基础#开始入坑啊!
什么是kubernetes 首先,他是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术的基础上, ...
- Python递归与迭代
1.递归与迭代: 递归和迭代都是循环的一种.简单地说,递归是重复调用函数自身实现循环.迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结 ...
- dfs 队列
题目来源 poj 1562 Description The GeoSurvComp geologic survey company is responsible for detecting unde ...
- 搭建简单Django服务并通过HttpRequester实现GET/POST http请求提交表单
调试Django框架写的服务时,需要模拟客户端发送POST请求,然而浏览器只能模拟简单的GET请求(将参数写在url内),网上搜索得到了HttpRequester这一firefox插件,完美的实现了模 ...
- 成都Uber优步司机奖励政策(3月21日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- DBoW2 词袋模型笔记
DBoW算法用于解决Place Recognition问题,ORB-SLAM,VINS-Mono等SLAM系统中的闭环检测模块均采用了该算法.来源于西班牙的Juan D. Tardos课题组. 主要是 ...
- C语言灵魂--指针
什么是指针?理解指针之前得知道什么是地址. 1.数据在计算机中的存储形式: 数据在计算机中是以二进制的形式存储的.计算机的存储器是用半导体集成电路构成的,有N多个二极管元件组成. 每一个二极管元件就如 ...
- 图的基本算法(BFS和DFS)
图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系.对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示. 图可以分为有向图和无向图,一般用G=(V,E)来表示图. ...
- 一些窍门 drawable
java.lang.Object android.graphics.drawable.DrawableKnown Direct Subclasses BitmapDrawable, C ...