WEB开发网
开发学院软件开发Java Weblogic中的load banlance问题 阅读

Weblogic中的load banlance问题

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: JMS Connection Factroy在创建JMSConnection的时候,这一层是load banlance的,Weblogic中的load banlance问题(5),即JMSConnection会连接到不同的后端managed server上,这个load banlance是基于r

JMS Connection Factroy在创建JMSConnection的时候,这一层是load banlance的,即JMSConnection会连接到不同的后端managed server上。这个load banlance是基于round_robin的。一旦connection创建完成,所有通过该JMSConnection创建的consumer, producer会stick到JMSConnection对应的managed server上,即所有的message会被dispatch到该managed server的物理Queue上(因为sub-type的jms对象不是RMI对象,他们和后端managed server的通讯是基于dispatcher的,通过invocable id来识别对象)。如果producer send了很多条message, 那么这些消息如何分发?这就是Load Balancing ,ServerAffinity要做的事儿。

Load Balancing Enabled被check的时候,消息分发是基于send()方法的,即send一条message, message都会被分发到不同的Queue上。如果Load Balancing Enabled没有被check,那么同一producer send的所有message会被分发到同一物理Queue上。而ServerAffinity则说明loadbalance Queue的范围,如果serverAffinity为true,那么说明load banlance的范围为处理send request那台managed server上的Queues,如果为false,则说明在所有的queue间作load balance。

4:EJB的load banlance

EJB的load banlance比较复杂,涉及到如下三个方面:

1:IntitialContext

关于InitialContext, 前面已经谈过,这里不再做讨论。

2:EJB Home

对于EJB Home,可以通过weblogic-ejb-jar.xml中的home-load-algorithm 配置,可选项包括:round-robin | random | weight-based | RoundRobinAffinity | RandomAffinity | WeightBasedAffinity, default依赖于weblogic.cluster.defaultLoadAlgorithm,如果没有对应的system property, 则为round-robin。

如果home-load-algorithm为round-robin,则说明客户端拿到initial context后,在做ejb home create的时候是round robin的(创建的的bean object位于不同的managed server上)。如果home-load-algorithm为 RoundRobinAffinity ,则表明home create是round robin的,但后续的home的操作则是server affinity的,比如,home位于serverA上,则该 home创建的所有bean object均位于serverA上。

其余算法基本类似,区别只是home create时候的算法不同而已。

3:   EJB Object

对于Bean的load banlance,只有stateless session支持,可以通过stateless-bean-load-algorithm配置,可选项同EJB Home。因为stateful session bean及entity bean包含状态数据,所以无法作laod banlance,否则在数据同步方面,weblogic需要付出的开销要远大于laod banlance带来的收益。

如果stateless-bean-load-algorithm为round-robin,则说明bean操作是round-robin的。如果为RoundRobinAffinity ,则business method是affinity的,即所有的method都在object对应的server上被执行。

5:JDBC

对于JDBC,如果要使用load banlance的话,我们需要配置multi pool,multi pool和jms 的distribute destination类似,是一个逻辑pool,用于管理一组物理pool(通常位于不同的managed server上)。Multi pool的算法包括: HA(用于fail over), Load banlance。前者只是在某个物理pool出现故障的时候,用于fail over,而不提供load banlance。而后者则是两种功能都提供,正常时作laod banlance,运行故障期间,fail over会起作用。

上一页  1 2 3 4 5 

Tags:Weblogic load banlance

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接