如何做分布式计算!!各位带星的老大们帮忙啊 !!!

mainone 2004-08-14 03:31:50
比如你有两太以上的服务器!!要完成大量的数据操作!!可以指定其中一台为主服务器!!!它来给其他服务器分配任务!!大家做的工作都是一样的!!

小弟才接触到这个领域!!没有任何经验!!那为老大有经验给小弟指点迷津!!

...全文
325 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
vzxq 2004-08-19
  • 打赏
  • 举报
回复
study
mainone 2004-08-19
  • 打赏
  • 举报
回复
UP
MessiahLS 2004-08-17
  • 打赏
  • 举报
回复
up up
mainone 2004-08-17
  • 打赏
  • 举报
回复
up
mainone 2004-08-16
  • 打赏
  • 举报
回复
十分感谢 MessiahLS(救世主) 等 高手的回复!!还有没有啊!!继续
MessiahLS 2004-08-16
  • 打赏
  • 举报
回复
哦,你说的 Duwamish 呀,我记得,那好像是一个微软提供的分布式应用的例子,我当时介绍的时候是根据我们自己的一个项目来说的,我觉得具体的应用里边有好多的不一样,理论和现实还是有点差距,如果自己有一点这方面的经验的话,我觉得再去看他的例子,那就会体会的更深,在实际应用中,我们方案的设计和决定,都还是考虑了不少的问题,由于是第一次,所以,难免对有些技术感到兴奋,呵呵

至于分布式的开发方式,那真是不体会不知道,一体会才有了那么多的感受,呵呵

大家有话就说,继续讨论
速马 2004-08-16
  • 打赏
  • 举报
回复
COM+可能是最佳选择
直接就有了负载均衡
mars131 2004-08-16
  • 打赏
  • 举报
回复
MessiahLS(救世主)把Duwamish也介绍了一遍,真是辛苦了!!
不过后面说的分布式开发的方式挺好,我再看看哈!
liutaoxwl 2004-08-16
  • 打赏
  • 举报
回复
up
我不懂电脑 2004-08-16
  • 打赏
  • 举报
回复
你可以做一个类似工作流管理器的东西对跨平台工作流节点进行调度。
八爪鱼-杭州 2004-08-16
  • 打赏
  • 举报
回复
http://www.delphidevelopers.com/engineering/deploy/microsoft_app_center_clb.htm
哈哈007哈 2004-08-16
  • 打赏
  • 举报
回复
up
ganenpingsohucom 2004-08-16
  • 打赏
  • 举报
回复
up
dunheng 2004-08-16
  • 打赏
  • 举报
回复
up.
MessiahLS 2004-08-14
  • 打赏
  • 举报
回复
不好意思,楼主邀请的是带星星的老大...我冒创近来了...楼主原谅呀...

哈哈哈,大家一起关注呀 ... #89
MessiahLS 2004-08-14
  • 打赏
  • 举报
回复
我刚刚的一帖回答的应该是搂主问题的基础东西。

如果要想使主服务器动态分配给其他服务器任务,也就是上面提到的负载平衡问题。

可以在主服务器上提供一个负载平衡的监控程序,一点某一台从服务器的负载过大,那么主服务器就可以通过更改远程调用的方向,将对象创建在其他远程服务器上,以平衡过载的从服务器。

这样应该就 OK 了楼主最关心的东东吧...

谢谢
MessiahLS 2004-08-14
  • 打赏
  • 举报
回复
.net 中有一个建立分布式系统的选项,你建立这个项目后,会发现,它会建立几个项目,一个是 业务外观(即 UI 界面访问后台的接口),业务规则(即数据的操作和计算),数据访问

层(即提供访问数据的接口),还有一个 UI 界面,这几个项目可以构成一个简单的分布式系统。

首先要说明一点,这个三层结构中,每一层都依赖于它的下面的层次,因为引用的 DLL 文件,一半都有下面几层所产生的 DLL 文件。这里,UI -> BusinessFacade ->

BusinessRules -> DataAccess ,其中还有一个叫 SystemFramework 的项目,一般是做业务配置的,和底层的一些支持类的(这个项目我没有加,没怎么用过,这是我理解的它的用

途)

然后说说怎么实现分布式的计算,我只能讲一点我在实际中用到的和理解的,也不知道有所帮助,如果有什么错误,不足,请多指教。

1.介绍一下项目实施时的一些部署问题,一般,客户端只发布客户端软件,即 UI ,还有一个很重要的 BusinessFacade 层也部属在这里。然后,将 BusinessRules 层和

DataAccess层(这里属于中间层)部署在几台应用服务器上。最后将物理数据库部署在几台数据库服务器上。整个部署就完成了。其中,部署 BusinessRules 和 DataAccess 层时,可

以将它们也分别放在不同的服务器上。

2.介绍一下各层次的功能和调度问题。用户操作 UI 界面,UI 界面向 BusinessFacade 提出请求(可以说 BusinessFacade 提供了一定的可供 UI 访问底层的接口)。然后由

BusinessFacade 向它的下一个层次发出调度请求。当然,下一层的 BusinessRules 也为它的上一层 BusinessFacade 提供了一定的接口来访问数据。BusinessRules 层向

DataAccess 提出请求,要求获得需要的数据,然后由 DataAccess 访问数据库,取回所需要的数据,交给 BusinessRules,此时,BusinessRules 进行大量的计算和其他的工作。最

后将数据返回给 BusinessFacade 后,传给 UI 来显示。这样就完成了整个的分布式应用。其中需要说明的:
a.你可以调整 BusinessFacade 向 UI 客户端提供你想提供给他的功能。也就是更一般的,下一层可以提供且仅提供想提供给上层的功能接口。这样一来,有一个明显的好处,上层

的调用不能直接的访问到底层数据和逻辑。
b.BusinessFacade 提供的功能可以对应到 UI 客户端的每一个大的功能,当然可以将一些相关的功能集中到同一个BusinessFacade Object 中。在每一个 BusinessRules

Object 中可以提供一个类似的计算功能。也就是说 BusinessRules 对专门的计算有专门的负责对象(模块)。对于 DataAccess 层,基本上是每一个 DataAccess Object 对应于数据

库中的一张表的读取逻辑,即查询,更改,删除,插入操作,以及所需视图的建立等数据操作。
c.这里有一个很重要的东东还没有提出,也许你要问我们的数据从前到后,又从后到前该怎么传递呢?我们这里又多建立了一个用于描述数据的实体类 BusinessEntity 。它描述了我

们的系统中使用到的数据。就像 struct 一样将相关数据结合在一起的类。它一般都作为方法的参数,用于在三层结构中传递数据。

3.想说什么来着?忘了,不好意思,让我想一想。哦,对了,想起来了,是想说明一下远程调度的问题。因为我们的三层结构中,各个应用层次都分布在不同的计算机上,负责专门的业

务,因此我们就要考虑到该怎样在多台计算机间进行通信。这就频及到 .net 的远程调用, Remoting。以往的非 .net 的分布系统的远程调用常常采用 COM+ 的方式。现在 .net 框架提

供了良好的远程调用方式。它允许在在客户端和各层的服务端通过写配置文件来告诉计算机,那些对象将采用远程调用的方式在远程计算机上创建。当然也可以手工的添加需要远程创建的对

象的创建代码。例如: Activator.GetObject(...) 方法和 Activator.GetInstance(...) 方法,这两个方法都可以返回在远程创建的对象的引用(顺便说一句,如果在客户端和服务器端都使

用了config文件进行远程访问配置,那么可以方便的使用 new 关键字直接创建对象,计算机会根据配置文件自动判断是否在本地还是在远端创建对象),对这些远程对象的操作,感觉像是

在本地使用一样,但是,真正的这些对象的方法的执行,全部是在远端进行的,然后只是回传了操作的结果。这样,就实现了分布应用程序的宗旨,在不同的服务器上完成不同的功能。例如

,你想在服务器1上完成加功能,在服务器2上完成减功能,那么将完成加功能的 DLL 部署在服务器1上,完成减功能的 DLL 部署在服务器2上,并且将它们注册为可远程调用的。那么在客

户端,配置好哪些对象在哪台计算机上创建,那么,所有实现加功能的工作都回被传到服务器1上执行,而减功能都会传到服务器2上运行。这样功能就的到了分布应用。注意,微软还提供

了另一种远程调用的发布方法,也就是 Web Service 。这样一来,你可以将你的功能发布到网上,也可以实现另一种模式的远程调用,另一种模式的分布应用。

4.最后,我想说一下分布式的开发方式。当我回想起我开发的分布式应用时,开始总觉得会非常麻烦,不好同一管理,等做完了,才发现开发起来也是很简单的。可能大家看到这里,觉

得分布式开发的困难之处就在于它很分布,不好管理。但是,.net 早已给我们想好了开发方式。我们一般使用的会有两种开发方式:
a.客户端和服务器端在同一地点上开发。那么这样是最好管理的,本地开发出来的客户端就可以调用本地的服务端提供的远程调用对象(这是名不其实的远程调用)。等开发完成后,

再将客户端和服务端分开部署在不同的机器上。就 OK 了。
b.客户端和服务器端不在同一地点开发,可能相隔甚远,只有网络将它们连接。那么这时,服务器端开发人员可以将服务器端提供的服务接口,做成一个接口文件,提供给客户端开发

人员,使得客户端开发人员按照接口进行开发,进行远程调用,而不关心接口实现。或者是由服务器端开发人员提供完整的 DLL 文件给客户端开发人员使用,这样是最笨拙的方法,因为一

旦 DLL 中的实现又所变化,那么就得重新发布整个 DLL 文件,通常一个大型项目的 DLL 往往都有很大。忘了说一点,在客户端进行远程调用时,必须要有远程调用对象的一个描述,也就

是一个接口描述。所以,可以使用 .net Framework 提供的 soapsuds.exe 工具将大的 DLL 产生它的一个接口描述,发布给客户端开发人员,这样的接口描述文件小的可怜,只有几十

几百K,所以要相对灵活许多。或者就像前面说的将 DLL 的整个文件发布给客户端,这时候,这个大的 DLL 文件起到的作用也只是一个接口的作用,它的实现并不被本地客户端执行,本地

客户端所执行的其实是远程 DLL 文件中的实现(即使两个 DLL 文件的内容是一样的)。

好了,好了,终于把我现在能想到的东西都说了,由于我说的是自己做项目的一点理解,所以难免有点偏差,希望大家谅解。还有,语言方面我就说得显然没有专家说得那么专业,请大

家将就将就吧。 唉... 打字手都打困了,休息了。

有什么好的东西,大家一起来讨论呀。

谢谢支持。
hertcloud 2004-08-14
  • 打赏
  • 举报
回复
http://www.socent.com/dotnet/message.asp?id=390
mainone 2004-08-14
  • 打赏
  • 举报
回复
zjsen(星愿)(个人观点,仅供参考.请自行验证)

同意 楼上的说法!!但是在。NET 中好象没有介绍该方向的书!!!
八爪鱼-杭州 2004-08-14
  • 打赏
  • 举报
回复
应该找些负载平衡的资料更贴切些吧
加载更多回复(3)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧