分布式系统理论-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.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然 ...
随机推荐
- Spring : JDBC模板, 事务和测试
JDBCTemplate简单配置:-------------------------------jdbc.properties配置----------------------------------- ...
- C#的哈希表Hashtable同步方法
在多线程环境的操作中对Hashtable进行操作需要进行同步控制,有两种方法,一种是由.Net自动控制:一种是在代码中自己控制. 1.使用Hashtable.Synchronized进行同步 Hash ...
- mac+win10:UEFI分区方式下安装windows 10
小编,最近通过在远景论坛上寻找教程--安装双系统(win10+mac os).经过一天努力,成功安装win10.为此,特地分享给各位正在需求教程的朋友,我在UEFI分区方式下安装windows 10的 ...
- Verilog_Day3
内容为书中第5章 条件语句 条件语句必须在过程块语句中使用.所谓过程块语句是指由 initial 和 always 语句引导的执行语句集合.除这两种块语句引导的begin_end块中可以编写条件语句外 ...
- winform 的语言国际化
http://www.cnblogs.com/codefish/p/4778269.html
- codechef Table Game(博弈)
题意 题目链接 很难概括.. Sol (因为比赛还没结束,所以下面讲的可能是“非官方”“正解”) maya这题我前前后后 断断续续的做了一个星期才A掉.CC一场challenge出两道打表题可有点过分 ...
- java.lang.RuntimeException: HRegionServer Aborted
java.lang.RuntimeException: HRegionServer Aborted 当我们启动hbase集群的时候,刚启动时每个节点上的进程都显示正常,过一会其他两个节点上的HRegi ...
- spring源码-BeanFactoryPostProcessor-3.2
一.BeanFactoryPostProcessor这个是spring容器的拓展之一,其目的是在容器初始化完成之前,通过beanFactory对上下文进行进行操作. 二.常用场景,需要对beanDef ...
- 海思NB-IOT模块HI2115芯片I2C通信
1. 首先确定硬件上I2C的引脚,手册上并没有,海思技术支持说是14和15脚,我们用的是12和13脚,问题在于,如果是硬件I2C应该不能随便换个引脚吧,难道是模拟的时序? 2. 下一个奇怪的地方,这个 ...
- 40套PSD欧美扁平化网页模板,可二次编辑开发,精品
40套PSD欧美扁平化网页模板,可二次编辑开发,绝对精品,下载地址:百度网盘, https://pan.baidu.com/s/1uMF4MM_3UC2Q6mbyNomLfQ 模板内容预览: 小