论坛首页 Java企业应用论坛

负载均衡引发的线程变量问题

浏览 6254 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-20  

公司现在打算使用两个tomcat来进行负载均衡, 调试时发现了问题.

以前没有使用负载均衡时,前台是没有显式的将用户ID传入业务层的, 而是将它设置在线程变量中. 现在使用了两个tomcat, 当一个用户线程从一个tomcat转向另一个时, 他就不能操作他的资源了, 因为线程已经不是原来的那个线程, 其中已经没有了用户ID,这相当于是没有登录的状态. 如果要将用户ID作为一个调用参数传入业务层的话, 接口改动将会很大.
请问各位有什么好的办法可以解决这个问题, 或者是有其它的折衷的方法可以避免对接口的过大程度的修改?
谢谢!
   发表时间:2007-07-20  
用户id为什么不放在session里?集群复制下session
0 请登录后投票
   发表时间:2007-07-20  
让后续请求一直访问最初被负载过去的服务器就好了   最简单可以通过在request里加一个变量来实现

或者通过设置负载服务器???   我们以前有做过类似的东西  肯定可以做的  不过不是我做的....-_-  不知道是怎么做的
0 请登录后投票
   发表时间:2007-07-20  
dennis_zane 写道
用户id为什么不放在session里?集群复制下session

session对业务层是不可见的吧
0 请登录后投票
   发表时间:2007-07-20  
ddandyy 写道
让后续请求一直访问最初被负载过去的服务器就好了   最简单可以通过在request里加一个变量来实现

或者通过设置负载服务器???   我们以前有做过类似的东西  肯定可以做的  不过不是我做的....-_-  不知道是怎么做的


可"最初被负载过去的服务器"可能根本就已经down掉了...
通过设置负载服务器? 可以吗? 有没有具体的方法, 谢谢了!
0 请登录后投票
   发表时间:2007-07-20  
hunteagle 写道
dennis_zane 写道
用户id为什么不放在session里?集群复制下session

session对业务层是不可见的吧

是我误解了。请忽略。
0 请登录后投票
   发表时间:2007-07-20  

hunteagle 写道:
以前没有使用负载均衡时,前台是没有显式的将用户ID传入业务层的, 而是将它设置在线程变量中. 现在使用了两个tomcat, 当一个用户线程从一个tomcat转向另一个时, 他就不能操作他的资源了, 因为线程已经不是原来的那个线程, 其中已经没有了用户ID,这相当于是没有登录的状态. 如果要将用户ID作为一个调用参数传入业务层的话, 接口改动将会很大.
请问各位有什么好的办法可以解决这个问题, 或者是有其它的折衷的方法可以避免对接口的过大程度的修改?
谢谢!




一次request处理跨两个tomcat?? 用户登录信息放在request、线程中??
0 请登录后投票
   发表时间:2007-07-20  
down掉?  那就重新登陆好了   难道你服务器天天down么

你这个要求就高了  难道要两个服务器随时随便切换   你不要session了? 所有东西全在request里?
0 请登录后投票
   发表时间:2007-07-20  
ddandyy 写道
down掉?  那就重新登陆好了   难道你服务器天天down么

那倒不是, 因为最近开发新功能, 所以有时候需要重启服务器.
0 请登录后投票
   发表时间:2007-07-20  
要么就让用户重新登陆   要么就忍着  等到后半夜没人的时候重启

就算是开发新东西  也不用一天重启好几次吧  难道你们不做一个稍稍好些的再往上放版本么  一天放好几次?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics