您的位置:首页 > 其它

分布式应用与集群相关概念

2009-11-26 17:05 183 查看
分布式与集中式区别:
集中式,倾向于维护数据库的统一,类似银行业务,所有功能集中于服务器上,对服务器要求高。
分布式:比如一个公司北京上海香港三个地方都有数据库,如果本地查询不到,要查询另两个地方。全球DNS服务器分布也是一个例子,在当地DNS服务器没查到的地址,会在其他DNS服务器上查找,但是过程对于用户是隐藏的。(相关内容:WebService,JNDI,JTA等)

简单来说,就是由分布在不同机器设备上的(可能是在不同区域的)服务集群通过网络组成的一个系统。对于用户提交的请求,系统会根据负载策略分配一个可用的服务资源给用户,并为用户处理请求,在处理完成以后将结果返回给用户。对于用户而言,他并不清楚,往往也不关心这个服务资源具体在哪个物理设备上,在哪个地区,用户关心的是服务的有效性与服务的高效性。


集群相关概念:
http://www.iteye.com/topic/5105

科学群集:简单的说就是划分定义域,分段求值域,再逐步合并值,由于并发问题较少,实现比较容易

负载均衡群集:把工作负荷分摊到几个服务器上,但每个服务器要做的工作是一样的,逻辑上也只有一个数据库,情况复杂,要保证数据完整性和一致性,实现起来很麻烦--ejb(ejb分布的好像不只是这些,还有安全,事务等等,所以搞的很复杂)

高可用性集群:冗余节点,两个东西是一样的,只是提高可靠性,实现较容易



flyisland 发表时间:2004-05-16

1、那些所谓分布式计算、集群是什么?
简单来说他们都是要通过多台机器来完成工作。我认为从工作完成的方式可以分为两种:一、多机合作,就是把一个“工作”拆分多份,交由多个 CPU(或者机器)进行处理,最后把结果综合起来。这种方式一般用于需要强大计算的工作,例如什么流体力学、DNA分析等等。这一类的系统对绝大部分企业来说都是很少涉及到的。

第二种是单机完成,也就是说一项“工作”一台机器就能完成。比如说你用PHP写一个查询用户购物记录的程序,这个PHP只需在一台机器上面就能完成请求,当然是指业务层;即是说到数据库的话,在数据层我们也是只需一台机器就可以了。事实上即使有多台机器,在一次查询请求中,也只能用到一台机器。那么在这种情况下为什么还要用到多台机器呢呢,是因为需要负载均衡与高可用性这两种特性。

对于大多数开发人员来说,提到集群的时候一般都是指后面这种情况,毕竟大部分企业很少涉及到所谓的“科学计算”的。关于分布式计算、集群是一个很庞大的话题,不知道我的三言两语能否给你一点概念上分类的帮助。

2、集群技术已经出现很久了,远在EJB之前,EJB只是在Java实现集群的一种(不是唯一)方式。事实上在EJB的规范中并没有提到集群,但 EJB技术为实现EJB集群提供了坚实的基础。因为EJB是一个得到广泛支持的标准,在集群应用又有很多成功的案例,所以在企业应用中提到集群常常会提到(采用)EJB。

在EJB集群中的每台机器部署相同的EJB,才能做到负载均衡与高可用性。

3、“谈到EJB必谈分布式计算”这是正常的,因为分布式计算就是EJB的目标,这在EJB规范中写着的,这也是你选择是否采用EJB的重要根据。实现负载均衡与高可用性可以有多种方式,在采用三层结构构造系统时,如果你需要业务层实现负载均衡,或者在业务层与其他层在物理上分离,EJB就非常适合。如果你的程序只是运行在一个JVM上,EJB技术就显得不必要了。

EJB还提供其他的特性,但当然无法提供所有特性,是否在你的项目中采用EJB,只有在你对EJB技术有所了解后再针对项目的具体需求才好做出判断。




spring可以非常方便的集成hession或者burlap,调用其它jvm上的bean。

从部署方式上来看,分布式系统的各个节点上应该部署不同的应用,或是一个应用中的不同的业务子系统,节点上的业务逻辑通过JNDI进行定位。
而集群的系统,在每一台server上的内容一定是一致。这样,在一台server当前无法继续提供服务时,应用服务器会把请求无缝的路由到集群中的另一台机器上,保证服务不间断。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: