分布式系统的基本特性

图片

一般,分布式系统需要支持以下特性:

  • 资源共享

  • 开放性

  • 并发性

  • 可伸缩性

  • 容错性

  • 透明性

下面分别讨论。

容易理解的

资源共享

一旦授权,可以访问环境中的任何资源。

资源:包括硬件(e.g. printer, scanner, camera)、软件(服务)、数据(file, database, web page) 。

如资源管理器控制资源的访问:

  • 提供命名机制

  • 控制并发访问

开放性

新共享资源添加并被各种客户程序使用的(难易)程度。

如支持异构资源的添加和使用:

  • 提供统一的通信机制

  • 发布访问共享资源的接口

并发性

分布系统中的各个组成部分可以在并发的过程中被执行。

如:

  • 多个用户同时访问(和更新)资源

  • 多个服务进程同时运行,相互协作

资源定义同上。

可伸缩性

主要强调“伸”;偶尔也强调“缩”。

在资源和用户数较大增长的情况下,系统性能仍能维持甚至提高。

通常表现为:

  • 利用网络环境可以为更多的用户服务、而且响应更快

  • 通常通过增加更多/更快的处理器,能实现更可靠、更完善的服务

如:

  • DNS的解析:一方面,不仅可以为每个根域名设置单独的服务器,还可以为访问量大的二级、更多级域名也单独设置服务器;另一方面,当访问量变小时,还可以将多个访问量小的根域名的解析合并到一台服务器上。

图片

可伸缩性-DNS解析

不容易理解的

容错性

错误发生时,系统能够继续工作的能力。

基于这样一个假设:硬件、软件、网络的错误不可避免。

要容错,就要先知道有哪些错误(故障),再针对故障类型一一解决。

故障类型

分布式系统中的典型故障如下:

故障类型说明
崩溃性故障服务器停机,但是在停机之前工作正常
遗漏性故障服务期不能响应到来的消息。包括不能接受、不能发送
定时故障服务器的响应在指定时间间隔之外
响应故障服务期的响应不正确。包括响应的值错误、偏离了正确的控制流
随意性故障服务器可能在随意的时间产生随意的响应

其中,随意性故障是最严重的故障,也被称为拜占庭故障。当发生故障时,服务器可能产生它从来没有产生过的输出,但是又不能检测出错误。更坏的情况是,发生故障的服务器恶意的与其他服务器共同工作来产生恶意的错误结果。

容错方案

如果系统是容错的,那么它能做的最好的事情就是对其他进程隐藏故障的发生。由于故障无法避免,我们只能依靠冗余来掩盖故障,包括:

  • 信息冗余:添加额外的位可以监测出错误位甚至纠正。如在数据中增加checksum等。

  • 时间冗余:执行一个动作,如果需要就再次执行。如事务、超时重传等。

  • 物理冗余:添加额外的设备或进程使系统作为一个整体来容忍部分组件的故障。如HDFS的多备份、HA等等。

部分书籍将物理冗余与软件冗余分开,本质上无法完全分开,因为软件冗余可能在部署在单机或多机上。这里将二者统一为物理冗余。

则针对各故障,可取的主要解决方案为:

  • 崩溃性故障——时间冗余、物理冗余

  • 遗漏性故障——物理冗余

  • 定时故障——时间冗余、物理冗余

  • 响应故障——信息冗余、时间冗余、物理冗余

  • 随意性故障——信息冗余、时间冗余、物理冗余

透明性

网络环境对于用户和应用程序而言,应该是一个整体,而不是一个互相协作的简单的构件集合。包括多项性质:

  • 位置透明性:用户不必关心对象位于何处。

    • 如DNS、Consul等分布式命名系统。

  • 重定位透明性:对象的位置可以变化而不影响对它的调用。

    • 仍然如DNS、Consul等。

  • 迁移透明性:系统内部可以迁移对象的位置。

    • 仍然如DNS、Consul等。

  • 访问透明性:可用一致的方式访问不同类型的机器上的对象。

    • 如Yarn、Mesos等分布式资源调度系统。

  • 持久透明性:对象所处的状态既可以是活动的,也可以是静止的。

    • 如HBase的WAL,计算机中的cache、段表、页表等。

  • 失败透明性:屏蔽被访问对象的失败及恢复过程 (容错)。

    • 如MapReduce、Spark等分布式计算框架。

  • 事务处理透明性:与事务处理相关的调度、监控和恢复。

    • 如2PC等分布式事务协议。

  • 复制透明性:用户不知道有多少个对象副本存在。

    • 如HDFS、Tair等分布式存储系统。

位置透明性、迁移透明性、重定位透明性是对命名系统的基本要求。

原文地址: 分布式系统的基本特性

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

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

相关文章

对于组件通信的深刻理解

父组件传递数据给子组件 props传递数据 父组件在子组件的标签上写自定义的属性,属性值是自己的变量,当渲染到子组件时,执行props会找自定义属性,内存了变量的内存,可访问到,写props,会生成vue实例的时候,将props的变量赋给,值找变量内存存入变量.插值语句等可访问.父组件会变…

python综合实战案例-数据分析

Python是进行数据分析的好工具,今天就是借助一个案例给大家进行数据分析讲解。 本例设计一个log.txt⽂件,该文件记录了某个项⽬中某个 api 的调⽤情况,采样时间为每分钟⼀次,包括调⽤次数、响应时间等信息,⼤约18万条数…

如何在 Django 中使用 pyecharts

为项目新建一个目录,将其命名为django_pyecharts_demo, 在终端中切换到这个目录,并创建一个虚拟环境。 python -m venv django_pyecharts激活虚拟环境 django_pyecharts\Scripts\activate要停止使用虚拟环境,可执行命令 deactivate创建并激…

【论文精读】MAE:Masked Autoencoders Are Scalable Vision Learners 带掩码的自动编码器是可扩展的视觉学习器

系列文章目录 【论文精读】Transformer:Attention Is All You Need 【论文精读】BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 【论文精读】VIT:vision transformer论文 文章目录 系列文章目录一、前言…

24. UE5 RPG制作属性面板(二)

在上一篇中,我们创建属性面板的大部分样式,这一篇里面接着制作。 在这一篇里我们需要有以下几个方面: 在界面增加一个属性按钮。属性按钮增加事件,点击时可以打开属性面板,属性面板打开时无法再次点击按钮。点击属性面…

手撕算法-无重复字符的最长子串

描述 分析 滑动窗口,记录窗口中的所有出现的字符,然后窗口左边界固定,右边界右滑,如果,窗口中不存在新的字符,则右滑成功,否则左边界右滑,直到窗口中不存在右边界的值。 描述感觉不…

Centos7 防火墙iptables?

Centos7 防火墙iptables? 文章目录 Centos7 防火墙iptables?1. 介绍2. firewalld 和 iptables区别3. 区域管理概念区域管理有如下几种不同的初始化区域: 4.iptables的配置1.简述2.基本原理3.iptables传输数据包的过程4. iptables规则表和链5.…

结构体类型详细讲解(附带枚举,联合)

前言: 如果你还对结构体不是很了解,那么本篇文章将会从 为什么存在结构体,结构体的优点,结构体的定义,结构体的使用与结构体的大小依次介绍,同样会附带枚举与联合体 目录 为什么存在结构体: 结构…

【Linux 驱动基础】IMX6ULL LED基础驱动

本机使用的是正点原子的IMX6ULL开发板 # 前置知识 IMX6ULL GPIO控制框图: GPIO控制代码大概分为几个流程:开启时钟、设置IO复用、设置IO属性、配置IO方向、设置IO输出电平,下面以IMX6ULL为例, 1. 开启时钟 参考资料&#xff1a…

深入理解 Docker 镜像

1. Docker 镜像的底层原理 1.1 分层的镜像 以我们的pull 命令为例,在下载的过程中我们可以看到docker的镜像好像是一层一层的在下载。 1.2 UnionFS(联合文件系统) 联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次…

MPI4.1文档翻译(持续更新)

本博客参考官方文档进行介绍,全网仅此一家进行中文翻译,走过路过不要错过。 官方网址:https://www.mpi-forum.org/ 参考文档:https://www.mpi-forum.org/docs/mpi-4.1/mpi41-report.pdf 引用官方4.1文档方法: manu…

linux下使用迅雷的完美办法(网络版免费),其他下载工具

迅雷有自家服务器的支持,因此,其他下载器,可能难以匹敌 ? linux下使用迅雷的完美办法(免费) https://blog.csdn.net/lqrensn/article/details/8853949 网络版 Linux下安装并使用迅雷 https://www.lxlin…

牛客题霸-SQL进阶篇(刷题记录一)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。 部分题目因…

化工企业能源在线监测管理系统,智能节能助力生产

化工企业能源消耗量极大,其节能的空间也相对较大,所以需要控制能耗强度,保持更高的能源利用率。 化工企业能源消耗现状 1、能源管理方面 计量能源消耗时,计量器具存在问题,未能对能耗情况实施完全计量,有…

P - Beat

题目分析 1.看数据范围&#xff0c;大概知道dfs能做 2.自0问题开始查找&#xff0c;确保之后每次查找到的问题的困难度均大于上一次 3.遍历所有情况再记录cnt即可 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring&…

蓝桥集训之矩形牛棚

蓝桥集训之矩形牛棚 核心思想&#xff1a;单调队列 模板&#xff1a;Acwing.131.直方图矩形面积首先遍历所有下界 然后确定以该下界为底的直方图 求最大矩形 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 30…

【13】vue2和vue3对比

vite: https://github.com/vitejs/vite 面试题:谈谈你对 vite 的理解,最好对比 webpack 说明 webpack 原理图 vite 原理图 面试题答案: webpack 会先打包,然后启动开发服务器,请求服务器时直接给予打包结果。 而 vite 是直接启动开发服务器,请求哪个模块再对该模块进行实…

Linux的一些基本指令

​​​​​​​ 目录 前言&#xff1a; 1.以指令的形式登录 2.ls指令 语法&#xff1a; 功能&#xff1a; 常用选项&#xff1a; 3.pwd指令 4.cd指令 4.1 绝对路径与相对路径 4.2 cd .与cd ..&#xff08;注意cd后先空格&#xff0c;然后两个点是连一起的&#xff0…

XUbuntu22.04之安装Plantuml(二百二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

电脑不能读取移动硬盘,但是可以读取U盘解决方法

找到此电脑 右键设备管理器&#xff0c;找到其中的通用串行总线控制器。 注意&#xff0c;凡是插入到电脑当中不能读取的U盘或者移动硬盘&#xff0c;都会在通用串行总线控制器当中显示为USB大容量存储设备 鼠标选中“USB大容量存储设备”&#xff0c;右键卸载它。此时&#x…