【分布计算环境学习笔记】1 基本概念和发展历史
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
1.分布式系统基础
a.概念:在网络计算平台上开发、部署、 管理和维护以资源共享和协同工作为主要应用目标的分布式应用系统。
b.特征:
- 包含任意个数的系统进程和用户进程
- 体系结构模块化,它由数目可变的多个处理部件组成
- 通过共享通信结构上的报文传递进行通信,进程之间的报文传送存在延迟且延迟时间可变
- 实行某种全系统范围的控制,以便提供动态的进程间的合作和运行时间的管理
- 不同系统有着不同的控制程度
c.特性:
- 资源共享:一旦授权,可以访问环境中的任何资源,比如硬件、软件、数据。相关技术比如:提供命名机制。
- 开放性:新共享资源添加并被各种客户程序使用,支持异构资源的添加和使用。相关技术:提供统一的通信机制,发布访问共享资源的接口,虚拟化技术。
- 并发性:各个组成部分可以在并发的过程中被执行,各个进程可以并发访问、更新共享的资源。相关技术:并发控制。
- 可伸缩性:在资源和用户数较大增长的情况下,系统性能仍能维持原状。在资源和用户数较大增长的情况下,系统性能仍能维持原状。
- 容错性:错误发生时,系统能够继续工作的能力.相关技术:恢复——回滚、冗余。
- 透明性:网络环境对于用户和应用程序而言,应该是一个整体,而不是一个互相协作的简单的构件集合。
d.优势:
- 连接不同的机构或团体
- 通过互连和互操作提高系统的协作能力
- 通过并行处理、负载平衡等提高系统的性能
- 通过复制技术提高系统的可靠性和可用性
- 通过模块化技术提高系统的可伸缩性
- 通过动态配置和重新配置功能提高系统的可扩展性
- 通过资源共享提高系统的性能价格比
e.(潜在)问题:
- 软件需求:适合的操作系统、分布计算环境、程序设计语言及应用设计方法
- 通信网络:信息丢失、恢复、网络过载 ...
- 安全问题: 数据共享 vs 数据保密
2.分布式计算基础
a.概念:分布式计算是两个或多个软件共享信息、协同工作。这些软件既可以在同一台计算机上运行,也可在通过网络连起来的几台不同机器上运行。有两种典型的应用途径,一种是将分布式软件系统看作直接反映了现实世界中的分布性,一种是用于改进某些应用程序的运行性能。分布计算技术是构造分布式系统的基础
b.与并行计算的区别:
最大的区别在于目的——并行计算是同时使用多种计算资源解决计算问题的过程,主要目的是为了能更快地完成任务,这就要求多个子任务同时运行,支撑技术如任务的划分、负载平衡、简单的轻量通信协议、零拷贝、高速通信设备、并行文件系统、并行算法等等等。分布计算的应用不一样,如应用本质是分布的(银行系统,远程监控…) ,对通信量、计算量、时间的要求以及安全方面的特点和并行计算都有不一样的地方,所产生的技术也就不尽相同。
- 并行计算突出的是时间上的同步性:同时进行计算
- 分布计算突出的是空间上的分布性:计算在不同的位置进行
- 分布式计算在很多情况下也是并行计算:在网络的不同位置同时进行,两者之间有交叉的技术,如单一系统映像、容错、网络技术…。 分布系统也可以用来做粗粒度的并行计算
c.基本模式:
C-S模式和P2P模式。
两层CS模式 vs 三层CS模式
三层的优点:
- 更合理的分配任务,层次清晰,管理和维护相对简单。
- 使“胖客户”变成“瘦”客户;客户端只需把精力集中在人机界面上。 前例的浏览器是纯粹意义上的“瘦”客户,也叫做B/S模式
- 中间业务逻辑层包含了大量的供客户端程序调用的业务逻辑规则(被用户共享),可随具体业务的变化而改变,大大提高系统的可伸缩性,使中间层的业务逻辑处理与数据层的业务数据紧密结合在一起,可以提高系统的性能。
- 数据服务层主要提供对数据库进行各种操作的方法,系统的安全性提高。
- 大量的中间层中间件平台提供丰富的系统级服务,使得开发人员可以以更少的工作量开发出更复杂、可靠、高效的软件系统。
多层结构:
多层结构需要更复杂基础设施以实现跨网络的通信。相应的分布计算环境会进行支撑。
d.技术基础:
- 网络应用程序编程接口(套接字):
提供了位于不同计算机上的两个进程之间进行通讯的基本机制。面向连接的和无连接的。
- 远程过程调用机制(Remote Procedure Call -- RPC)
基本概念: 说一个比较熟悉的东西,以前我早些时候做嵌入式开发就配置使用过的NFS 就是基于 RPC 的, 我们用下边的两个图进行远程和本地对比:
左边是本地过程调用LPC:一个传统程序由一个或多个过程组成。它们往往按照一种调用等级来安排。
右边是远程过程调用RPC:使用了和传统过程一样的抽象, 只是它允许一个过程的边界跨越两台计算机。使用了和传统过程一样的抽象, 只是它允许一个过程的边界跨越两台计算机。
基本机制:
Client端:
1) 发送远程过程调用的消息(以消息包形式)给远程的server端;
2) 等待, 直到收到server端对该请求的回复;
3) 一旦接收到来自server端的返回执行结果, 就继续执行后面的程序.
Server端:
1) 倾听状态, 等待client端发送过程调用消息;
2) 一旦接收到过程调用消息, server就抽取参数并分析它, 然后执行所请求的过程;
而对于Stub的作用,描述如下:
1) 调用者调用本地stub中的一个过程(开始远程过程调用请求).
2) 这个stub过程把有关的参数组装成一个消息包或一组消息包, 形成一条消息. 运行此执行过程的远程场点的IP地址和执行该过程的进程ID号也包含在这条消息中.
3) 将这条消息发送给对应的RPC runtime(RPC运行库)子程序, 由这个子程序将消息发送到远程场点.
4) 在接收到这条消息时, server端的RPC runtime子程序引用与被调用者对应的stub中的一个子程序, 并让它来处理消息.
5) 与被调用者对应的stub中的这个子程序撤卸消息, 解析出相关参数, 并用本地调用方式执行所指定的过程.
6) 返回调用结果, 调用者对应的stub子程序执行return语句返回到用户, 整个RPC过程结束.
设计时要解决的问题: 在远程过程调用时, 如何定位远程地点,常用的方法是由系统管理一个表,其表项内容为节点地址+该节点上将运行的远程过程的名字。第二是,相关的两个场点必须能协同工作, 所有这些工作对用户都是透明的, 依次执行。
- 面向对象的远程方法调用机制(Remote Method Invocation,RMI):
基本概念: RMI是Java的一组拥护开发分布式应用程序的API。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol),大大增强了Java开发分布式应用的能力,使面向对象技术能够在异构的网络环境中得以全面,彻底,方便的实施,有效地控制系统的开发,管理,维护的复杂性。
基本思路: 把编程的级别从过程调用抬高到对象的调用,其本质上模仿RPC技术,但是多了对象引用的概念。 核心概念:分布透明性。
体系结构和工作原理:
- 客户端发起请求,请求转交至RMI客户端的stub类;
- stub类将请求的接口、方法、参数等信息进行序列化;
- 基于socket将序列化后的流传输至服务器端;
- 服务器端接收到流后转发至相应的skelton类;
- skelton类将请求的信息反序列化后调用实际的处理类;
- 处理类处理完毕后将结果返回给skelton类;
- Skelton类将结果序列化,通过socket将流传送给客户端的stub;
- stub在接收到流后反序列化,将反序列化后的Java Object返回给调用者。
组成:
- 远程服务的接口定义
- 远程服务接口的具体实现
- 桩(Stub)和框架(Skeleton)文件
- 一个运行远程服务的服务器
- 一个RMI命名服务,它允许客户端去发现这个远程服务
- 类文件的提供者(一个HTTP或者FTP服务器)
- 一个需要这个远程服务的客户端程序
典型例子:
- CORBA:Common Object Request Broker Architecture
- DCOM:Distributed Component Object Model
- EJB:Enterprise Java Bean
3.分布式计算环境
a.概念:分布式计算环境本身实际上也是分布式系统,是网络环境下不同软、硬件平台资源共享和互操作的有效手段,使得分布式计算可以比较方便地得以实现,从而使得分布式系统可以比较方便地得以设计、实现、部署、维护。
b.技术路线演进:
理想的技术路线(80年代学术界普遍追求的目标):试图在互连的计算机硬件上部署全新的分布式操作系统,全面管理系统中各自独立的计算机,呈现给用户单一的系统视图。
现实的技术路线(90年代工业界普遍遵守的路线):在网络计算平台上部署分布计算环境,提供开发工具和公共服务,支持分布式应用,资源共享和协同工作。
目前的一个研究热点:基于虚拟化技术
可虚拟的资源:计算机、存储器、数据和信息、仪器设备、应用程序和服务等——网格计算、虚拟计算环境 iVCE、云计算……
c.常见服务:
- 命名服务(Naming):在分布式系统中,命名服务提供了一种定位分布式对象的机制。
- 监视(Monitoring):监视服务不仅可以监视系统的运行状态,而且当需要操作人员参与时可以发出警告信息。
- 许可(Licensing):许可服务用于确认分布式系统的用户已经购买了适当的使用许可。
- 持久性(Persistence):持久性服务提供一种统一的机制,使得分布式对象可以通过持久的数据存储来保存、更新和恢复它的状态
- 安全性(Security):安全性服务确保于分布式对象的通信是安全的,并确认相应的用户具有适当的权限。
- 事务(Transaction):事务服务能够确保一个事务或者完全完成,或者完全放弃。在企业系统中,事务定义了工作的原子级(atomic)单元。分布式事务处理就是一个跨越多台计算机的单个工作单元。
- 消息处理(Messaging):消息处理服务提供异步编程模式。异步模式在很多应用中都需要。
- 分布式垃圾回收(Distributed garbage collection):当一个程序不再使用分布式对象时,分布式垃圾回收服务会自动释放分布式对象所占用的存储单元。
- 资源管理(Resource Management): 一般来说,资源管理器按照使可伸缩性最大化的方式来管理分布式对象,即支持大量的客户程序同分布式对象在短时间内进行交互的能力。