|
锁定老贴子 主题:关于集群与Spring
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2004-12-26
所谓集群一般就是指Session在各个节点的复制,所以集群一般只针对容器而言的对吗?有就是说集群一般是针对web container和EJB container的对吗?是不是也就无所谓Spring是否支持集群了对吗?Spring也是运行在web container中的,所以只要web container做好集群了,也就无所谓Spring的集群了,我大概考虑了一下,Spring无非就是IoC和AOP,这里面也就无所谓状态不状态的,所以也就无所谓集群了,只要web container做好集群了,会自动路由到某个container上来操作spring即可,不知道我的理解是否正确?
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-27
太对了,你真聪明。
本来spring和群集就没什么关系嘛! |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-28
楼主不是挺清楚的嘛。集群是AppServer的事情,不用你管。
|
|
| 返回顶楼 | |
|
最后更新时间:2005-01-02
不全对。
至于集群是不是只是session在各个节点上面的简单复制且不论,在web container和ejb container在各个节点上面部署的时候(其实在主控节点上面部署到各个节点上面)会检查要挂到jndi以及要做集群处理的类,如果发现相应的类不支持集群就会报告错误。hibernate就不支持集群,在配置hibernate的name到集群jnditree上面就会报告错误,但是可以over过去。看得出来集群不应该只是appserver和container的事情,还和程序有一定的关系。 hpq852 写道 所谓集群一般就是指Session在各个节点的复制,所以集群一般只针对容器而言的对吗?有就是说集群一般是针对web container和EJB container的对吗?是不是也就无所谓Spring是否支持集群了对吗?Spring也是运行在web container中的,所以只要web container做好集群了,也就无所谓Spring的集群了,我大概考虑了一下,Spring无非就是IoC和AOP,这里面也就无所谓状态不状态的,所以也就无所谓集群了,只要web container做好集群了,会自动路由到某个container上来操作spring即可,不知道我的理解是否正确?
|
|
| 返回顶楼 | |
|
最后更新时间:2005-01-03
layout 写道 不全对。
至于集群是不是只是session在各个节点上面的简单复制且不论,在web container和ejb container在各个节点上面部署的时候(其实在主控节点上面部署到各个节点上面)会检查要挂到jndi以及要做集群处理的类,如果发现相应的类不支持集群就会报告错误。hibernate就不支持集群,在配置hibernate的name到集群jnditree上面就会报告错误,但是可以over过去。看得出来集群不应该只是appserver和container的事情,还和程序有一定的关系。 集群分几种来说吧,一种是负载均衡集群,比方说我仅一台web server,当用户太多,导致处理效率低下时,可以多加一台web server,做“负载均衡的集群”。这个时候应用程序的编写是不需要关心集群的问题的。 如果是多台web container和多台ejb container的这种,是不是应该称为“负载均衡集群+分布式集群”?而实际多台web contianer之间应该是不需要在编程时考虑集群的,同样多台EJB oontainer应该也不需要在编程时考虑集群的。我想你说的是不是在web container和ebj container之间通讯时编程需要考虑这个问题呢? 实际上应该也不会有什么问题吧,不明白你举的例子的实际情况,能不能详细点? |
|
| 返回顶楼 | |
|
最后更新时间:2005-01-03
[quote="layout"]hibernate就不支持集群,在配置hibernate的name到集群jnditree上面就会报告错误,但是可以over过去。[/quote]
Robbin也说过,Hibernate与集群是没有关系的,如果按你说的理解的话,你所说的Hibernate应该怎么支持集群呢? 你说的例子可不可以详细一点呀?[/quote] |
|
| 返回顶楼 | |
|
最后更新时间:2005-01-04
对于cluster机制通常在部署的过程中每种应用服务器会执行不同的过程,而绝大多数应用服务器在部署的时候会检查被部署的程序是否是session cache safe的,因为cluster机制中很重要的一部分就是session的保持和复制.此外对于要绑定到jndi tree上面的对象也是要检查是否是clusterable和remoteable的.
例如一个ejb部署在weblogic上面,在使用weblogic的ejbc进行编译的时候会生成一些中间代码,这些代码很多是继承于weblogic自己的一些基类的.在部署ejb的jndiname到jnditree上面的时候会判断引用类型是否为:ClusterableRemoteRef(由于生成的中间代码中是存在集成weblogic的基类的所以检查通过),然后部署的时候可以正常通过. 但是在检查hibernate的jndi绑定的时候检查到的是:net.sf.hibernate.impl.SessionFactoryImpl (绑定jndi name的时候一般是把sessionFactory的一个实例放进去了),然后weblogic会报告这个类并不是clusterableremoteref的子类,所以不能保证其clusterable.但是仍然是可以强制部署上去,只是应用服务器不保证其可靠性. 其实hibernate在clusterable方面还是做了一些工作的,尤其是cache部分,但是默认使用的EHCache并不是cluster safe的,不知道最近的版本是否对此有所更新. 引用 Robbin也说过,Hibernate与集群是没有关系的,如果按你说的理解的话,你所说的Hibernate应该怎么支持集群呢? 你说的例子可不可以详细一点呀? |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-02
集群是一个技术概念。Hibernate或AppServer和集群的关系为是否支持,实现。就类似于jboss实现CMP, JMX etc技术。
对集群的实现也有层次的: Web level(HTTPSession replication) Application Server level (JDNI EJB replication) Database level(such as distributed oracle or oracle with replication) Hardware level 同时可以通过DNS或配置WEB SERVER实现load balance 和 fail over。 根据实际的项目需要,决定实现那些层次的集群。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-03
问题是SessionFactoryImpl是否有必要支持集群,或者说SessionFactoryImpl是否有必要绑定到JNDI,答案是否定的,没有必要!
道理很简单,因为你会在集群的每个节点上配置一个本节点自己的SessionFactory,其他节点自己也有自己的SessionFactory。所以SessionFactory本身和集群没有什么关系,至于说到在WebLogic平台上把SessionFactory绑定到JNDI上那也不是为了集群,而只是为了便于应用程序统一访问的入口点而已。 在Hibernate中,只有两个地方和集群有关系:一个是主键生成策略,有些主键生成策略,如increment,生成id的唯一性依赖于单个JVM去访问该表,另一个是对PO使用了支持集群的Cache,此时需要注意让PO实现Serializable接口。此外,Hibernate和集群并没有什么关系。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-18
请问一下,在集群状态下,是否相当于一套程序在不同的JVM里执行?如果这个程序在JVM里面有状态怎么办?(比如程序有static变量,只能在JVM里面唯一?)Hibernate或者Spring中有了static变量,而且依赖于这些static变量,作出某些判断,这个时候,是否会出现在不同的JVM里面有不同的static变量存在,导致出错?
|
|
| 返回顶楼 | |










