草庐IT

《分布式技术原理与算法解析》学习笔记Day02

技术修行者 2023-04-19 原文

分布式系统发展历程

分布式的发展过程经历了三个阶段:

  • 单机模式(单兵模式)
  • 数据并行或者数据分布式(游击队模式)
  • 任务并行或者任务分布式(集团军模式)

什么是单机模式,它的优缺点是什么?

单机模式是指所有应用程序和数据均步数在同一台电脑或者服务器上,由一台计算机完成所有的处理。

它的好处是功能、代码和数据集中,便于维护、管理和执行。

它的主要问题是性能受限、存在单点失败的问题。

什么是数据分布式模式,它的优缺点是什么?

它是指采用消息共享模式使用多台计算机并行运行或者执行多任务,核心原理是每台计算机上执行相同的程序,将数据进行拆分放到不同的计算机上进行计算。它强调对数据进行拆分,任务程序在每台机器上运行。

将程序从单机模式进化到数据分布式模式,需要两个步骤:

  1. 将应用和数据分离,分别部署到不同的服务器上。
  2. 对数据进行拆分,将同一类型的数据拆分到两个甚至更多的数据库中,这样应用服务器上的任务就可以针对不同数据并行执行了。

这种模式的好处在于可以利用多台计算机并行处理多个请求,使得我们可以在相同的时间内完成更多的请求处理,解决了单机模式的计算效率瓶颈问题。

这种模式的主要问题是对提升单个任务的执行性能及降低时延无效。

什么是任务分布式模式,它的优缺点是什么?

它是指将单个复杂的任务拆分为多个子任务,从而使得多个子任务可以在不同的计算机上并行执行。

任务并行模式完成一项复杂任务包括两个核心步骤:

  1. 将单任务拆分成多个子任务。
  2. 让多个子任务并行执行。

这种模式的好处在于提升了性能、扩展性和可维护性,它的主要问题是带来了设计上的复杂性。

什么是分布式?

分布式指将相同或者相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。

数据并行和任务并行都算是分布式的一种形态。

如何选择数据并行还是任务并行呢?一个简单的原则:任务执行时间短,数据规模大,类型相同且无依赖,则采用数据并行;任务复杂,执行时间长,任务可拆分,则可以考虑任务并行。在实际项目中,我们往往会两种模式并用。

分布式系统的衡量标准

分布式的目的是用更多的机器,处理更多的数据和更复杂的任务。

性能、资源、可用性和可扩展性是分布式系统的重要指标。

性能指标主要用来衡量一个系统处理各种任务的能力。常见的性能指标包括吞吐量、响应时间和完成时间

吞吐量指系统在一定时间内可以处理的任务数。常见的吞吐量包括QPS、TPS和BPS:

  • QPS,即查询数每秒,用于衡量一个系统每秒处理的查询数,通常用于读操作,越高说明对读操作的支持越好。
  • TPS,即事务数每秒,用于衡量一个系统每秒处理的事务数,通常用于写操作,越高说明对写操作的支持越好。
  • BPS,即比特数每秒,用于衡量一个系统每秒处理的数据量。

响应时间是指系统响应一个请求或输入需要花费的时间。它直接影响用户体验,对于时延敏感的业务非常重要。

完成时间是指系统真正完成一个请求或处理需要花费的时间。

资源占用是指一个系统提供正常能力需要占用的硬件资源,例如CPU、内存、硬盘等。

有两个资源占用情况需要注意:

  • 空载资源占用,一个系统再没有任何负载时的资源占用。
  • 满载资源占用,一个系统满负荷时的资源占用。

可用性是指系统在面对各种异常时可以正确提供服务的能力。

可用性有两种不同的衡量方式:

  1. 系统停止服务时间与总的时间之比
  2. 某功能的失败次数与总的请求次数之比

可靠性(Reliability)与可用性(Availability)有什么区别?

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

可扩展性是指分布式系统通过扩展集群机器规模提高系统性能(吞吐量、响应时间、完成时间)、存储容量、计算能力的特征,是分布式系统的特有性质。

衡量可扩展性的常见指标是加速比(Speedup),也就是一个系统进行扩展后相对扩展前的性能提升。

上述这些测量指标,有些指标会彼此约束。不同的分布式系统,针对测量指标,会有不同的侧重:

  • 电商系统最看重吞吐量。
  • IoT最看重资源占用指标。
  • 电信业务最看重响应时间、完成时间以及可用性。
  • HPC看到通过水平扩展提供系统的加速比。
  • 大数据最看重可扩展性。
  • 云计算最看重资源开销。
  • 区块链最看重吞吐量和完成时间。

有关《分布式技术原理与算法解析》学习笔记Day02的更多相关文章

  1. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  2. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  3. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  4. postman——集合——执行集合——测试脚本——pm对象简单示例02 - 2

    //1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  7. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  8. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  9. 牛客网专项练习30天Pytnon篇第02天 - 2

    1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析:    在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1:    print(k)k=k/2A.1000 B.10C.11D.9解析:    按照题意每次循环K/2,直到K值小于等

  10. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

随机推荐