什么是分布式软件系统

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

分布式软件系统(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.mzph.cn/news/340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 2D骨骼动画+IK反向动力学

本文言简意赅的完成这个流程,废话不多说!干! 等等,先看看效果 第一步:导入2D Animation包 当前环境:Unity3D 2021(不需要完全一样也可以) 进入unity后点击Window->PackageManager打开如下界面 按Insta…

LangChain 联合创始人下场揭秘:如何用 LangChain 和向量数据库搞定语义搜索?

近期,关于 ChatGPT 的访问量有所下降的消息引发激烈讨论,不过这并不意味着开发者对于 AIGC 的热情有所减弱,例如素有【2023 最潮大语言模型 Web 开发框架】之称的大网红 LangChain 的热度就只增不减。 原因在于 LangChain 作为大模型能力“B2…

Vue3_简介、CompositionVPI、新的组件

文章目录 Vue3快速上手1.Vue3简介2.Vue3带来了什么1.性能的提升2.源码的升级3.拥抱TypeScript4.新的特性 一、创建Vue3.0工程1.使用 vue-cli 创建2.使用 vite 创建 二、常用 Composition API1.拉开序幕的setup2.ref函数3.reactive函数4.Vue3.0中的响应式原理vue2.x的响应式Vue3…

万字长文 | Hadoop 上云: 存算分离架构设计与迁移实践

一面数据原有的技术架构是在线下机房中使用 CDH 构建的大数据集群。自公司成立以来,每年都保持着高速增长,业务的增长带来了数据量的剧增。 在过去几年中,我们按照每 1 到 2 年的规划扩容硬件,但往往在半年之后就不得不再次扩容。…

《Redis 核心技术与实战》课程学习笔记(八)

String 类型为什么不好用了? String 类型可以保存二进制字节流,只要把数据转成二进制字节数组,就可以保存了。String 类型并不是适用于所有场合的,它有一个明显的短板,就是它保存数据时所消耗的内存空间较多。 为什么…

Unity Shader - SV_POSITION 和 TEXCOORD[N] 的varying 在 fragment shader 中输出的区别

起因 因另一个TA同学问了一个问题 我抱着怀疑的心态,测试了一下 发现 varying 中的 sv_position 和 texcoord 的值再 fragment shader 阶段还真的不一样 而且 sv_position 还不是简单的 clipPos/clipPos.w 的操作 因此我自己做了一个试验: 结果还是不一…

电脑应用程序发生异常怎么办?

有时候我们打开电脑上面的某个软件时,会打不开,并且会弹出如下的错误提示“应用程序发生异常 未知的软件异常(xxx),位置为xx”。相信大多数的人在使用电脑的时…

Pytorch基本使用—激活函数

✨1 介绍 ⛄ 1.1 概念 激活函数是神经网络中的一种数学函数,它被应用于神经元的输出,以决定神经元是否应该被激活并传递信号给下一层。常见的激活函数包括Sigmoid函数、ReLU函数、Tanh函数等。 🎄 1.2 性质 激活函数是神经网络中的一种重…

为什么单片机可以直接烧录程序的原因是什么?

单片机(Microcontroller)可以直接烧录程序的原因主要有以下几点: 集成性:单片机是一种高度集成的芯片,内部包含了处理器核心(CPU)、存储器(如闪存、EEPROM、RAM等)、输入…

校园wifi网页认证登录入口

很多校园wifi网页认证登录入口是1.1.1.1 连上校园网在浏览器写上http://1.1.1.1就进入了校园网 使 用 说 明 一、帐户余额 < 0.00元时&#xff0c;帐号被禁用&#xff0c;需追加网费。 二、在计算中心机房上机的用户&#xff0c;登录时请选择新建帐号时给您指定的NT域&…

windows 搭建ssh服务

1、官网下载安装包&#xff1a;mls-software.com 2、点击安装&#xff08;一直默认即可&#xff09; 3、配置 opensshServer 4、成功登录

Python深度强化学习实战 ——OpenAI Gym-CarRacing自动驾驶项目

&#x1f4ad; 写在前面&#xff1a;本篇是关于 OpenAI Gym-CarRacing 自动驾驶项目的博客&#xff0c;面向掌握 Python 并有一定的深度强化学习基础的读者。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个…

灌区信息化智能测控一体化闸门系统解决方案

一、方案背景 闸门是节水灌溉工程中重要组成部分。在农田灌区中&#xff0c;一方面存在传统手摇闸门&#xff0c;未能实现自动化、数字化&#xff0c;另一方面部分灌区闸站虽然部分实现了自动化控制&#xff0c;但是由于闸站较多&#xff0c;有些位置较为偏僻&#xff0c;部分水…

Jmeter接口关联(一)【使用json层级方式提取值】与python中使用层级方式提取值 完成接口关联

文章目录 前言一、按照 json 的路径来提取 ​​​​​​​&#xff08;1&#xff09;成功匹配到数据的案例&#xff08;按照层级匹配&#xff09;&#xff08;2&#xff09;失败未匹配到数据的案例&#xff08;没有按照层级匹配&#xff09;json提取器二、使用完整的接口关联&a…

selenium自动化测试工具

Selenium是一个用于测试网站的自动化测试工具&#xff0c;支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器&#xff0c;同时也支持phantomJS无界面浏览器。 查看chrome版本&#xff0c;114.05735.199 去 http://chromedriver.storage.googleapis.com/index.html 网…

密码学证明方案寒武纪大爆发——扩容、透明性和隐私的变革潜力

1. 引言 前序博客有&#xff1a; ZKP大爆炸 本文主要参考&#xff1a; StarkWare 2023年6月博客 Cambrian Explosion of Cryptographic Proofs----The transformative potential for scalability, transparency, and privacy2023年3月Eli Ben-Sasson在The 13th BIU Winter …

nginx页面优化与防盗链

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、nginx页面优化1.版本号1.1 查看版本号1.2 修改版本号1.2.1 修改配置文件1.2.2 修改源码文件&#xff0c;重新编译安装 2.nginx的日志分割3.nginx的页面压缩3.1 …

微软亚洲研究院推出AI编译器界“工业重金属四部曲”

编者按&#xff1a;编译器在传统计算科学中一直是一个重要的研究课题。在人工智能技术快速发展和广泛应用的今天&#xff0c;人工智能模型需要部署在多样化的计算机硬件架构上。同时&#xff0c;训练和部署大型人工智能模型时又对硬件性能有着更高的要求&#xff0c;有时还需根…

macOS Ventura 13.5beta5(22G5072a)发布

系统介绍 黑果魏叔 7 月 11 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 5 更新&#xff08;内部版本号&#xff1a;22G5072a&#xff09;&#xff0c;本次更新距离上次发布隔了 12 天。 macOS Ventura 带来了台前调度、连续互通相机、Fa…

1g的视频怎么做二维码?较大视频如何生成二维码?

现在很多参与评选活动时&#xff0c;会制作好相关的视频内容&#xff0c;然后生成二维码之后&#xff0c;发送给活动管理人员从而参与评选。在根据要求录制视频时&#xff0c;有些视频会因为时间太长&#xff0c;导致文件过大&#xff0c;那么如何将超过1g的等视频生成二维码&a…