《分布式技术原理》根据极客时间的《分布式计算原理和算法》的收费课程整理得到,分享一起学习;

目录

分布式的三围

性能(Performance)

资源占用(Resource Usage)

可用性(Availability)可扩展性(Scalability)

场景和取舍


按照业务的架构层次栈,自底向上按照资源、通信、数据与计算的维度,梳理出了 4 个技术层次:分布式资源池化、分布式通信、分布式数据存储与管理、分布式计算。这样的划分符合业务架构设计的一般规律,即“在一定资源上,进行一定通信,通过一定计算,完成一定数据的加工和处理,从而对外提供特定的服务”。另一方面,这样的划分也整合了零散的知识点,具有完备性。分布式技术的地图:

分布式的三围

首先,从分布式技术的起源可以看出,分布式系统的出现就是为了用廉价的、普通的机器解决单个计算机处理复杂、大规模数据和任务时存在的性能问题、资源瓶颈问题,以及可用性和可扩展性问题。换句话说,分布式的目的是用更多的机器,处理更多的数据和更复杂的任务。由此可以看出,性能、资源、可用性和可扩展性是分布式系统的重要指标。没错,它们就是分布式系统的“三围”。接下来,我们一起来看看这几个指标吧。

性能(Performance)

性能指标,主要用于衡量一个系统处理各种任务的能力。无论是分布式系统还是单机系统,都会对性能有所要求。不同的系统、服务要达成的目的不同,关注的性能自然也不尽相同,甚至是相互矛盾。常见的性能指标,包括吞吐量(Throughput)、响应时间(Response Time)和完成时间(Turnaround Time)。

吞吐量指的是,系统在一定时间内可以处理的任务数。这个指标可以非常直接地体现一个系统的性能,就好比在客户非常多的情况下,要评判一个银行柜台职员的办事效率,你可以统计一下他在 1 个小时内接待了多少客户。常见的吞吐量指标有 QPS(Queries Per Second)、TPS(Transactions Per Second)和 BPS(Bits Per Second)。

QPS,即查询数每秒,用于衡量一个系统每秒处理的查询数。这个指标通常用于读操作,越高说明对读操作的支持越好。所以,我们在设计一个分布式系统的时候,如果应用主要是读操作,那么需要重点考虑如何提高 QPS,来支持高频的读操作。

TPS,即事务数每秒,用于衡量一个系统每秒处理的事务数。这个指标通常对应于写操作,越高说明对写操作的支持越好。我们在设计一个分布式系统的时候,如果应用主要是写操作,那么需要重点考虑如何提高 TPS,来支持高频写操作。

BPS,即比特数每秒,用于衡量一个系统每秒处理的数据量。对于一些网络系统、数据管理系统,我们不能简单地按照请求数或事务数来衡量其性能。因为请求与请求、事务与事务之间也存在着很大的差异,比方说,有的事务大需要写入更多的数据。那么在这种情况下,BPS 更能客观地反应系统的吞吐量。

响应时间指的是,系统响应一个请求或输入需要花费的时间。响应时间直接影响到用户体验,对于时延敏感的业务非常重要。比如用户搜索导航,特别是用户边开车边搜索的时候,如果响应时间很长,就会直接导致用户走错路。

完成时间指的是,系统真正完成一个请求或处理需要花费的时间。任务并行(也叫作任务分布式)模式出现的其中一个目的,就是缩短整个任务的完成时间。特别是需要计算海量数据或处理大规模任务时,用户对完成时间的感受非常明显。

资源占用(Resource Usage)

资源占用指的是,一个系统提供正常能力需要占用的硬件资源,比如 CPU、内存、硬盘等。一个系统在没有任何负载时的资源占用,叫做空载资源占用,体现了这个系统自身的资源占用情况。比如,你在手机上安装一个 App,安装的时候通常会提示你有多少 KB,这就是该 App 的空载硬盘资源占用。对于同样的功能,空载资源占用越少,说明系统设计越优秀,越容易被用户接受。

一个系统满额负载时的资源占用,叫做满载资源占用,体现了这个系统全力运行时占用资源的情况,也体现了系统的处理能力。同样的硬件配置上,运行的业务越多,资源占用越少,说明这个系统设计得越好。

可用性(Availability)可扩展性(Scalability)

可用性,通常指的是系统在面对各种异常时可以正确提供服务的能力。可用性是分布式系统的一项重要指标,衡量了系统的鲁棒性,是系统容错能力的体现。系统的可用性可以用系统停止服务的时间与总的时间之比衡量。假设一个网站总的运行时间是 24 小时,在 24 小时内,如果网站故障导致不可用的时间是 4 个小时,那么系统的可用性就是 4/24=0.167,也就是 0.167 的比例不可用,或者说 0.833 的比例可用。

除此之外,系统的可用性还可以用某功能的失败次数与总的请求次数之比来衡量,比如对网站请求 1000 次,其中有 10 次请求失败,那么可用性就是 99%。你可能经常在一个系统的宣传语中见到或听到 3 个 9(或 3N,3 Nines)、5 个 9(或 9N,9 Nines)。这些宣传语中所说的 3 个 9、5 个 9,实际上就是系统厂商对可用性的一种标榜,表明该系统可以在 99.9% 或 99.999% 的时间里能对外无故障地提供服务。

可靠性通常用来表示一个系统完全不出故障的概率,更多地用在硬件领域。而可用性则更多的是指在允许部分组件失效的情况下,一个系统对外仍能正常提供服务的概率。

杰夫 · 迪恩(Jeff Dean)曾在 Google I/O 大会上透露:谷歌一个基于 1000 台通用计算机的集群,一年之内就有 1000+ 硬盘会出现故障。由于现在比较常见的分布式系统基本上都是基于通用计算机的,这就意味着在这些系统中无法实现真正的可靠,所以我们也会在一些场合见到可靠性和可用性交换使用的情况。

可扩展性,指的是分布式系统通过扩展集群机器规模提高系统性能 (吞吐、响应时间、 完成时间)、存储容量、计算能力的特性,是分布式系统的特有性质。分布式系统的设计初衷,就是利用集群多机的能力处理单机无法解决的问题。然而,完成某一具体任务所需要的机器数目,即集群规模,取决于单个机器的性能和任务的要求。任务的需求随着具体业务不断提高时,除了升级系统的性能做垂直 / 纵向扩展外,另一个做法就是通过增加机器的方式去水平 / 横向扩展系统规模。这里垂直 / 纵向扩展指的是,增加单机的硬件能力,比如 CPU 增强、内存增大等;水平 / 横向扩展指的就是,增加计算机数量。好的分布式系统总在追求“线性扩展性”,也就是说系统的某一指标可以随着集群中的机器数量呈线性增长。

衡量系统可扩展性的常见指标是加速比(Speedup),也就是一个系统进行扩展后相对扩展前的性能提升。如果你的扩展目标是为了提高系统吞吐量,则可以用扩展后和扩展前的系统吞吐量之比进行衡量。如果你的目标是为了缩短完成时间,则可以用扩展前和扩展后的完成时间之比进行衡量。

场景和取舍

我们都希望自己的分布式系统是高性能、高可用、高扩展和低资源占用的。但出于硬件成本、开发效率等因素的约束,我们无法在性能、可用性、可靠性和资源占用做到面面俱到。因此,在不同的业务场景中,设计者们需要有所取舍。典型的电商、IoT、电信、HPC(高性能计算)、大数据、云计算、区块链等业务或系统对不同指标的诉求;

电商系统。对于一个电商系统而言,系统设计者最看重的是吞吐量,为了处理更多的用户访问或订单业务,甚至不惜牺牲一些硬件成本。

IoT。对于一个 IoT 系统而言,设计者最看重的是资源占用指标,因为在一些功能极简的 IoT 设备上 RAM、ROM 的可用资源通常都是 KB 级的。

电信业务。对于电信业务而言,最重要的无疑是响应时间、完成时间,以及可用性。因为,你在打电话时不希望你的声音半天才被对方听到,也不希望半天才听到对方的回应,更不希望你的电话无法拨出。

HPC。HPC 系统最显著的特点是任务执行时间极长,一个天体物理任务的分析和计算通常耗时数周甚至数月。因此,通过水平扩展来提高系统的加速比,是 HPC 系统设计者需要关注的。

大数据。大数据任务的处理时间可能相对 HPC 系统来讲比较短,但常见的完成时间也达到了小时级,所以扩展性也是大数据系统首先要考虑的。

云计算。对于一个云计算系统而言,常见任务是虚拟主机或容器的创建、资源调整、销毁等操作,如何减少这些操作的完成时间,从而提升用户体验是设计者们要重点关注的。另外,云计算系统本质上卖的是资源,那么降低系统本身的资源开销,也是系统设计的重中之重。

区块链。区块链的吞吐量比较低,比特币的 TPS 只有 7 次每秒,单平均一次交易的确认就需要 10 分钟左右,因此吞吐量和完成时间通常是区块链系统设计者的首要目标。

按照不同维度,分布式系统的指标可以分为性能、资源占用、可用性、可扩展性这四大类。我们自然希望自己的系统,是高性能、高可用、高扩展和低资源占用的,但考虑到硬件成本、开发效率等因素,必须要在设计不同的系统、业务时有所取舍。

分布式技术原理(一):分布式的三围相关推荐

  1. 大数据技术原理与应用 第三版 林子雨 期末复习(二) Hadoop HDFS HBase

    大数据技术原理与应用 第三版 林子雨 期末复习(二) Hadoop HDFS HBase Hadoop生态系统 HDFS HDFS结构 块 Name Node与Second Name Node与Dat ...

  2. springcloud分布式事务解决方案_搞懂分布式技术18:分布式事务常用解决方案

    本文转载自 http://linkedkeeper.com 本文内容参考网络,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 http ...

  3. 分布式技术原理(九):分布式体系结构之集中式结构

    分布式体系结构之集中式结构 云这个话题对我们来说已经非常熟悉了.可以说,云在我们的生活中无处不在,比如我们平时看的视频通常就是放在云上的.当我们要播放一段视频时,请求会先转发到云上,从云上下载数据到本 ...

  4. 分布式技术原理(七):分布式计算

    目录 分布式计算 什么是分而治之? 分治法的原理 MapReduce 工作原理 MapReduce 实践应用 总结 分布式计算模式之Stream Stream 工作原理 分布式计算 Hadoop 这个 ...

  5. 分布式技术原理与实战45讲--06 加餐1:如何准备一线互联网公司面试?

    本课时我们来讲讲如何准备一线互联网公司面试. 互联网技术面试的特点 互联网公司的技术面试有一些侧重点,国内互联网公司和外企的侧重点又有不同.BAT 互联网公司看重项目能力,重点考察语言深度和项目能力, ...

  6. 分布式技术原理与实战45讲--05 第05讲:共识问题:区块链如何确认记账权?

    本课时我们主要讲解"共识问题:区块链如何确认记账权?" 区块链可以说是最近几年最热的技术领域之一,区块链起源于中本聪的比特币,作为比特币的底层技术,本质上是一个去中心化的数据库,其 ...

  7. 分布式技术原理(八):分布式存储

    目录 分布式存储 分布式系统设计原则 CAP准则 CAP策略选择 分布式存储系统三要素

  8. 大数据技术原理与应用 第三篇 大数据处理与分析(三)Spark

    一. Spark简介 Spark最初由美国加州伯克利大学(UCBerkeley)的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的.低延迟的数据分析应用程序 1.1 ...

  9. 分布式锁原理——redis分布式锁,zookeeper分布式锁

    首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法.变量. 在一个进程中,也就是一个jvm 或者说应用中,我们很容易去处理控制,在j ...

  10. 分布式爬虫原理之分布式爬虫原理

    我们在前面已经实现了Scrapy微博爬虫,虽然爬虫是异步加多线程的,但是我们只能在一台主机上运行,所以爬取效率还是有限的,分布式爬虫则是将多台主机组合起来,共同完成一个爬取任务,这将大大提高爬取的效率 ...

最新文章

  1. 【Android】Android 设置Activity窗体 不显示标题和全屏显示
  2. python学习之if语句
  3. Winform中设置ZedGraph的X轴的刻度根据曲线获取
  4. access ole 对象 最大长度_Redis 数据结构和对象系统,有这 12 张图就够了!
  5. 基于Keras的卷积神经网络用于猫狗分类(进行了数据增强)+卷积层可视化
  6. 枚举类型和int以及string的相互转换
  7. SQL 已死,但 SQL 将永存!
  8. linux下把进程注册成服务,用service 调用
  9. 无损音乐刻录成cd有意义吗_这5个强大免费的无损音乐网站,你收藏了吗?
  10. requests和xml的结合应用
  11. php整型的最大值,php整型(Integer)
  12. Chrome网页翻译失效的解决方案
  13. IBM CEO彭明盛年薪上涨11%达2090万美元
  14. Google Android EDLA协议及AER认证
  15. 那些著名网站的90年代(转)
  16. 桌面只能进入计算机,Win7电脑开机无法正常启动只能进入安全模式怎么解决
  17. enet分割_[论文笔记] 图像语义分割——ENet(ICLR 2017)
  18. Ubuntu虚拟机中编译运行cgminer挖矿软件
  19. mysql error 1044
  20. php 随机数 抽奖 页面,源生JS做出抽奖页面

热门文章

  1. Java不同字符使用下划线分隔_004_Java语言基础(a-变量)
  2. 华为企业组网实例:VRRP+MSTP典型组网配置
  3. Python数据分析基础(2)
  4. Google Docs 简介
  5. mysql的group by语句不会产生_MySQL:为什么查询列表中多了它,GROUP BY语句就会报错呢?...
  6. 无人机行业的机遇与挑战
  7. 密码学复习笔记2【分组密码/S-DES、DES】
  8. [SugerTangYL] 时钟管理(分频器、倍频器、锁相环)Verilog
  9. windows开机密码破解-hydra(字典)
  10. CR渲染器全景图如何渲染颜色通道_【3D】日不落投影灯 VR/CR投影效果制作