文献笔记——A brief introduction to distributed systems(分布式系统)

news2024/11/25 4:27:36

本文主要讨论了分布式系统。作者提供了关于分布式系统的概述,是一份很好的新手教程。


在这里插入图片描述

Fig.1 大纲

在论文的第一部分,作者简要回顾了计算机的演变,指出了分布式系统的两个技术基础:性能强大的微处理器的发展和高速计算机网络的发明。为什么这些技术很重要?

The result of these technologies is that it is now not only feasible but easy, to put together a computing system composed of many networked computers, be they large or small.

1、什么是分布式系统?

分布式系统的宽泛定义:

A distributed system is a collection of autonomous computing elements that appears to its users as a single coherent system.

请注意,有两个特征:

特征1:自主计算元素的集合

  • 每个计算元素(作为一个节点)都可以相互独立行动。一个集合中的节点可以彼此不同(从非常大的高性能计算机到手机或甚至更小的设备)。
  • 他们必须沟通和协调行动,以实现一个共同的目标。

为了实现这一特点,我们必须考虑如何管理系统中的成员,如何处理缺乏统一的时间参照物的问题。

特征2:一个单一的连贯系统

in a single coherent system the collection of nodes as a whole operates the same, no matter where, when, and how interaction between a user and the system takes place.

  • 一个重要的设计目标:分配透明度。 详细内容见下一节。

分布式系统像中间件类似组织

为了帮助开发分布式应用,分布式系统通常被组织为一个单独的软件层,从逻辑上讲,它被置于作为计算机各自操作系统之上。这种组织方式如图所示。

Fig.2 middleware(from "A brief introduction to distributed systems

Fig.2 中间件(from "A brief introduction to distributed systems")

它提供以下服务:

  • 资源管理
  • 便于应用间通信的设施
  • 安全服务
  • 账户服务
  • 掩盖故障并修复故障

2、4个设计目标

A distributed system should make resources easily accessible; it should hide the fact that resources are distributed across a network; it should be open; and it should be scalable.
分布式系统应该使资源容易获得;它应该隐藏资源分布在网络上的事实;它应该是开放的;而且应该是可扩展的。

1)支持资源共享

资源几乎可以是任何东西,但典型的例子包括外围设备、存储设施、数据、文件、服务和网络,仅举几例。

通过支持资源共享,它有助于降低成本,促进不同节点之间的合作。

2)使分配透明化

有七种类型的分配透明度。

Transparency描述
Access隐藏数据表示的差异和对象的访问方式
Location隐藏对象的位置(通常通过只给资源分配逻辑名称来实现)。
Relocation隐藏一个对象在使用过程中的移动(这在云计算的背景下变得越来越重要)
Migration隐藏一个对象可能移动到另一个地方(它支持由用户发起的进程和资源的移动,而不影响正在进行的通信和操作)。
Replication隐藏一个对象被复制的情况
Concurrency隐藏一个对象可能被几个独立的用户共享(通过锁定机制实现)。
Failure隐藏一个对象的故障和恢复

为了区分 relocation 和 migration,有两个例子可以帮助理解:

  • Relocation transparent: 整个网站可能已经从一个数据中心转移到另一个数据中心,以更有效地利用磁盘空间,但用户不应该注意到。
  • Migration transparent: 移动电话之间的沟通–无论两个人是否真的在移动,移动电话都能让他们继续对话。

试图盲目地对用户隐藏所有的分布式环节并不是一个好主意 。完全的分配度是不可能实现的。高度的透明度和系统的性能之间也有一个权衡。

The conclusion is that aiming for distribution transparency may be a nice goal when designing and implementing distributed systems, but that it should be considered together with other issues such as performance and comprehensibility. The price for achieving full transparency may be surprisingly high.
结论是,在设计和实施分布式系统时,以分布式透明为目标可能是一个很好的目标,但它应该和其他问题一起考虑,比如性能和可理解性。实现完全透明的代价可能是惊人的高。

3)开放性

An open distributed system is essentially a system that offers components that can easily be used by, or integrated into other systems. At the same time, an open distributed system itself will often consist of components that originate from elsewhere.
一个开放的分布式系统本质上是一个系统,它提供的组件可以很容易地被其他系统使用,或集成到其他系统中。同时,一个开放的分布式系统本身往往由来自其他地方的组件组成。

  • 互操作性: 两个来自不同制造商的系统或组件的实现可以共存并一起工作的程度,只需依赖共同标准所规定的彼此的服务。
  • 可组合性: 即可移植性,为一个分布式系统A开发的应用程序可以不加修改地在一个与A实现相同接口的不同分布式系统B上执行的程度。
  • 可扩展性: 增加新的组件或更换现有的组件应该很容易,而不影响那些原有的组件。

将策略与机制分离

To achieve flexibility in open distributed systems, it is crucial that the system be organized as a collection of relatively small and easily replaceable or adaptable components.

In theory, strictly separating policies from mechanisms seems to be the way to go. However, there is an important trade-off to consider: the stricter the separation, the more we need to make sure that we offer the appropriate collection of mechanisms. In practice, this means that a rich set of features is offered, in turn leading to many configuration parameters.
为了在开放的分布式系统中实现灵活性,关键是要把系统组织成一个相对较小且容易替换或适应的组件的集合。
从理论上讲,将政策与机制严格分开似乎是个好办法。然而,有一个重要的权衡需要考虑:分离得越严格,我们就越需要确保我们提供适当的机制集合。在实践中,这意味着提供了丰富的功能集合,反过来导致了许多配置参数。

4)具有可扩展性

a. 可扩展性的不同方面

一个系统的可扩展性可以通过三个不同的维度来衡量。

  • 规模可扩展性: 一个系统可以就其规模进行扩展,这意味着我们可以很容易地在系统中增加更多的用户和资源,而不会有任何明显的性能损失。

当一个系统需要扩展时,我们经常会遇到集中式服务的限制。许多服务是集中式的,因为它们是使用分布式系统中特定机器上运行的单个服务器或服务器组来实现的。 这些服务器很容易成为 瓶颈:

  1. 计算能力,受到CPU的限制
  2. 存储能力,包括CPU和磁盘之间的传输速率
  3. 用户和集中服务器之间的网络
  • 地域可扩展性: 一个地理上可扩展的系统是一个用户和资源可能相距甚远的系统。

在一个地理上可扩展的系统中,通信延迟可能是很重要的,这一事实很难被注意到。 另一个阻碍地理可扩展性的问题是,广域网络中的通信在本质上比局域网络的可靠性要差得多。此外,我们还需要处理有限的带宽问题。

  • 管理的可扩展性: 一个可管理的系统是一个即使跨越了许多独立的行政组织,仍然可以被轻易管理的系统。

需要解决的一个主要问题是在资源使用、管理和安全方面的政策冲突。

If a distributed system expands to another domain, two types of security measures need to be taken. First, the distributed system has to protect itself against malicious attacks from the new domain. Second, the new domain has to protect itself against malicious attacks from the distributed system.
如果一个分布式系统扩展到另一个领域,需要采取两类安全措施。首先,分布式系统必须保护自己免受来自新领域的恶意攻击。第二,新领域必须保护自己免受来自分布式系统的恶意攻击。

b. 扩展技术

When it comes to scaling out, that is, expanding the distributed system by essentially deploying more machines, there are basically only three techniques we can apply: hiding communication latencies, distribution of work, and replication.
当涉及到扩展时,也就是通过部署更多的机器来扩展分布式系统,基本上只有三种技术我们可以应用: 隐藏通信延迟,分配工作,以及复制

  • 隐藏通信延迟适用于地理可扩展性的情况。其基本思想很简单:尽可能地避免等待远程服务请求的响应。当我们等待回复时,我们可以做其他事情。
  • 分区和分布,这涉及到把一个组件,分割成更小的部分,随后把这些部分分散到系统中。例如:由DNS提供的命名服务,分布在几台机器上,从而避免了由一台服务器来处理所有名称解析的请求。
  • 复制组件: 复制不仅增加了可用性,而且还有助于平衡组件之间的负载,导致更好的性能。而且它还可以帮助隐藏通信延迟。请注意,复制需要一些全局同步机制。

c. 结论

从技术角度来看,规模的可扩展性是最容易。地理上的可扩展性是一个更棘手的问题,因为网络延迟是无法避免的。利用分布、复制和缓存技术与不同形式的一致性技术可以一定程度上解决问题。管理可扩展性似乎是最难解决的,部分原因是我们需要处理一些非技术问题。

5) 注意一些错误的假设

在第一次开发分布式应用时,每个人都会有以下错误的假设:

  • 网络是可靠的
  • 网络是安全的
  • 网络是同质的
  • 拓扑结构不会改变
  • 延迟是零
  • 带宽是无限的
  • 传输成本为零
  • 只有一个管理员

3 三种类型的分布式系统

分布式系统有三种主要类型:分布式计算系统、分布式信息系统和普适系统。

1) 高性能的分布式计算

分布式计算系统也有三种类型:

  • 集群计算 底层硬件由类似的工作站或个人电脑的集合组成,使用高速局域网紧密连接。此外,每个节点都运行相同的操作系统。几乎在所有情况下,集群计算都用于并行编程,其中一个单一的(计算密集型)程序在多台机器上并行运行。

  • 网格计算 由分布式系统组成,这些系统通常被构建为计算机系统的联盟,每个系统可能属于不同的管理领域,并且在涉及硬件、软件和部署的网络技术时可能非常不同。网格计算系统中的关键问题是,来自不同机构的资源被汇集在一起,允许来自不同机构的一群人合作,确实形成了一个系统的组合。

  • 云计算 提供了动态构建基础设施的设施,并从可用的服务中组成所需的东西。与与高性能计算密切相关的网格计算不同,云计算远不止是提供大量的资源。云计算的特点是一个易于使用和访问的虚拟化资源池。而且,资源的使用方式可以动态配置,为可扩展性提供了基础:如果需要做更多的工作,客户可以简单地获得更多的资源。在实践中,云被组织成四个层次,如图3所示:

在这里插入图片描述

Fig.3 云计算的结构(from "A brief introduction to distributed systems")
  1. Hardware: 处理器、路由器,但也包括电源和冷却系统。
  2. Infrastructure: 大多数云计算平台的骨干。它部署了虚拟化技术,为客户提供一个由虚拟存储和计算资源组成的基础设施。
  3. Platform: 平台层为云计算客户提供的服务类似操作系统为应用开发者提供的服务。
  4. Application:实际软件在这一层运行,并提供给用户进一步定制性。

分布式共享内存多计算机(或简称DSM系统)

为了克服共享内存系统和分布式内存系统的局限性,DSM系统允许一个处理器在另一台计算机上寻址一个内存位置,就像寻址本地内存一样。这可以利用操作系统现有的技术来实现,例如,将各个处理器的所有主内存页映射到一个单一的虚拟地址空间。

但是,DSM最终不得不被放弃,原因很简单,性能永远无法满足程序员的期望,他们宁愿求助于复杂得多、但性能更好(可预测)的消息传递编程模型。

在这一节的末尾,作者说:“An important side-effect of exploring the hardware-software boundaries of parallel processing is a thorough understanding of consistency models”. 我无法理解是什么意思。如果您对这句话有什么见解,请指点我一下

2) 分布式信息系统

Another important class of distributed systems is found in organizations that were confronted with a wealth of networked applications, but for which interoperability turned out to be a painful experience.
另一类重要的分布式系统出现在一些组织中,这些组织面临着大量的网络化应用,但对它们来说,互操作性是一种痛苦的经历。

解决方案是将应用程序整合到一个企业范围的信息系统中。根据整合发生的地方,有两种类型的分布式信息系统。

  • 分布式事务处理: 在最底层的集成允许客户将几个请求(可能是针对不同的服务器)打包成一个更大的请求,并让其执行。
  • 企业应用集成(EAI): 集成通过让应用程序之间直接通信来进行。

一般来说,有四种方法来支持企业应用集成:

  1. 文件传输:一个应用程序产生一个包含共享数据的文件,随后被其他应用程序读取。有很多事情需要达成一致(文件格式和布局,文件管理,更新传播)。
  2. 共享数据库: 正如字面意思一样。
  3. 远程程序调用(RPC): RPC的一个主要缺点是,调用者和被调用者需要同时启动和运行才能成功。
  4. 消息传递: 消息传递系统将来自应用A的请求,发送到应用B,并在B上执行。消息传递系统确保最终请求被传递,如果需要,最终也会返回一个响应。
我不能很好地理解这部分。有许多技术细节我需要进一步学习

3) 普适系统

移动和嵌入式计算设备的引入导致了通常所说的普适性系统。它们的独特之处在于,用户和系统组件之间的分离更加模糊了。

  • Ubiquitous computing systems(泛在计算系统?): 该系统是普遍存在的,并持续存在。泛在计算系统的核心要求大致如下:
  1. 分布: 设备以透明的方式进行联网、分布和访问
  2. 交互: 用户和设备之间的互动是非常不显眼的。
  3. 语境意识: 系统意识到用户的环境,以优化互动。
  4. 自主性: 设备在没有人类干预的情况下自主运行,因此是高度自我管理的。
  5. 智能性: 系统作为一个整体可以处理广泛的动态行动和交互
我想作者一定是在谈论ChatGPT
  • 移动计算系统: 首先,构成(分布式)移动系统一部分的设备可能差别很大,包括智能手机、遥控器、传呼机、汽车设备等等。其次,在移动计算中,设备的位置被认为会随时间而改变。所以我们需要使用容许中断的网络。

  • 传感器网络: 一个传感器网络通常由几十到几百或几千个相对较小的节点组成,每个节点都配备了一个或多个传感设备。此外,节点往往可以充当执行器。大多数传感器网络使用无线通信,并且节点通常是由电池供电的。因为它们有限的资源、有限的通信能力,在设计系统是必须重点考虑效率。

4 Outlook

在论文的最后,作者集中讨论了分布式系统未来几年的两个发展领域。

可靠性:使系统变得值得信赖

  • 如何防止、处理和恢复由于系统中的固有错误而造成的故障?
  • 如何提供更好的保护以防止蓄意的攻击?
  • 如何保护用户免受系统侵害?

可扩展性:万物互联

  • 开发可扩展的解决方案
  • 将系统视为一个整体,并找到适当的形式来描述观察到的行为。

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

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

相关文章

OpenCV:CMake 产生 VS2019 项目和解决方案

CMake 是一个跨平台的自动化编译程序,它用于管理代码的构建过程。使用 CMake 可以简化跨平台项目的构建和移植,提供简单而强大的语法来描述构建过程,并生成多种不同的构建系统,如 GNU Make、Ninja 和 Visual Studio。因为 CMake 具…

8年测试总结,性能测试问题大全,这些问题你应该认清的...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 响应时间VS吞吐量…

18-02 数据库设计核心要点

概念结构设计 通过对用户需求进行综合、归纳和抽象,形成独立于具体数据库管理系统的概念模型把需求分析阶段得到的应用需求,抽象成概念模型连接现实世界和信息世界的桥梁好的概念结构设计 能真实、充分的反映现实世界要易于理解要易于修改 基本概念 …

kubeadm部署k8s 1.26.0版本高可用集群

1.前言 本次搭建使用centos7.9系统,并且使用haproxykeepalived作为高可用架构软件,haproxy实现k8s集群管理节点apiserver服务的负载均衡以实现集群的高可用功能,keepalived保障了hapxoy的高可用,容器引擎使用docker,需…

迁移iceberg:一.查看所需要的资源。

一:内存,CPU,核数,线程,硬盘。 1. cpu,核素,线程。 cpu cpu就相当于人类的大脑,是处理数据的地方。 cpu由以下三个组成。 控制器。由控制单元、指令译码器、指令寄存器组成。运算…

戴尔 dell Inspiron3670电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件型号驱动情况 主板B360 处理器i5-9400已驱动 内存8GB已驱动 硬盘KBG40ZNS256G NVMe KIOXIA 256GB ST1000DM010 1TB已驱动 显卡UHD630(1.05GHZ)已驱动 声卡Realte…

Node模拟慢接口

为了快速搭建一个后台服务,并模拟慢接口,我们选择 Koa 这个轻量的 Node 框架。 快速开始 Koa 使用起来非常方便,只需要: 新建项目文件夹:mkdir koa-server创建 package.json:npm init -y安装 Koa&#x…

夏季门店做好这3点,销量翻一番!

现在正值5月末,天气开始炎热起来。在酷热的夏日,很多人都只想呆在家里吹空调刷手机,外出消费的人数开始变少。 面对越来越炎热的天气,我们这些做实体店生意的该如何应对呢?想要在夏季客流不减反增,销量翻倍…

【高分论文密码】大尺度空间模拟预测和数字制图技术和不确定性分析

目录 专题一 R语言空间数据介绍及数据挖掘关键技术 专题二 R语言空间数据高级处理技术 专题三 R语言多维时空数据处理技术、数据清洗整合和时间序列分析 专题四 R语言地统计与空间自相关、空间插值方法 专题五 R语言机器学习与空间模型预测及不确定性评估 专题六 R语言空…

【DRF配置管理】如何使用序列化:验证码、注册和登录

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 DRF应用和管理 【DRF配置管理】Django安装DRF框架并生成openapi风格文档 【DRF配置管理】如何实现JWT身份验证 【DRF配置管理】如何使用序列化:验证码…

如何设计正确的SpringBoot接口访问频率?

最近在基于SpringBoot做一个面向普通用户的系统,为了保证系统的稳定性,防止被恶意攻击,我想控制用户访问每个接口的频率。为了实现这个功能,可以设计一个annotation,然后借助AOP在调用方法之前检查当前ip的访问频率&am…

SpringBoot——对于属性中的时间和文件的单位进行设置

简单介绍: 在之前我们编写配置文件的时候,有时候多种技术的配置的属性值的默认属性的单位不同,比如在Tomcat中,对于最大连接时间就是以毫秒为单位,但是对于session的过期时间就是以分钟为单位,像这种单位不…

java线程池ThreadPoolExecutor使用

文章目录 一、简介1. 背景2. Executor接口介绍 二、使用Executors工厂创建线程池1. 简介2. 使用newCachedThreadPool()方法创建无界线程池3. 验证newCachedThreadPool()方法创建的线程池和线程复用特性4. 使用newCachedThreadPool(ThreadFactory)定制线程工厂5. 使用newCachedT…

怎么把音乐的伴奏提取出来?分享几个音乐伴奏提取的方法!

在这个数字时代,人人都有机会成为视频创作者。如果你也想发布自己剪辑的短视频,就需要了解视频编辑的相关操作。其中一个重要的操作是提取人声,将音频中人物的声音从杂音中分离出来,使声音更加清晰。那么,如何从音频中…

GPT时代,最令人担心的其实是“塔斯马尼亚效应”

目录 教育到底教什么? 过度依赖GPT可能导致文明退化 GPT可以帮助人类破解“学海无涯极限”悖论 春季学期伊始,全球各地的老师们如临大敌,因为学生们带着ChatGPT杀过来了。Study.com的调研显示,每10个学生中就有超过9个知道Chat…

基于FPGA的超声波测距——数码管显示

文章目录 前言一、超声波模块介绍1、产品特点2、超声波模块的时序图 二、系统设计1、系统框图2、源码3、RTL视图4、效果 三、总结四、参考资料 前言 环境: 1、Quartus18.1 2、vscode 3、板子型号:EP4CE6F17C8N 4、超声波模块:HC_SR04 要求&am…

【持续集成CI/持续部署CD】二、Docker安装Maven私服Nexus

本文是关于通过 Docker 进行安装部署 Nexus3 私服的快速入门和简单使用案例。 一、安装 1. 通过 docker 获取最新版本的 nexus3 镜像 docker pull sonatype/nexus3创建 docker 镜像到宿主机的磁盘映射目录Linux:mkdir -p /home/nexus/datachmod 777 -R /home/nexus/dataWind…

ThingsBoard的Actor系统如何初始化

1、概述 大家都知道ThingsBoard中使用了Actor,使用这个可以避免多线程并发问题,上一篇我查询资料总结了一下关于Actor的内容,actor不是通过new 一个对象来创建,而是通过一个ActorSystem来创建,下面我将带领大家来学习ThingsBoard启动时Actor如何创建。 2、ThingsBoard的…

【建议收藏】|某大型金融集团内部数据治理实战总结

对于你喜欢的事想去做的事,你必须付出百分之一千的努力你知道这一路可能会有很多困难,会有坚持不下去想要放弃的时候也有时候,你不一定会得到你想要的结果,但你—定要相信。 公众号:857Hub 转发领取PDF全集一份~~~ 数据治理 数字转型&…

传输层协议

目录 传输层 端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) netstat pidof UDP协议UDP协议端格式​编辑 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 TCP协议 TCP协议段格式 确认应答(ACK)机制 超时重传机制 连…