分布式系统

分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是…
管理

详细内容

概述

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据[1]

分布式系统与分供系统供能系统图

特征

  • 异构性
  • 开放性
  • 并发性
  • 缺乏全局时钟[2]

类别

分布式系统分为分布式计算(computation)与分布式存储(storage)[3]

通信机制

分布式系统之所以能够成为一个系统,作为一个整体为用户提供服务和存储,必须依赖以网络通信,以Java语言为基础,阐述网络通信间的基本原理及一些常用的通信协议。

通信的基本原理

通信就是把信息完整有效的从一台计算机传输到另一台计算机。计算机的网络模型有七层网络模型和TCP/IP四层模型。

七层网络模型

TCP/IP四层模型跟OSI七层模型的对比关系如下图[4]

均衡调度算法

在分布式系统中,整个系统的效率,并不是由单台服务器的所决定的,而是多台服务器共同协作的结果。分布式系统的能力受到单台服务器的性能、网络延迟、任务的分配、资源调度等各种因素的影响,所以在整个系统中网络负载均衡,任务调度显得尤其重要。通过这些基础方法的又可以组合使用,形成更高级一些负载均衡方法。

随机法

Random随机法顾名思义,就是采用随机的算法对集群的中的各个服务器节点进行调度,随机方法又可以分为完全随机和加权重随机。

轮询法

Round Ribbon轮询法,可以把集群中的服务器看成是一个环装的结构,依次对环上节点进行调度,轮询法和随机法和类似,不同之处在岁轮询法釆用一种顺序调用的方式。

加权法

Weight加权法,是负载均衡中最基础的一个方法,加权法顾名思义就是对集群中不同的机器进行不同的权重评估。

散列算法

Hash散列算法也叫哈希算法,常用的哈希算法有普通哈希算法、一致性哈希算法,基于IP的哈希算法和基于URL的哈希算法。

最少连接算法

Least Connect最少链接算法,是指从集群服务器列表中找到链接最少的机器,把请求转发大这台机器上[5]

传统无源式系统

同轴电缆分布系统

单路分布系统为了实现多系统覆盖,釆用合路的方式建设GSM与TD-LTE信号源。

双路分布系统

为了实现TD-LTE的MIMO特性,在需要覆盖的区域建设两路相同的分布系统,TD-LTE的两路信号分别馈入。

光纤分布系统

光纤分布系统由主单元(接入单元)、扩展单元和远端单元组成。主单元釆用光纤与扩展单元连接,扩展单元釆用光纤或网线与远端单元连接。

服务链追踪与监控

调用链

  • 当一个用户发起一个业务菜单页面请求时,Web前端生成唯一的traceid来标识本次动作。
  • 在服务层的每个环节都有各自唯一的id标识,通过parentid标识其环节。
调用链示意图

跟踪树

  • 基于traceid,将不同环节的跟踪信息进行归并汇总。
  • 基于id和parentid,还原调用链上下层的父子关系,包含于嵌套关系。

应用实践研究

软件设计组件化

电信运营支撑系统在实践中经常应用一种与技术没有关系的体系结构开展,系统在实践中不仅仅局限于特定的技术手段,此种系统结构是一个完全的分布模式的系统结构,在分布不同的物理位置之上的各个组件共同的完成业务流程。

企业流程抽象化

运营支撑主要目的就是保障企业流程的通畅性,对其进行有效控制。而流程控制的主要目的就是组件个体无需具备与流程操作具有关联的整体逻辑知识。

实行接口合同

电信运营支撑系统通过综合接口合同机制,组件的每一个接口都利用合同规范要求对其进行描述。

分层调度算法

数据集调度功能的伪代码实现如下:

Template template= init— template(“Template.xml”);//加载模版文件
page1:load(template);//加载数据分类
for each(1ist—url in page 1){put list_url into queue—list;
while(queue—list is not nul1)//当队列非空的时候
{
String list— url=queue— list.pull();
int pageNum = 1;
do{page2=load(1ist—url,pageNum);
for each(data_list in page2)
{ write(data jist,”data.txt”);}//将数据信息写入文件
pageNum++;
}while(pageNum<maxPageNum);
}
queue—product=load(”data.txt”);//初始化数据详情信息队列
while(queue—product is not nul1)//当维度队列非空的时候
{ String data=queue—data.pull();//从维度队列中取出数据
page:load(data);
for each(regular in template){ //事先定义好的凝聚层次聚类规则
locate and fetch the pro_ //进行数据信息分层
info;
}
}

挑战

  • 异构的机器与网络
  • 普遍的节点故障
  • 不可靠的网络[6]


百科摘录
1
如何通俗地理解「分布式系统」,它解决了哪些问题,有什么优缺点?下的回答内容摘录
那分布式系统的缺点又是什么呢? 头号缺点,部署复杂,就凭这点,就极不利于测试,严重影响敏捷。这个真的不是单EJB部署复杂,只要是分布式应系统,就一定部署复杂,我们可以想想目前的微服务,再轻量化设计,依然逃不开部署复杂的问题,虽然生产环境部署分开发布也有好处,但是90%的部署都发生在开发阶段,那么频繁的测试、开发调试和重新启动部署,对于个体程序员来讲,就是比单实例服务要更加是个沉重负担。 第二个缺点就是将原来集中在数据库的SQL访问模式转变成了网络服务之间的接口调用,无论是EJB也好,微服务也好,这种分布式系统的调用模式本质都是反人性的,因为人都喜欢集中在一个中心去解决问题,形式简单,出现变化更容易定位和适应,分散不同地方的服务,无论从服务编排也好,接口变更也好,错误跟踪也好,让人去处理都太费劲了。
看山看水不如看我 摘录于 2021-02-18
讨论量
7.5 万
 
帮助中心
知乎隐私保护指引 联系我们
 
举报中心
涉未成年举报 网络谣言举报 涉企侵权举报
 
关于知乎
下载知乎 知乎招聘 知乎指南 知乎协议
京 ICP 证 110745 号 · 京 ICP 备 13052560 号 - 1 · 京公网安备 11010802020088 号 · 京网文[2022]2674-081 号 · 药品医疗器械网络信息服务备案(京)网药械信息备字(2022)第00334号 · 广播电视节目制作经营许可证:(京)字第06591号 · 服务热线:400-919-0001 · Investor Relations · © 2024 知乎 北京智者天下科技有限公司版权所有 · 违法和不良信息举报:010-82716601 · 举报邮箱:jubao@zhihu.com
本站提供适老化无障碍服务