【分布式计算】什么是分布式系统

介绍

分布式系统由多个彼此独立的计算节点组成,从用户的角度上看,这些计算集合看上去就像单一的系统。

从上面的定义来看,分布式系统有两个特征:
(1)彼此独立的计算节点集合。
(2)看上去是单一的系统。

所谓节点可以是一个硬件装置,或是软件进程。现今的分布式系统大多由不同的节点组成,大至高性能的计算机,小至一些小型单片机。但不管基于何种节点,一个基本原则是,这些节点都应该能独立运行起来,并且通过交换信息来协作完成一个共同目标。

由于是节点是相互隔离的,一些原本在单机情况下很好实现的通信与交互在分布式情形下会变得困难起来。总结起来就是同步、协调的问题。这意味着我们在开发分布式系统时,需要下很大的功夫在这些计算节点的管理和组织上。举个例子简单说明,就是如果我们需要注册一台原本不在这个系统下的节点,我们便要告诉原本属于这个系统下的其他节点,这样才能协同工作。

管理计算节点的方式大体上可分为两种方式,开放式集群(Open Cluster)和封闭式集群(Closed Cluster)。
(1)开放式集群。任何节点都允许加入分布式系统。
(2)封闭式集群。只有预先配置好的节点才能加入分布式系统。
这两种方式都有其存在的价值。具体要看实现的系统能力,比如开放式虽然可以随时添加节点,易于扩展,但是对于分布式存储的场合,这个机制可能就会导致数据在集群之间频繁地重分配,比如Ceph,这可能会造成集群性能整体下降。

不管是开放式,还是封闭式,外部节点的准入机制都很重要,如果这个机制不够完善,就可能造成扩展性上的瓶颈。其次,原则上,准入机制需要考虑安全机制,否则如果有恶意节点加入,则会损害集群安全。

对于计算节点的组织结构,一般会被设计成一个覆盖网络的形式。节点之间的通信通过TCP/IP或者是UDP通道来完成。

对于用户而言,不管底层设计如何复杂,这些都应该对用户透明(distribution transparency)。但是部分故障是任何一个复杂系统的固有问题。图灵奖获得者Leslie Lamport就曾说过,“在分布式系统里面,甚至会出现一些你无法察觉的问题导致你的计算机无法使用”。

分布式系统的目标和难点

资源共享
想要共享资源有很多原因。例如,共享一个单独、可靠的存储介质比单独为每个用户都配置一个来的更便宜。此外将各种资源连接起来,可以更好地完成协作和交换信息。又或者是将空间上广泛分散的群体通过群体软件连接起来,让彼此能一起工作。

让分布式资源变得透明
开发分布式系统一个很重要的原因是希望用户察觉不到那些实际上多点分布的进程和资源。根据对象的不同可分为以下类型:

透明项描述
访问隐藏数据的不同结构和不同访问方式
位置隐藏数据对象存放的位置
重定向隐藏对象在使用时可能被移动到另一个位置
迁移隐藏对象可能移动到另一个位置
冗余隐藏对象的冗余
并发隐藏单一对象被多个独立用户访问
失败隐藏对象的失败恢复过程

让系统足够开放
如果一个分布式系统足够开放,就可以很容易地集成到其他的系统上,这样可以极大的降低开发成本。一个开放式的系统一般会由多个组件构成。评判一个分布式系统是否足够开放,可以通过它的互操作性,组合性和可扩展性来判断。

让系统可扩展
可扩展性可能是分布式系统最重要的性质之一,因为即便是最有经验的运维工程师,可能也无法预测系统资源会在什么时候消耗殆尽,所以在软件设计初期需要随时准备好会有硬件的接入,从而扩展软件性能。

分布式系统的类型

高性能分布式计算

有一类分布式系统专门用于处理高性能计算任务,比如集群计算(Cluster Computing),这类分布式系统的底层硬件大多由高速的本地网络,将彼此相似和距离相近的工作站或者是个人电脑连接组成。每个节点的操作系统也一样。

此外还有网格计算(Grid Computing),原本分布式应该讨论的问题在这种情形下会变得非常复杂、困难。网格计算是一种分布式计算方法,它试图通过非传统方式实现高计算性能。网格计算侧重于管理由网络连接的异质资源,并确保这些资源能够被充分利用用于计算任务。通常,用户需要一个基于网格的框架来构建自己的网格系统,并管理此框架并执行该框架上的计算任务。

至于云计算(Cloud Computing),它主要提供动态构建基础设施的能力,并从现有服务中提供所需的信息。与高性能计算密切相关的网格计算不同,云计算会提供除计算以外的大量资源。

集群计算

每个集群都由多个计算机节点组成,并由一个单一的Master节点负责控制。Master节点通常负责为并行程序分配给工作节点(Worker nodes),管理所有提交的作业(jobs),并且提供用户界面。
在这里插入图片描述

网格计算

大多数计算集群中的计算机都基于这样的一些前提,比如:它们的操作系统都一样,并且都由相同的网络连接着等等。而网格计算则不同,它不需要这样的前提,不需要相似的硬件,操作系统,网络,任何形式的管理域,以及安全策略等等。所以网格计算的关键是:如何在各个维度的资源都不一致的情形下,让每个计算节点协调地完成任务。
这样的一种协作一般是以“虚拟组织”(使用资源的人?)的方式实现的,该“组织”下的进程拥有访问该组织里面的资源的权限,这些资源可以是服务器、存储介质,数据库,或者是其他的一些网络设备。基于这样的假设,有人提出了网格计算的分层架构简图。
在这里插入图片描述(1)构造层(Fabric layer),面对具体的物理资源,通过对这些局部资源的管理,向上提供局部资源的接口和控制界面。
(2)连接层(Connectivity layer),负责构建孤立资源之间的通信能力
(3)资源层(Resource layer),抽象的资源特征。
(4)汇聚层(Collective layer),将下面以单个资源形式表现出来的资源集中起来,以协调解决。
(5)应用层(Application layer),决定把什么样的资源分配给“虚拟组织”

云计算

通过应用服务,服务器,数据存储,网络功能等等托管在远程数据中心的方式实现用户的按需访问。
在这里插入图片描述
技术上,云可以大致分成4层。
硬件层(Hardware):硬件管理,比如处理器,路由器,还包括电源和冷却系统等等。
基础设施层(Infrastructure layer):这一层主要用于部署虚拟技术,比如一些计算资源和虚拟存储。云计算就是围绕着分配和管理虚拟存储设备和虚拟服务器而发展的。
平台层(Platform layer):为应用层提供该云供应商特定的API,比如上传,以及运行一些供应商的云的程序。
应用层(Application layer):实际应用程序运行的地方,并且可以提供给用户更多自定义设置。

分布式信息系统

分布式信息系统是指采用分布式软件构建的支持分布式处理的信息系统。它作为通信技术、计算机技术和信息技术等研究领域的有机组合,通过互联网实现了其组织结构和工作流程的优化重组,使网络超越了时间、空间和部口之间的分隔限制,为用户提供全方位的、规范而透明的资源管理服务。

事务处理系统

分布式事务的关键特点是:对于包含多个子操作的客户端请求,这些操作要么全部被运行,要么都不被运行。像数据库这种,实际上就是以事务处理(transaction)的方式进行,对使用事务处理的程序要求有特定的原函数。

原函数说明
BEGIN_TRANSACTION标识一个事务处理的开始
END_TRANSACTION终止事务处理并试图提交
ABORT_TRANSACTION杀死事务处理并恢复旧值
READ从文件、表或其他地方读取数据
WRITE往文件、表或其他地方写入数据

BEGIN_TRANSACTION和END_TRANSACTION用于限制事务处理的范围。事务处理拥有以下特性:
(1)原子性(atomic):对外部来说,事务处理是不可见的。
(2)一致性(consistent):事务处理不会违反系统的不变性。
(3)独立性(isolated):并发的事务处理不会相互干扰。
(4)持久性(durable):事务处理一旦提交,所发生的改变是永久性的。
负责分布式事务处理的组件在服务器或数据库级上构成集成应用的核心。这种组件称为事务处理监视器(transaction processing monitor),或简称为TP监视器(TP monitor)
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值