找回密码
 新注册用户
搜索
查看: 18363|回复: 27

分布式平台介绍

[复制链接]
发表于 2005-8-28 00:35:28 | 显示全部楼层 |阅读模式
各位好:
我们业余时间设计了一个平台软件,不知能否方便大家的分布式程序的开发,我们的目的是自己的成果不要烂在自己的手上,大家能用起来,使它能发展壮大,同时,根据不同的需求,我们也可以不断的完善的我们平台,这个平台花了近5年的时间做的,开始是针对网游做的一个开发、运行平台,去年把它改造了一下,适合于更通用的分布式计算,大家别误会,我们现在不是商业团队,目前还是在工作之余做的,欢迎大家试用!我把平台介绍贴给大家,感兴趣的email联系:yeboguo@yahoo.com
Corba、DCom主要针对服务器端而提供的技术,对于客户端,可以通过Corba接口和DCom接口访问不同的服务器,形象的可以说是多个服务器对一个客户端;与之相比较,SRP分布式对象模型中,一个对象分布在服务器和多个客户端,是真正意义上的分布式对象技术,而Cobra/DCom更加接近客户服务器技术。
SRP分布式对象支持面向对象的概念,支持对象的继承、重载等特性。各个应用服务之间,可以实现对象的重用。由于对象的粒度小,增加了可执行代码之间的重用度,提高了软件的可重用性。
SRP对象同时分布在服务器和客户端,并且是多个服务器和多个客户端,可以根据对象处理的负荷,将对象的处理分布在不同的实体上执行,因此基于SPR分布式对象模型,很容易实现负载均衡。

1.2.1        SRP分布式对象
在SRP分布式运行环境下,对象有三种存在方式:存在于本地的本地对象(客户端或者服务器);存在于特定的客户端-服务器的客户对象;存在于服务器和所有的客户端全局对象。这三类对象的特点如下:
1.本地对象
    在程序运行时,根据需要动态产生,仅仅在本地有效,在其它(服务器或者客户端)运行实体上,对象无效。对象的属性数值本地维护,不涉及动态数据同步。
2.客户对象
    服务于特定的客户端-服务器,一般是在客户端接入之后动态生成。在服务器端和特定的客户端有效。在其它(客户端)运行实体上无效。支持对象的全局属性数值的动态数据同步,服务器对对象属性数值的修改,由SRP平台自动同步到特定的客户端。客户端对对象属性数值的修改,由SRP平台自动同步到服务器。
3.全局对象
    一般静态创建(定义于对象的描述文件中),也可以动态创建。该对象所有(客户端和服务器)的运行实体上有效。支持对象全局属性的动态数据同步,服务器对对象属性数值的修改,由SRP平台自动同步到所有的客户端。任何一个客户端对对象属性的修改,由SRP平台自动同步到所有的客户端。当新的客户接入时,由SRP平台负责全局对象的自动创建和初始属性数值的同步。
1.2.2        SRP对象的属性
传统上,对象由对象的属性和对象的操作方法组成,对象的属性可以有不同的访问权限,public、protect、private。在分布式运行环境下,不同于传统的面向对象技术,SRP分布式对象的属性在传统对象的属性特征的基础上,增加了新的特征,SRP对象的属性分为两种模式:本地属性和全局属性。其特点为:
1.本地属性
    任何实体(客户端或者服务器)对该属性的修改,仅仅在本地有效,属性数值不会同步到其它实体。
2.全局属性
    任何实体(客户端或者服务器)对该属性的修改,如果是客户对象,则进行特定客户端和服务器端的更新。如果是全局对象,则同步到所有的服务器和客户端。
1.2.3        SRP对象的特点
在SRP平台中,为了支持对象的重载,和对象粒度上的系统、应用的升级,把对象进行了拆分,对象属性数值和对象的方法分离。客户端连接到服务器后,服务器端的执行代码同步到客户端本地运行。

1.3        SRP分布式服务
把一组分布式对象组织起来,使其为用户提供某种或者某些功能,称为SRP分布式服务。也可以说,SRP分布式服务是具有某种功能的对象的集合。SRP分布式服务有以下特点:
1.松散对象耦合
对象之间耦合关系是松散的是指:构成分布式服务的对象的执行体,可以编译在不同的文件中,一个对象在装载运行之前,不知道另外一个对象的属性和方法的地址。对象在其执行过程中,必须能够容忍其它对象的删除,执行代码失效等异常,并在不同的情况下予以不同的处理。
2.可管理的服务
    由于对象之间的松散耦合关系,每个对象都可以动态进行管理(增删改操作),因此SRP分布式服务是可管理的。可以通过工具,动态获得对象属性数值,动态进行对象的增加、删除操作。
3.服务的初始化
    SRP分布式服务由分布式对象构成,与传统的应用程序不同,没有入口函数。但是作为一个完整的服务,需要对服务中涉及的相关对象进行初始化。完成初始化任务的对象,称为服务的初始化对象。每个服务都有一个初始化对象,该初始化对象在服务加载完成之后运行,完成对整个服务的初始化。
3.服务的客户端和服务器端同步
    分布式对象在服务器和客户端需要保持属性的一致。同步包括初始同步和运行中的同步。在客户端与服务器端建立连接之后,需要进行初始同步。初始同步完成之后,对象属性的动态变化,需要同步到服务器和客户端。
4.服务项目
    分布式服务由服务项目组成,每个服务项目包含一些分布式对象,提供分布式服务的某些子功能。服务项目作为客户和服务器端同步的单元,这样设置的目的主要考虑同步传输的通信量。在一个服务项目内,可以将对象分为若干组,客户端通过激活集设置,说明与哪些组保持同步状态,进一步减少同步的通信量。支持每个客户连接的流控。

1.4        SRP分布式对象模型
基于以上分类,SRP提出的分布式对象模型如下:



1.        对象管理器
对象的创建、删除、查询、属性修改,每个对象分配有一个在服务内唯一的标识符。
2.        事件调度器
对SRP平台产生的事件(对象的创建、销毁、属性变化、激活状态变化)和对象字定义的事件进行调度。
3.        同步数据控制层
负责对象的定义在服务器、客户、和调试器之间的同步。包括客户/调试器连接的初始数据同步,和运行过程中的动态同步。
4.        同步过程控制层
处理服务器/客户、服务器/调试器之间初始对象定义同步。
5.        通信网络层
负责服务器/客户、服务器/调试器之间连接的建立和数据传输。

    客户端和服务器端的应用,通过本地访问接口与SRP平台进行交互,而不需要关心对象属性数据在服务器和各个客户端之间的同步。

1.5        SRP平台
    SRP平台实现了SRP分布式对象模型。

1.5.1        对象与SRP平台之间的交互
        通过调用SRP平台输出的接口函数
        通过处理SRP平台产生的事件
1.5.2        对象之间的交互
        使用对象提供的功能函数
        产生事件,由其它对象处理该事件
        处理其它对象产生的事件
1.5.3        SRP平台的功能
SRP平台分为三部分:SRP服务器(SRPServer)、SRP客户端(SRPClient)、SRP调试器(SRPDebug)。
1.5.3.1           SRP平台的功能
SRP平台提供分布式服务的运行环境,具有以下功能:
● 对象属性初始同步:服务器和客户端,服务器和调试器之间的对象属性初始同步
● 对象属性的动态同步:对象属性的修改,由SRP平台自动同步到其它实体。
● 对象执行体版本同步:服务器和客户端,服务器和调试器之间的对象执行体版本同步
● 对象执行体的加载和初始化。
● 对象产生事件的调度:依据对象的父子关系,自动对事件进行调度。
● 静态数据的管理:对象包含的静态数据,根据设计单独存储成文件,在客户端/调试器需要时,由SRP平台自动从服务器端下载。
● 对象管理:对象创建,销毁,激活等变化,由SRP平台产生事件,通知对象的执行体进行处理。
● 对象消息传输:对象在其客户端和服务器端,可以通过SRP平台相互发送消息。
● 客户接入管理:当服务器端由客户接入时,自动调度客户接入管理对象进行处理。
● 脚本安全管理:分布式服务和对象的定义存储为脚本文件,支持用户和密码保护,用户可以分别具有读、写、执行和导出的权限。

一:SRPDebug

    ● 服务和对象编辑:完成对分布式服务和分布式对象的编辑。设置服务属性,定义服务项目。
● 对象属性编辑:内置属性值编辑器,可以对SRP服务的任何对象进行属性的编辑。
● 支持本地编辑(SRPDebug装载服务)和在线动态编辑(SRPDebug连接到SRPServer,对正在运行的服务中的分布式对象进行增删改操作。
● 支持外挂编辑器:对于复杂对象的数据,支持外部编辑器模块,外部编辑器可以使用SRP平台提供的接口,实现对象的可视化编辑。
● 生成对象模板:生成对象实现代码的框架和头文件定义。
● 导入XML文件:SRP服务支持XML定义,可以将XML文件格式定义的服务导入到SRP平台,文件可以定义某些分布式对象,也可以是完整的服务。

二:SRPServer

● 分布式对象服务器端运行环境:加载SRP服务,自动调用SRP服务的初始化对象,完成服务初始化。
● 支持客户端接入管理:客户端建立连接之后,调用客户管理对象,实现客户的接入过程。

三:SRPClient

● 分布式对象客户端运行环境:连接服务器,根据服务器指令,动态加载SRP服务,自动调用SRP服务的初始化对象,完成服务初始化。
● 提供统一的运行环境,采用SRP客户端平台,可以连接到任何SRPServer,执行不同的服务。
● 漫游:客户端正在运行的服务,可以启动另外一个服务连接。
回复

使用道具 举报

发表于 2005-8-28 20:44:27 | 显示全部楼层
比较感兴趣,能否给一些用例
回复

使用道具 举报

发表于 2005-8-28 21:05:08 | 显示全部楼层
有平台,开发就不会那么麻烦了
回复

使用道具 举报

发表于 2005-8-28 21:28:04 | 显示全部楼层
分布式计算本身是个很广的概念,我们论坛里所说的分布式计算是一种基于互联网的网络协同计算技术。
不知道楼主设计的平台是否能象 BOINC 一样适合设计我们论坛里所推广的这种计算。
回复

使用道具 举报

 楼主| 发表于 2005-8-28 22:36:28 | 显示全部楼层
目前的一个例子是个简单的网游例子,关于适合bonic这样的,需要考虑具体的需求,我还真不知bonic的工作原理,哪位简单描述一下,我考虑。
回复

使用道具 举报

发表于 2005-8-28 23:39:02 | 显示全部楼层
bonic叫做sdk更合适,它的计算指的是数学意义上的计算,分布式也是狭义上的

我觉得SRP应该能完成bonic的大部分工作,但是没有多大意义
bonic关心的是如何组织客户端来完成一个科学计算,它要保证效率和准确性,它甚至没有分布式对象的概念
SRP显然不是为此设计
回复

使用道具 举报

发表于 2005-8-29 00:36:00 | 显示全部楼层
关注中^_^
回复

使用道具 举报

 楼主| 发表于 2005-8-29 11:02:24 | 显示全部楼层
分布式计算,我想总体上分2个层面,一是平台层,二是分布式应用程序。分布式应用的功能应该包括分布式应用程序以及任务划分吧。平台层主要是为分布式应用提供方便、高效的服务,可能最主要的就是Clent与Server间的通信、多个Client间的通信,高效的通信功能是SRP的最基本的功能之一了,SRP还有一个方便之处就是客户端的自动下载(升级时不需客户端人工参与),至于分布式对象,是SRP开发的一个特色,任务可以以对象粒度划分,当然对分布式计算不是必须的。
    我想知道的是除了底层通信外,大家还有什么需求可以提出来,讨论一下,总结出分布式计算的具体,或许SRP已经实现,或者稍做修改就可以实现。
   谢谢大家关注!:)
回复

使用道具 举报

 楼主| 发表于 2005-8-29 11:11:04 | 显示全部楼层
我们现在有一个demo网站,平台程序正在维护,相对稳定的一个版本,很快就会上传,网站是朋友帮忙搞的空间,网站内容也很不规范,我们毕竟只是个人行为,没有精力维护网站,网址:
http://www.srplab.com,欢迎大家去看看!
回复

使用道具 举报

 楼主| 发表于 2005-8-29 11:18:50 | 显示全部楼层

#

“就目前来看,全球的各种分布式计算已有约百种,这些计算大多互无联系、独立管理、独立使用自己的一套软件。目前的这种分布式计算互相割据的格局很不利于发展的需要。比如,某个生物学研究机构需要利用世界各地志愿者的计算机来模拟蛋白质折叠的过程,那个生物学研究机构没有分布式计算方面的专业人才,而但是社会上也并没有任何公司可以提供这样的服务,他们就不得不自己花费大量精力用于开发分布式计算的服务器、客户端。”

    采用SRP分布式平台开发分布式计算,通过SRP客户端可以参加任何其上开发的分布式计算项目,不需要进行客户端的下载,安装、升级等繁琐的工作。客户端使用非常简便,有利于吸引更多的爱好者参加。
回复

使用道具 举报

头像被屏蔽
发表于 2005-8-29 12:17:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2005-8-29 22:16:29 | 显示全部楼层
SRP只是一个分布式软件的开发、运行平台,适合于基于其开发的分布式应用,SRP平台肯定不能运行现有的分布式应用,如SETI,当然,除非你有它的源码,因为每个平台都有它自己的接口。
总之,如果各位有开发分布式应用的打算,那么不妨试试SRP,除了底层通信,它毕竟还有一些特色,与现有的平台比较,另外,SRP的底层通信也使用了一些机制,确保通信的高效、准确。
回复

使用道具 举报

 楼主| 发表于 2005-8-30 09:45:55 | 显示全部楼层
SRP平台是具有全部知识产权的自主研发的产品,其很多特点是目前其它类似平台无法比拟的,希望各位同仁共同关注。
    分布式对象有两种传递方式:按值传递和按地址传递对象
1。按地址传递,不适合采用细粒度接口,效率太低,经常受到批判。
2。按值传递,是在服务器S端进行对象的串行还,在C端进行对象的反串行化。但是业界很少有人讨论对象的运行环境。对象本身的运行,可能不是独立的,需要依赖于其它对象,或者服务器端的特殊环境(比如数据库),因此这种对象反串行化到客户端没有任何意义。也就是说,按值传递,只能够适用于哪些能够独立运行的对象。

    SRP平台能够解决上述问题,全局对象自动发串行化到客户端,通过定制对象在客户端和服务器端的不同行为,将对象及其相关对象的部分功能放在客户端运行。
回复

使用道具 举报

 楼主| 发表于 2005-8-31 20:58:15 | 显示全部楼层
在这里介绍SRP平台,帮助大家能尽快开发出分布式应用程序,同时,对SRP也有所帮助。每个人都有特长,对学数学、物理等理科朋友的更强的优势在于写一个好的算法,好的分布式应用程序,对计算机专业人士来讲,更强的优势在于计算机方面的知识,如如何保证底层通信的正确、底层通信的高效,如何开发出易用的软件。
回复

使用道具 举报

发表于 2005-9-1 01:42:46 | 显示全部楼层
引用 星河工作室 在 2005-8-29 11:11 时的帖子:
我们现在有一个demo网站,平台程序正在维护,相对稳定的一个版本,很快就会上传,网站是朋友帮忙搞的空间,网站内容也很不规范,我们毕竟只是个人行为,没有精力维护网站,网址:
[url]http://www.srplab.com[/u ...

空间问题可以向管理员申请fans站的空间
出于安全考虑,只能是HTML空间~

服务器架设~不知道现在服务器能拖动否?……

PS:目前缺的不是软件,不是平台,而是数据来源……也就是需要来计算的东西,我们总不能一直计算PI吧……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~
欢迎大家多多支持基金会~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-5-4 17:03

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表