2006-03-30
Clustering using Tomcat
关键字: tomcat-cluster
在Without Ejb第四章中有段对EJB的分布化和可扩展性的讨论:
在人们中间有一个广为传播的信念: 分布式应用系统是高度可扩展的.这种观点认为,可以使用4个web容器, 8个ejb容器所有的业务都通过web层远程调用.这样就可以得到非常好的扩展行.
然后作者在下文中批判了这种观点.每次远程方法调用造成的性能代价太过高昂,以至于在理论上还有什么 收益的化,早也被网络传输或对象编组中的损失给大大超过了. 作者建议的是对整个应用系统进行集群式部署. 然后在运用硬件负载均衡或web容器的负载均衡来分流访问.
集群是个诱惑的名字. 今天花了一上午了解了如何在Tomcat中实现集群. 还不错, 当在Tomcat官方网站上看了集群的文章时, 感觉并不是很难, Tomcat5.X已经把集群内嵌了.
配置也瞒简单的, Tomcat是用多波包(multicast)的方式去发现其他的节点,其他节点回返回IP 和 端口, 以提供session的复制. 所以放在session里面的对象一定要实现序列化, 当在一定的时间内没有收到某个节点返回值时, 那个节点就判定死了. 还有就是要怎样实现load balancing , 你要怎样分发请求(request)到集群节点(Node)去, 这里也有许多方法, 我看的是用Servlet Filter去做这件事的(参考下面网站的例子).
集群能给我们带来很多好存, 性能的可扩展性, 可以关掉几台Node, 而系统不受影响.
今天在Javalobby看到一个关于集群的一个trick.
假如在一台node中的session中存有一个List对象.
如果你是这样使用的话,
List l = (List)session.getAttribute("list");
l.add("Denny");
这个session不会引发session复制. 所有你还需要把这个List set回session中.
If you have an ArrayList in the session representing shoppingcart objects and if you just call getAttribute() to retrieve theArrayList and then add or change something without calling thesetAttribute(……………) then the container may not know that you have addedor changed something in the ArrayList. So the session will not bereplicated.
ok 就讲这么多了.
官方指南
http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html
下面的这个不错, 带了一个例子, 自己实现了两个load balancing的算法. 用的是Filter
在人们中间有一个广为传播的信念: 分布式应用系统是高度可扩展的.这种观点认为,可以使用4个web容器, 8个ejb容器所有的业务都通过web层远程调用.这样就可以得到非常好的扩展行.
然后作者在下文中批判了这种观点.每次远程方法调用造成的性能代价太过高昂,以至于在理论上还有什么 收益的化,早也被网络传输或对象编组中的损失给大大超过了. 作者建议的是对整个应用系统进行集群式部署. 然后在运用硬件负载均衡或web容器的负载均衡来分流访问.
集群是个诱惑的名字. 今天花了一上午了解了如何在Tomcat中实现集群. 还不错, 当在Tomcat官方网站上看了集群的文章时, 感觉并不是很难, Tomcat5.X已经把集群内嵌了.
配置也瞒简单的, Tomcat是用多波包(multicast)的方式去发现其他的节点,其他节点回返回IP 和 端口, 以提供session的复制. 所以放在session里面的对象一定要实现序列化, 当在一定的时间内没有收到某个节点返回值时, 那个节点就判定死了. 还有就是要怎样实现load balancing , 你要怎样分发请求(request)到集群节点(Node)去, 这里也有许多方法, 我看的是用Servlet Filter去做这件事的(参考下面网站的例子).
集群能给我们带来很多好存, 性能的可扩展性, 可以关掉几台Node, 而系统不受影响.
今天在Javalobby看到一个关于集群的一个trick.
假如在一台node中的session中存有一个List对象.
如果你是这样使用的话,
List l = (List)session.getAttribute("list");
l.add("Denny");
这个session不会引发session复制. 所有你还需要把这个List set回session中.
If you have an ArrayList in the session representing shoppingcart objects and if you just call getAttribute() to retrieve theArrayList and then add or change something without calling thesetAttribute(……………) then the container may not know that you have addedor changed something in the ArrayList. So the session will not bereplicated.
ok 就讲这么多了.
官方指南
http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html
下面的这个不错, 带了一个例子, 自己实现了两个load balancing的算法. 用的是Filter
Clustering and Load Balancing in Tomcat 5, Part 1
http://www.onjava.com/pub/a/onjava/2004/03/31/clustering.html?page=1Clustering and Load Balancing in Tomcat 5, Part 2
http://www.onjava.com/pub/a/onjava/2004/04/14/clustering.html?page=1发表评论
- 浏览: 220284 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
我的相册
VB-seamless
共 13 张
共 13 张
最近加入圈子
最新评论
-
使用Terracotta和Tomcat建 ...
renavatior 写道"运行start.bat 9081 这样我们就启动了目 ...
-- by rainsf -
使用Terracotta和Tomcat建 ...
"运行start.bat 9081 这样我们就启动了目录9081中的tomcat ...
-- by renavatior -
广州3年多经验 5500的 ...
fucku 写道广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多, ...
-- by yongfan_420 -
广州3年多经验 5500的 ...
广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多,导致机会也没有这 ...
-- by fucku -
广州3年多经验 5500的 ...
想高工资就去厂家咯,老在集成商里面混能有多大个奔头
-- by fucku






评论排行榜