面向对象的分布式开发系统 (三)

原创 2003年08月29日 07:41:00

返回首篇

前文:面向对象的分布式开发系统 (二)

3.3     分布式对象Distributed Object

在上文提到,SoftEngine 由不同种类的对象构造,在发布实施角度上看,可分为三种: 本地(Local)对象,远地(Remote) 对象,虚拟(Virtual) 对象

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-8-281102280.png

图表 6 Local, Remote and Virtual Object

在上图中:

  • 本地对象Local Object : 指分布在同一个SoftEngine 独体系统中的对象,互称为本地对象。如:在系统I 中的对象A B 互为本地对象
  • 远地对象Remote Object : 指分布在不同SoftEngine 系统中的对象(同一个群体系统)。 : 对象A C ,以及B C 互为远地对象。对于系统II 中的C ,系统I 中的A B 属于远地对象的
  • 虚拟对象Virtual Object : 不同于本地和远地对象,虚拟对象不属于真实的对象,而是一个虚设的类型。真正的操作不在虚拟对象本身,只是远地对象在本地的映射。如:虚拟对象A,是A 在系统II 中的映射。对象C A发送的任务,会转送到远地对象A ,而C 不知道,也没有必要知道。同理,如果对象B 需要发送任务到C ,在系统I 中可定义C 的虚拟对象

本地和远地对象是相互的关系。而虚拟对象只是一种映射,用于关联本地和远地对象,起到分布和负载均衡的作用。三者之间的关系在开发中无须关心,只有在系统部署中,通过配置发布环境来确定或改变。以下图为例,介绍负载均衡:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

CSDN_Dev_Image_2003-8-281102282.png

图表 7 A load balance system

在一个分布的系统中,有两个独立的运行系 I II 。其中有相同的对象A1, A2, A3, A4 被分别发布,他们所被加载的类是相同的,只是被定义的发布名称不同。如果再定义一个虚拟对象A 同时映射到A1 A4 ,同时配置不同的策略,如负载均衡的循环法(Round-Robin) ,或冗余法(Hi-Available)。发送到A 的任务,会按照不同的策略分发到A1-A4 上。

在应用对象开发测试完成后,部署的策略,包括:系统配置、对象配置、对象发布等信息,被定义在每个独体系统的配置文件中。通过这些配置文件,将会动态地构建出一个分布的网状系统,可以完成特定的应用功能。所以如此构成的分布式系统具备以下的体点:

  • 整个分布式系统由各种对象,以动态组件的方式构造。
  • 对象可以存在于任何网络(LAN/WAN) ,任何主机。
  • 通过配置,对象可以动态地加载/ 卸载。整个分布系统,始终处于动态调整状态。
  • 虚拟对象让本地对象忽视真实的远地对象的物理位置。
  • 开发与分布过程完全分离。在对象开发过程中,无需过多的考虑系统级的问题。

CSDN_Dev_Image_2003-8-281102284.png

图表 8 A distributed system

3.4     数据安全Data-Safety

应用系统所需的数据信息,在以任务的方式送入SoftEngine 系统内部后,任务将会被高效地传输在每个独体系统内部,或群体系统的网络中。因此,如何保证任务的安全到达,是一个关键的问题。在SoftEngine 里,解决这个问题的技术称为:数据安全。其中包括四个部分

  • 安全的任务池Safety Task Pool
  • 任务悬挂Pending
  • 降速传递Slowdown
  • 流量控制Flow control

以下图为例描述:

CSDN_Dev_Image_2003-8-281102286.png

图表 9 Data-Safety

Forward Task: 发送任务

Backward Task: 回送任务

Undeliverable Task: 无法发送任务

Panding Task:悬挂任务

Task Channel:任务通道

Pending Pool: 悬挂缓冲池

 

l         安全的任务池Safety Task Pool

SoftEngine 的内核,大部份对象都有自己的任务池与任务通道连接。类似于文件系统的内存缓冲,任务池对于提高系统性能有非常重要的作用。同时为了保证数据的安全不丢失,任务池需要良好的设计,包括: 过载保护(overload protection) ,硬盘缓冲等安全机制,确保无论对象运行状态如何,任务都不会丢失。也就是说,当一个任务被成功地送入目的对象的任务池,这意味着:任务是安全的。所以任务池保证了静态任务的安全性。

l         任务悬挂Pending

在一些特殊情况下,任务无法立即发送到目的对象(如上图对象A 发送任务到对象C )。无法发送的任务将会被悬挂在一个特殊的任务池中 悬挂缓冲池。通过悬挂缓冲池,SoftEngine 系统会记住有那些任务因为那些目的对象而被悬挂,等待目的对象恢复后重发,或则任务超过了规定的生存周期,被丢弃。

l         降速传递Slowdown

在常规状态下,对象A 会以最快的速度向对象B 发送任务。但如果此时,对象B 处于无效状态,或任务量过载,那么第一个无法发送的任务将会被悬挂,同时发送源对象的发送速度也会被系统自动控制,减缓发送的频率。称之为: 降速传递。

降速传递机制可以在巨大的任务流中,有效地保护系统失去控制,尤其当某个任务流中的对象发生了意外。举个例子:

 

对象A,B,C 合作完成一项任务,对象A 会产生大量的任务,经过对象B ,发送到C 。如下图:

CSDN_Dev_Image_2003-8-281102288.png

图表 10 One Sample

假设,对象C 由于某种原因停止了工作,在没有降速传递机制的情况下:对象B 也会由于大量的任务没有发送,而很快“爆掉”。对象A 也会跟着失控。此时堆积在A,B,C 中间的任务将无法处理。另外,系统的CPU Memory 开销可以会受到影响。采用了降速传递机制,对象B 的处理和发送任务的工作在一定程度上得到控制,对象A 也是如此。整个工作流的处理速度会自动减慢。直至对象C 恢复正常的工作状态。

所以当系统发生无法估计的问题时,降速传递可以有效地起到稳定系统的作用,避免大量数据因事故而丢失。

l         流量控制Flow Control

在分布式系统中,任务将会通过任务通道、通讯通道在内存、网络上传输。保证传输线路上的数据安全也是非常重要了。流量控制机制是一个常见的技术用于解决传输双方的稳定及数据的安全问题。这里不做过多的介绍。

 后续:面向对象的分布式开发系统 (四)

面向对象的分布式开发系统 (二)

前文:面向对象的分布式开发系统 (一)3.     布式系统的关键技术3.1     面向对象技术Object-Oriented客户/ 服务器模式,是典型的分布式计算模型。在此模式下,客户端建立连接到...
  • snapbug
  • snapbug
  • 2003年08月29日 07:41
  • 625

面向对象的分布式开发系统 (一)

            面向对象的分布式开发系统                                         -        理论 篇                      ...
  • snapbug
  • snapbug
  • 2004年04月20日 12:05
  • 897

面向对象的分布式开发系统 (四)

返回首篇前文:面向对象的分布式开发系统 (三)3.5     流水线式设计模式Pipelining Design Model“流水线式”经常在讨论CPU 技术时被谈及。在CPU 设计中,非流水线式设计...
  • snapbug
  • snapbug
  • 2003年08月29日 07:41
  • 652

知识点2:阐述面向对象的三大特征

面向对象编程的三大特征分别为封装、继承和多态。 封装,是指利用抽象数据类型对数据信息以及对数据的操作进行打包,将其变成一个不可分割的实体。在这个实体内部,我们对数据进行隐藏和保密,只留下一些接口供外...
  • dengminghli
  • dengminghli
  • 2017年04月23日 14:20
  • 796

面向对象的三大特点

面向对象的三大特点
  • lvsaixia
  • lvsaixia
  • 2014年11月13日 19:41
  • 3644

iOS面向对象的三大特征

一、封装 封装是对象和类概念的主要特性。它是隐藏内部实现,稳定外部接口,可以看作是“包装”。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行...
  • zhangshichi
  • zhangshichi
  • 2016年04月09日 11:35
  • 1121

面向对象的三个基本特征

面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对...
  • ztj111
  • ztj111
  • 2007年10月29日 16:30
  • 40056

面向对象的三大特征及其作用

封装 封装其实就是信息隐藏,隐藏一个对象的本质,让用户不再注意那些细节.提供一些向外的接口供别人使用。 就像电视的内部已经被封起来,你不需要知道它的内部是由哪些零件组成、如何工作。你只知道用遥控器...
  • guogenfang
  • guogenfang
  • 2013年02月15日 14:32
  • 1808

关于面向对象以及三大特征的解释

第一次写,想想就有点小激动。个人理解有不全的地方
  • super_xiaoY
  • super_xiaoY
  • 2016年12月06日 10:39
  • 1438

面向对象的三大特征和五大原则

面向对象的三大特性   1.封装  所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑...
  • qq_15150353
  • qq_15150353
  • 2016年09月24日 11:26
  • 1926
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象的分布式开发系统 (三)
举报原因:
原因补充:

(最多只允许输入30个字)