什么是分布式软件系统

   :什么是分布式软件系统?分布式软件系统是什么意思?

分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。

分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。

分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个分布式处理系统的多台计算机上被同时执行。它与集中式的程序设计语言相比有三个特点:分布性、通信性和稳健性。

分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。

分布式数据库系统由分布于多个计算机结点上的若干个数据库系统组成,它提供有效的存取手段来操纵这些结点上的子数据库。分布式数据库在使用上可视为一个完整的数据库,而实际上它是分布在地理分散的各个结点上。当然,分布在各个结点上的子数据库在逻辑上是相关的。

分布式系统的几个重要特性

从使用分布式系统的用户所关心的主要问题出发,我们可以看出分布式系统的具有以下几个重要特征。

1) 高稳定性

分布式系统的用户获取服务的请求随时随地都有可能发生。所以,我们需要分布式系统一年365天7*24小时随时给用户提供服务,分布式系统的稳定性要求非常高。如果系统的稳定性不好,经常发生宕机事故,将会伤害到用户的忠诚度。

2) 高可用性

什么是高可用?这个概念在分布式系统中是一个非常重要的概念。高可用是指,当系统发生了不可抗拒的灾难(例如机房断电,火灾等)以后,能快速恢复服务的能力。通常来说,也就是双机热备。当系统的一部分设备发生灾难以后,能使服务快速、无缝的切换到备份集群上,使用户几乎感受不到灾难的发生。

3) 高可扩展

一般来说,分布式系统要求能承载海量的数据,而且要求运行相当长的时间。而物理设备的空间、容量和性能是一定的。对于一家不断发展的公司而言,用户的数据量却是不断增长的。在系统运行了一段时间以后,往往会受到物理设备的局限,例如,物理设备的总硬盘空间不够,或者物理设备的总运算能力不够,或者网络吞吐能力不足等局限。一般来说,架构设计合理的分布式系统,是可以通过增加物理设备以实现增加系统服务能力的,例如用户并发量,系统数据吞吐量,系统数据总容量等。如果不能做到这一点,那么系统的可扩展性到达极限,可能需要对系统进行重新设计。然而,总体来说,分布式系统的扩展性是相对的,不是无限的。

4) 高可管理

我们知道,分布式系统需要持续运行相当长的时间。通常来说,系统运行的时间越长,宕机的风险也就越大。从概率统计的观点来看,我们很容易理解这一点。正如我们都知道,飞机的出事故的概率是很低的,然而长时间运行无故障以后,发生事故的概率就会明显上升。因此,停机检修成为了降低故障率的一个重要措施。分布式系统也一样。我们需要在相对稳定的系统运行了一段时间以后,分集群对服务器进行检修,这里就涉及到系统的可管理性。这里需要强调的是,系统检修不等于停止服务。对于分布式系统,我们需要始终坚持的一个原则是一年365天7*24小时提供服务。系统的可管理性可以分为两种,一种是故障发生时的管理;一种是故障发生前的管理。故障隔离属于发生故障时的管理;而系统检修则是故障发生前的管理,即事前管理。我们希望做到事前管理。

那么,如何才能做到事前管理呢?由于系统具有高可用性,我们可以实现对系统的检修。例如,如果我们的分布式系统采用的是主辅集群设计,通常情况下,辅集群是不对外提供服务,而只是备份用的,那么这时候,我们可以将用户流量切换到辅集群上,关闭主机群的服务,对主集群的系统进行检修,排除一些隐患和故障以后,重新开启主机群的服务,将用户流量切换到主集群。这个是采用主辅集群轮换的方式实现系统检修的。当系统流量非常大的时候,这种做法的风险非常大,主要原因是,在用户流量的切换过程中,瞬间的流量冲击太大,容易出现问题。

还有一种比较好的方式是局部检修。如果系统设计采用的是局部对等的小集群设计,我们可以先将某一个小集群(例如20台服务器)挂起(系统挂起指的是保持老用户的服务功能,拒绝为新的用户提供服务),等待该集群的用户切换到其他的对等的小集群上,当切换完成后,就可以对该小集群的服务器进行检修。这样做的好处在于切换过程中,用户流量小,避免了大流量冲击的风险。

5) 高并发性

高并发性是一个相对比较容易理解的概念,即系统在单位时间内能同时接受和处理的请求数量。高并发性也是分布式系统的一个基本要求。然而,承载着不同应用的不同分布式系统,对于并发设计的要求也是有很大差异的。一般来说分为两种情况:一种情况,需要对会话过程进行保持(session保持),即,当用户与分布式系统的连接断开以后,需要重新连回到分布式系统内部原来分配给用户提供服务的设备上;另一种,不需要对会话过程进行保持,也就是说,用户与分布式系统内部的某一物理设备连接断开后,重新连接到分布式系统内部的任意物理设备也能提供正确的服务。

一般来说,解决高并发问题,核心的设计是负载均衡。在某一个时刻,单一物理设备的处理能力是有限的。将用户流量、用户的并发请求合理的分配到更多的物理设备上,是解决高并发问题的基本方法。负载均衡算法(有很多种)往往也是分布式系统测试的核心内容。

6) 数据一致性

分布式系统具有硬件设备分布式零散性的特点,内部数据的一致性也是非常重要的。数据的时效性对于用户来是非常重要的。然而,这也是分布式系统设计中需要解决的一个难题。对于海量数据和跨地域数据同步来说,则更加困难。首先,我们要保证数据同步的正确性;其次,我们需要保证数据同步的高效性,即在足够短的延时中完成数据同步。由于分布式系统可能存在地域分散的特点,区域间的固定延时(RTT)将是分布式系统设计的一个难题。

一个典型的分布式系统的应用

在分布式系统的应用中,下图描述的是一个典型的应用。A公司的用户遍布全球各地,该公司在全球分别设有多个IDC数据服务中心(例如:纽约、北京、东京等)。某北京用户Jennifer一直在北京使用A公司的数据服务,并且保存了相当多的文档和数据等。由于工作需要,Jennifer到纽约出差,需要使用A公司的数据服务,使用以前保存的文档和数据。这时,Jennifer使用到的数据服务将由A公司部署在纽约的数据服务器提供。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/23931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阻抗板是否高可靠,华秋有话说

随着高频高速电子产品的快速发展,信号传输过程更容易出现反射、串扰等信号完整性问题,且频率越高、传输速率越快,信号损耗越严重,如何降低信号在传输过程中的损耗、保证信号完整性是高频高速PCB发展中的巨大挑战。 在高速PCB设计…

Spring源码(一) — 序言

序言 Java程序员的日常开发一定都离不开Spring的框架,从Spring、SpringMVC、SpringBoot、SpringCloud… 而Spring框架就是Spring家族中最基础也是最重要的一个框架。 Spring 我们常说的Spring往往都绕不开IOC(控制反转)和AOP(切…

【TellMeCode】使用VSCODE + ChatGPT辅助分析推测源码

【TellMeCode】使用VSCODE ChatGPT辅助分析推测源码 0x00 功能简介 根据代码上下文相关信息,如工作区文件夹名称,代码所在路径等一系列信息,提供给大模型更多元和尽可能多的信息,利用其自身优势去检索相关的文档和博客&#xf…

QT开发实战-动态壁纸软件

动态壁纸软件开发 项目源代码在下面链接获取: ----------------------------- 开发者:CodeSharkSJ 希望此项目能加强你对Qt的应用 文章目录 项目图与开发环境核心技术原理自定义窗口程序UI布局背景绘制样式表基本实现QWebEngineQMedia使用系统托盘隐藏记忆功能应用程序打包 …

RestCloud荣膺广东省优秀软件产品奖,引领国内数据集成领域!

近日,“2022年广东软件风云榜”名单公布,“谷云ETL数据交换软件”凭借其在助力企业数字化转型升级过程中的卓越表现,荣获由羊城晚报报业集团、广东软件行业协会、广东省大数据协会联合颁发的“优秀软件产品和解决方案”奖。 数字化转型是推动…

【P38】JMeter 随机控制器(Random Controller)

文章目录 一、随机控制器(Random Controller)参数说明二、测试计划设计2.1、测试计划一2.2、测试计划二2.3、勾选忽略子控制器块 一、随机控制器(Random Controller)参数说明 可以让控制器内部的逻辑随机执行一个,一般…

深度学习-第T8周——猫狗识别

深度学习-第T8周——猫狗识别 深度学习-第T8周——猫狗识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目 四、数据预处理1、 加载数据1.1、设置图片格式1.2、划分训练集1.3、划分验证集1.4、查看标签1.5、再次检查数据1.6、配置数据集 2、数据可视化 五、搭建…

机器学习常识 7: 决策树

摘要: 决策树是一种与人类思维一致, 可解释的模型. 1. 决策树的结构 人类的很多知识以决策规则的形式存储: 如果今天是阴天 (outlook overcast), 就去打球.如果今天出太阳 (outlook sunny) 而且湿度不高于 70% (humidity ≤ \le ≤ 70), 就去打球.如果今天出太阳 (outloo…

1688商品ID采集一件代发详情页面数据

本篇博文介绍了对1688商品详情API的二次封装,将URL参数封装成Python函数,直接传入参数即可获取搜索结果,例如1688商品标题、价格、一件代发、sku属性和URL等。提供了详细的代码示例和接口调用Demo。 1688.item_get-获得1688商品详情数据 1.请…

APP开发死亡潮来临 小程序是否会取而代之?

移动互联网的发展, APP开发行业也迎来了它的大时代。据有关数据显示,2017年上半年国内新增的 App数量达到了创纪录的449万款,用户使用时长超过了200亿分钟。移动互联网已成为名副其实的“流量”产业,也因此诞生出一大批 APP开发公…

Maven 概述及下载安装

一、为什么要学习 Maven 我们构建一个项目需要用到很多第三方的类库,就需要引入大量的jar包,并且Jar包之间的关系错综复杂,缺少任何一个Jar包都会导致项目编译失败。Maven 能帮助我们下载及管理依赖。 本地项目代码开发完成后,我…

类和对象【3】初始化列表

全文目录 引言初始化列表定义特性 总结 引言 上一篇文章中介绍了构造函数,它可以在实例化一个类对象的时候自动调用,以初始化类对象: 戳我看默认成员函数详解 但是,不难发现,在构造函数体中对成员变量的初始化其实是属…

gdb调试 与 coredump

gdb调试 与 coredump调试 1. 启动gdb2.gdb中的相关命令3. coredump调试(附属于gdb调试中一种,当程序出现错误时,会使用coredump调试)1)coredump是什么?2)前期设置3)什么情况下会导致…

word打印为pdf去掉批注和修订记录

对于这个问题某乎上充斥着垃圾回答,大多引流到自家开发的pdf产品上。其实背后的方法都是一样的,就是关掉批注,用word自带的功能就能解决,凡是word编辑软件都有类似功能 直接用word打印为pdf后的效果 下图为打印出来的pdf文件&…

【算法】不使用LinkedHashMap实现一个LRU缓存

文章目录 什么是LRU?设计思路代码实现 LRU是我在面试过程中遇到的比较多的算法题了,并且我自己的项目中也手写了LRU算法,所以觉得还是有必要掌握一下这个重要的算法的。 什么是LRU? LRU是一种缓存淘汰策略。 我们知道&#xff0…

大环境不好难找工作?三面阿里,幸好做足了准备,已拿offer

大环境不好难找工作?三面阿里,幸好做足了准备,已拿offer 三面大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜)。回来之后把这些题目做了一个分…

R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践与拓展

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

增强型本地文件搜索工具:Find Any File

Find Any File是mac上一款增强型本地文件搜索工具,可以让你在本地磁盘上搜索、查找任何文件,包括本地磁盘的名称、 创建或修改日期、 大小或类型和创建者代码等。小编现为大家提供最新Find Any File Mac破解版,欢迎需要的朋友下载使用。 Find…

屏幕挂灯是不是智商税?明基ScreenBar Halo屏幕挂灯初体验

目录 一、屏幕挂灯是不是智商税?二、文心一言眼里的屏幕挂灯1、明基ScreenBar Halo屏幕挂灯2、屏幕挂灯和普通台灯哪个好? 三、屏幕挂灯初体验四、使用体验五、无线控制器六、专业角度分析1、屏幕工作照明,不是随便一盏灯就可以2、引导光线照…

路径规划算法:基于入侵杂草优化的路径规划算法- 附代码

路径规划算法:基于入侵杂草优化的路径规划算法- 附代码 文章目录 路径规划算法:基于入侵杂草优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…
最新文章