|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (8) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-01-17
web部署在单机上是很好办的,如果部署到集群上该如何做,要注意那些问题?如何保证集群切换时,web是好用的。不用每台部署一个吧?
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
如果你用websphere的话里面有专门的集群选项
主要目的是所有的应用中的session同步到每台机器上面 用apache处理请求.... |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
主要看具体是什么集群。现在有些用F5之类的负载均衡器的应用也被叫做集群,还有双机热备(部分人也把它叫集群,其实只有一台机器在工作,另一台是备份机,平时不参与业务,只有主机不能提供服务的时候,备份机采工作)。还有用一些JVM集群缓存软件构件的集群。这些集群每台机器一般都需要单独部署。因为使用F5负载均衡和双机热备的,其实是一台台单机。JVM缓存我没有用过,不太清楚。不过估计应用服务器自己并不知道还有其他机器和自己同步。
标准的JavaEE集群一般分两种,war集群及EJB集群。war因为考虑到Session复制的问题,一般不推荐做大集群。不过用来做2-3台的廉价入门集群还是可以的。 EJB集群一般在上面部署的都是EJB组件。不同厂商用不同的办法来保证有状态SessionBean的集群复制。比如Weblogic采用双机结对、Sun使用特殊的数据库同步。一般有一台专门的代理管理服务器负责对整个集群的管理,所以在这台管理器上进行部署就可以了。 应用在集群上面跑和在单机上面跑是完全不同的两个概念。很多单机上可以使用的框架和设计模式在集群环境下是绝对不能使用的。比如单例模式。集群环境下根本无法再集群中只有一个单例,每个服务器都会有自己的单例。还有就是Spring,Spring目前是不能用于标准的JavaEE集群环境下的。当然,有人推出了Spring的集群框架,不过我不太清楚是否好用。AOP配置集群的话,估计会很复杂。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
cluster中有个farm(集群中,部署到一台主机上,会自动将其他主机也部署好)的概念应该是你期望的吧,据说Tocmat将会提高支持。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
标准的JavaEE集群,一般情况下是这样的。
入口是一个负载均衡器(有时候也用apache之类的),然后是若干台web服务器(如Tomcat),再后边是EJB集群。最后是数据库。 这是JavaEE集群模型的标准构造。JavaEE集群的核心是EJB集群。但是如果应用没有达到足够大的规模,且设计不好的话,会产生很多问题。这也是当初为什么老EJB架构被人诟病的地方。 单机应用是中小型项目的主流。我们在中小型项目中一般只用到事务处理,分布式、容灾等功能一般用不上。所以Spring才会发展这么快。但是企业在发展,当初用Spring开发的程序需要跑集群了,结果发现无法在集群上使用,所以才会出现用AOP方式对Spring添加集群和JVM分布式缓存来进行集群化的方案。但即使如此,很多单机下可以使用的代码,在集群下可能是根本无法跑的。单例、静态对象等等,在集群模式下会出现各种问题。 所以,现在很多人都只用F5和Apache做分发器,后边跟一大堆互不往来的Tomcat之类的Web服务器。这么做最大的问题是无法使用缓存。因为如果使用缓存,那么其他机器更改了数据库的话,缓存无法刷新而形成脏数据。结果大大拖累了性能。 如果你的应用是中小型低负载应用,那么可以只考虑单机。如果以后要使用集群,可以先用Spring集群(好像是叫Cluster4Spring)和JVM分布式缓存。如果应用大到必须分布式的程度,那么还是更换成EJB架构吧。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
agile_boy 写道 cluster中有个farm(集群中,部署到一台主机上,会自动将其他主机也部署好)的概念应该是你期望的吧,据说Tocmat将会提高支持。 用现在用的就是tomcat,集群环境还不太清楚,应该就是双机热备吧。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
kebo 写道 都有没有实际经验啊?。没有在生产环境中实验的就不要“据说”,"据说"的.回答问题很过瘾是吧 有话好好讲吗?大家都是在讨论吗,你有实际经验可以开讲吗? |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
现在不支持clustering(到少要也load balance)的系统能上线吗?
首先系统要不要clustering/load balance(90%是要的), 开发的时候就要为这个东西考虑并设计, 然后大量的测试. |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-28
魔力猫咪 写道 标准的JavaEE集群,一般情况下是这样的。
入口是一个负载均衡器(有时候也用apache之类的),然后是若干台web服务器(如Tomcat),再后边是EJB集群。最后是数据库。 这是JavaEE集群模型的标准构造。JavaEE集群的核心是EJB集群。但是如果应用没有达到足够大的规模,且设计不好的话,会产生很多问题。这也是当初为什么老EJB架构被人诟病的地方。 单机应用是中小型项目的主流。我们在中小型项目中一般只用到事务处理,分布式、容灾等功能一般用不上。所以Spring才会发展这么快。但是企业在发展,当初用Spring开发的程序需要跑集群了,结果发现无法在集群上使用,所以才会出现用AOP方式对Spring添加集群和JVM分布式缓存来进行集群化的方案。但即使如此,很多单机下可以使用的代码,在集群下可能是根本无法跑的。单例、静态对象等等,在集群模式下会出现各种问题。 所以,现在很多人都只用F5和Apache做分发器,后边跟一大堆互不往来的Tomcat之类的Web服务器。这么做最大的问题是无法使用缓存。因为如果使用缓存,那么其他机器更改了数据库的话,缓存无法刷新而形成脏数据。结果大大拖累了性能。 如果你的应用是中小型低负载应用,那么可以只考虑单机。如果以后要使用集群,可以先用Spring集群(好像是叫Cluster4Spring)和JVM分布式缓存。如果应用大到必须分布式的程度,那么还是更换成EJB架构吧。 Spring的集群根本就是个伪问题,Spring跟集群有什么关系么? Spring只是一个普通的类库而已,跟你自己写的javabean没有本质区别 javabean,jdom需要集群么,javamail需要集群么? 无状态的服务组件根本就不需要考虑集群 |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
Spring和集群没关系吗?当然有关系。因为Spring是一个容器。普通的Bean在Spring的控制之下运行。和EJB3的Bean一样。
Spring在开发的时候不是为分布式设计的,所以它本身无法直接转向集群。单例、缓存等很多问题在单机和集群的环境下是不一样的。两台服务器,各自跑一个Spring容器,那么两者内的单例对象怎么办?单例变双例了。那么肯定会引发问题。 分布式计算虽然在系统早期不需要。但是随着系统的发展,负载在不断增加。所以就有了需要负载均衡和集群的需求。如果原来使用的是Spring开发的单机系统,那么转换成EJB的系统就有可能遇到问题。Spring虽然IOC本身不是侵入式的,但是他的很多功能是侵入式的,如果使用了,转向EJB需要重新开发。 所以就有了Cluster4Spring这些解决方案。用AOP的方式,给Spring增加集群功能。以期以最小的代价转向集群。 |
|
| 返回顶楼 | |













