tomcat集群实现(一)

                  本贴子只针对tomcat6做集群实现方法

如何实现tomcat集群呢,我们会想到几个问题?

1.我的应用程序如何实现?

2.我的应用会话怎么实现一个会话对应一台机器?

3.tomcat如何配置多台机器?以及如何容错?还有负载均衡(这个另一贴子详解:httpd和nginx)?

在挖掘tomcat的集群实现的详细信息之前,先介绍下用于描述集群的一些专业术语,具体如下:

管理器(Manager)

      Web应用程序会话管理器。在分发Web应用程序的时候,会话管理器实现必须是复制的会话管理器,因此tomcat实现了两个管理器:DelatManager(增量管理器)和BackupManager(备份管理器)。

分组(Group)

     Tomcat节点的逻辑分组,分组的每个成员都以特殊的方式参与集群。例如,一个分组可以是www.example.com主机的Root Web应用程序的会话复制分组,而另一个分组可以复制www.test.com主机的Root Web应用程序的会话。尽管这两个分组复制不同的内容,但相同的Tomcat节点都可以参与到这两个逻辑分组中。

成员(Member)

     Tomcat集群的参与节点。任何Tomcat节点都可以是0个或多个分组的成员。

信道(Channel)

     分组通信架构软件,包括实现发送与接收各种类型的分组信息,而且它散发集群成员参与或离开事件。所有集群通信都要通过这一Channel对象执行。

发送器(Sender)

     这是一个Channel对象,从被修改数据的Tomcat节点上发送数据到复制该数据的节点。

接收器(Receiver)

     它与发送器相对应。接收由Sender发送的所有复制数据,并把这些数据转交给适当的消费者。把Receiver当作一种附加的网络服务器软件组件,运行在Tomcat相同的JVM上,从而接收所有数据。这取决于用于Receiver(在Server.xml中可以进行配置)的实现类,Receiver可以实现线程池,以获得更好性能与灵活性。

拦截器(Interceptor)

     软件组件。拦截Channel与IO层的通信消息。Interceptor可以以任何方式作用于开发者编程的数据,包括修改数据与发送通过、删除数据、发送附加数据、存储数据等。

传输(Transpot)

     可插入的通信软件实现,经专用网络协议发送和接收集群消息。Tomcat6包括传输的两种实现方法:非模块化Java实现(缩写“NIO”实现,nonblocking Java)和模块化Java IO(缩写为“BIO”,blocking Java)。

心跳(Heartbeat)

     如果使用默认的多播节点发现(multicast node discovery)和分组通知(group notification)实现,则每个节点都会每半分钟给所有他正在监听的节点发送“心跳”消息(跳动频率可设)。正在监听的其它节点经多播将接收heartbeat消息,而且能因这些消息发现其它节点的存在。每个节点都一直跟踪它收到消息的其它节点。如果不再接收到节点的心跳消息,则认为该节点是非工作性的,并将其从集群参与成员中删除,直到重新发现为止。心跳消息可以包含数据,并用于把小的消息携带到集群的其它节点上。

猜你喜欢

转载自washingtin.iteye.com/blog/2333981