论坛首页 Java企业应用论坛

一台机子的分布式?

浏览 13535 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-09-14  
不过这些定义主要的意思还是要在不同的机器上,通过网络连接
0 请登录后投票
   发表时间:2004-09-14  
我的理解是广义的分布式是把运算分布到不同的节点(节点可以是不同的线程,不同的CPU,不同的VM,不同的操作系统,不同的机器等等)

至于EJB的分布式我的理解也要区分两种,一种是RPC,这是SessionBean和EntityBean用的,另一种是带Transaction的MDB,这种是一种分布式的消息系统。

而我们平时指的只是狭义的EJB的RPC。
0 请登录后投票
   发表时间:2004-09-14  
robbin 写道
我的理解是广义的分布式是把运算分布到不同的节点(节点可以是不同的线程,不同的CPU,不同的VM,不同的操作系统,不同的机器等等)

至于EJB的分布式我的理解也要区分两种,一种是RPC,这是SessionBean和EntityBean用的,另一种是带Transaction的MDB,这种是一种分布式的消息系统。

而我们平时指的只是狭义的EJB的RPC。

倒是一个比较全面的概括.
所以说,大家争论的时候,似乎问题的范围都有理解的不同哦.
我听着听着,有点犯傻, 傻乎傻乎掉着口水那种!
嘿嘿,现在到时比较清楚了,谢谢大家伙.!
0 请登录后投票
   发表时间:2004-09-14  
消息是传统的interprocess机制(特别常用于微核心和操作系统其他组成部分相互通讯),远程消息传递是这种机制的扩展,常在分布式操作系统中使用,应该是RPC的一种

不过消息服务器的消息到底怎么定位,我倒还真说不清
0 请登录后投票
   发表时间:2004-09-14  
EJB的RPC是同步调用,而JMS是异步调用,我倾向于区分。
0 请登录后投票
   发表时间:2004-09-14  
又是一个
http://www.google.com/search?hl=zh-CN&lr=&ie=UTF-8&newwindow=1&oi=defmore&q=define:RPC

好像没有谈到RPC的异步和同步问题
0 请登录后投票
   发表时间:2004-09-15  
我相信我的理解应该没错:
举例说明,假设我们的系统有三个EJB组件:人事、财务、销售,都是开放远程接口,有A、B两台应用服务器,EJB分布式的概念就是可以在A上部署人事、财务的EJB包,在B上部署销售的EJB包,假如有一天用户发现负载不太均衡,就可能调整为在A上部署财务的EJB包,在B上部署人事、销售的EJB包,而程序不必修改。

而应用服务器集群是这样的,在A、B上都部署全部EJB包,当然还需要在服务器上进行一些集群的设置,这样一来,负载均衡就完全交给应用服务器来管理了。

至于集群是否足以替代分布式部署,正是大家争论的焦点
0 请登录后投票
   发表时间:2004-09-15  
还有一种分布式,所有的计算机上都部属相同的软件配置,但是在每台计算机上运行的都是整个数据的一部分,每台计算机的失效都不会影响影响到整体任务的计算。
一般说到集群,我个人的理解,多台计算机在操作系统这个层次上尽量做到紧耦合,使得整个系统在外界看起来就像一台功能强大的稳定的能够容错的计算机在为你服务。
因此我个人的理解,如果考虑整个系统的健壮性,不应该进行功能上的分布,而尽量采取数据处理上的分布。
系统管理员比较喜欢的是一堆计算机处理同样的任务,并且很容易的更换其中的任何一台计算机而对整体没有任何影响。
0 请登录后投票
   发表时间:2004-09-15  
straw 写道
还有一种分布式,所有的计算机上都部属相同的软件配置,但是在每台计算机上运行的都是整个数据的一部分,每台计算机的失效都不会影响影响到整体任务的计算。
一般说到集群,我个人的理解,多台计算机在操作系统这个层次上尽量做到紧耦合,使得整个系统在外界看起来就像一台功能强大的稳定的能够容错的计算机在为你服务。
因此我个人的理解,如果考虑整个系统的健壮性,不应该进行功能上的分布,而尽量采取数据处理上的分布。
系统管理员比较喜欢的是一堆计算机处理同样的任务,并且很容易的更换其中的任何一台计算机而对整体没有任何影响。

对于你的观点。感觉有些不大对劲。
应该是处理同一个任务中的子任务吧。
你们的分布应该是系统级别上的分布,而不是我们讨论的应用级别分布啦!
系统级别的分布很多数据库,服务器都做到了。比如Oracle等
0 请登录后投票
   发表时间:2004-09-15  
以前发了一篇有关分布式和集群的问题的帖子,引过来吧:
引用

希望有人可以耐心的看完并帮我解答一下这些问题,我已困惑多时了,网上查资料查了半天也没查出个所以然来。

引用:
分布式计算是一种把需要进行大量计算的工程数据分割成小块,由多台计算机分别计算,在上传运算结果后再统一合并得出数据结论 的科学。目前常见的分布式计算项目有通常使用世界各地上千万志愿者计算机的闲置计算能力,通过互联网进行数据传输。有分析地外无线电信号,从而搜索地外的生命迹象的SETI@home项目,该项目数据基数很大,超过了千万位数,是目前世界上最大的分布式计算项目,已有四百万台计算机加入了此项目(在中国大陆大约有4万位志愿者);同时也有分析计算蛋白质的内部结构和相关药物的Folding@home项目,该项目大约有十万余支援者参加(在中国大陆大约有60位志愿者)。这些项目很庞大,需要惊人的计算量,由一台电脑计算是不可能完成的。即使现在有了计算能力超强的超级电脑,但是一些科研机构的经费却又十分有限。



从上面的定义看到分布式计算是为了把大量的计算工作分摊给多台计算机进行处理的一种技术。
1.EJB是用于处理分布式计算的一种技术,也就是说当计算量很大是我们应该采用分布式计算,在java世界里就是采用EJB技术了,对么?
2.如果是仅仅是一台EJB服务器,那么EJB的分布式计算能力实际就是没有意义的了,对么?
3."大量的计算工作"是一个怎样的概念?是指对服务的请求很多,还是需要计算的数据和步骤很多呢?或者两者都包含?

从第三个问题引发对集群的概念理解问题:
引用:

集群是一个统称,他分为好几种,如高性能科学群集、负载均衡群集、高可用性群集等。
科学群集:通常,这种集群涉及为群集开发并行编程应用程序,以解决复杂的科学问题。它不使用专门的超级并行计算机,而是用商业系统(如通过高速连接来链接的一组单处理器或双处理器PC),并且在公共消息传递层上进行通信以运行并行应用程序。我们常常听说一种便宜的 Linux 超级计算机问世了,大多数情况就是指这种集群系统,其处理能力与真的超级计算机相当,而其价格与上百万美元的专用超级计算机相比是相当的便宜。

负载均衡群集:负载均衡群集为企业需求提供了更为实用的系统。如其名称,这种系统使负载可以在多台计算机中尽可能平均地分摊处理。负载可以是需要均衡的应用程序处理负载或网络流量负载。在系统中,每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。对于网络流量也是如此。

高可用性集群:高可用性群集的出现是为了使群集的整体服务尽可能可用。如果高可用性群集中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,对用户没有任何影响。
在群集的这三种基本类型之间,经常会发生交叉、混合。比如:在高可用性的群集系统中也可以在其节点之间实现负载均衡,同时仍然维持着其高可用性。



4.上面有关三种集群的解释中,科学集群与分布式计算定义中所列举的例子相近,它所要解决的是需要计算的数据量大、步骤复杂的问题。而负载均衡集群用来解决的问题是服务请求很多,需要多台计算机来分摊负载。高可用性集群是指热备用服务器的概念。这样的理解是否正确?

5.分布式计算是否就是指的第一种集群呢?

6.如果应用EJB的分布式处理,EJB是如何部署的?是在每台服务器部署各不相同的EJB组件还是在每台服务器上部署所有的EJB组件?如果部署各不相同的EJB组件的话,象是科学集群的方式;如果部署所有的EJB组件,象是负载均衡集群的方式。这又回到了第3个问题了,究竟"大量计算工作"指的是什么?

7.如果是因为对服务的请求量很大,不采用EJB技术(就是普通的Java Bean)是否也可以使用负载均衡集群来解决呢?因为我想既然只是服务请求量大,多台服务器都可以各自完成一个完整的业务处理,只需要将请求平均分摊到各个服务器上,就没有必要使用EJB了吧?

以上就是我对分布式计算和集群的困惑了,希望高手能耐心解释一下,感激不尽~

此外我对EJB的使用也感到非常迷惑,究竟什么场合使用EJB呢?网上的技术资料谈到EJB必谈分布式计算,并且大肆鼓吹EJB的强大。但我在各个论坛上看到开发人员无数的抱怨,EJB在这些使用者身上表现成了一种垃圾技术,我偏向开发者的意见,毕竟他们才是实践者。如果认为是对技术的使用不当,那么EJB的门槛也楞是高了点吧?
此外,究竟请求量达到一个什么数量级我们需要集群呢?我看到一些大的论坛系统,有4、5百人在线,用的是PHP技术,速度还停快的。很多门户网站是asp、php构造的,在线人数够多了,我想都是负载均衡的集群吧?
此外看到很多产品都号称采用EJB技术,支持分布式计算,作为产品的技术卖点。我在想他们的产品到底要计算多么复杂的数据啊?迷惑ing


当时看了不少资料,后来导出这样的结论:
引用

我当时总结了一下EJB的应用场合:服务器在物理位置的分布上不在同一区域内,这时可以考虑使用EJB。
例如以下的情况:
1.国际性的大公司,分公司遍布全球,分公司需要同总公司的服务器进行交互。
2.出于职权与安全原因,有的服务器必须由专门的部门或人来管理。

我也同意,例如出于安全与职权的原因,服务器必须分开管理,这时必须是分布式计算。举个实例:电子政务或电子商务中涉及时间的部分,时间由专门的时间戳服务器管理,时间戳服务器的管理应该由政府部门来管理,这样才能保证时间的准确性(防止公务或交易的抵赖行为)。

通常Web Service用来干这个事情,用EJB也能干这个事情。这让我想到:究竟当时EJB出台的时候是怎么定位的?为何它的应用场合让我这样的程序员感到迷惑呢?


可以说一碰到EJB我就有一堆迷惑,也就引出了分布式和集群的疑惑。真希望这个帖子能把我这些疑惑给解了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics