分布式原理与算法--概述

旧时模样 提交于 2020-03-06 12:49:47

分布式技术地图
在这里插入图片描述
按照业务的架构层次栈,我自底向上按照资源、通信、数据与计算的维度,梳理出了 4 个技术层次:分布式资源池化、分布式通信、分布式数据存储与管理、分布式计算
符合了架构设计的规律,在一定资源上,进行一定通信,通过一定计算,完成一定数据的加工和处理,从而对外提供特定的服务.
因为在分布式架构下需要去解决:协同、调度、追踪高可用,还有部署的问题.那么就可以从横向的技术层次,提炼出分布式协同、分布式调度、分布式追踪与高可用、分布式部署 4 个纵向技术线.

分布式的发展
1单兵模式:单机模式
比如:
在这里插入图片描述
所有的模块都在一台机器上,请求处理和数据部署都可能在一台机器上
好处:功能、代码和数据集中,便于维护、管理和执行
缺点:硬件系能提升是有限的,不可能无限的提高cpu等硬件性能.性价比也需要考虑.
除此之外,还会有单点失效的问题,一台机崩溃,所有的服务都不能用
2游击队模式:数据并行或数据分布式
在这里插入图片描述
在单兵模式下,进行数据的拆分,执行的步骤:
一 将应用与数据分离,分别部署到不同的服务器上
在这里插入图片描述
二 把数据按照系统进行拆分在这里插入图片描述
拆分以后系统就开始变的稍微复杂一些,需要相应的解决一些问题:
1要考虑负载均衡的问题,让每台机器的处理都比较均衡
2请求量大了,数据库的io就变成了瓶颈,那么就要进行数据库的读写分离,同时要考虑读写数据库的数据同步问题就要
3某些系统的数据库会成为热点服务器,那么此时就要加入缓存,提升查询效率,减轻数据库压力
缺点:如果单个请求特别复杂,那么没有办法提升执行的性能和降低延时
三 集团军模式:任务并行或任务分布式
在这里插入图片描述
其实就是在游击队模式下的继续拆分.多个子任务可以在不同的计算机上执行,带来了提供了更好的性能、扩展性、可维护性.同时带来了设计的复杂性.
总结来说,布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。

分布式的评估指标

性能(Performance)

包括吞吐量(Throughput)、响应时间(Response Time)和完成时间(Turnaround Time)

资源占用(Resource Usage)

一个系统提供正常能力需要占用的硬件资源,比如 CPU、内存、硬盘等。
空载资源占用:体现了这个系统自身的资源占用情况
满载资源占用:体现了这个系统全力运行时占用资源的情况

可用性(Availability)

系统的可用性可以用系统停止服务的时间与总的时间之比衡量
经常会听到可靠性和可用性,他们的区别如下:
可靠性:通常用来表示一个系统完全不出故障的概率,更多地用在硬件领域
可用性: 指在允许部分组件失效的情况下,一个系统对外仍能正常提供服务的概率

可扩展性(Scalability)

可扩展性,指的是分布式系统通过扩展集群机器规模提高系统性能 (吞吐、响应时间、 完成时间)、存储容量、计算能力的特性,是分布式系统的特有性质。
垂直扩展:当任务的需求随着具体业务不断提高时,升级系统的性能
水平扩展:当任务的需求随着具体业务不断提高时,不断增加机器来提高系统
衡量系统可扩展性的常见指标是加速比(Speedup)
  1目标是为了提高系统吞吐量,则可以用扩展后和扩展前的系统吞吐量之比进行衡量。
  2目标是为了缩短完成时间,则可以用扩展前和扩展后的完成时间之比进行衡量。

不同场景下的指标

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!