锁定老帖子 主题:负载均衡引发的线程变量问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-20
公司现在打算使用两个tomcat来进行负载均衡, 调试时发现了问题. 以前没有使用负载均衡时,前台是没有显式的将用户ID传入业务层的, 而是将它设置在线程变量中. 现在使用了两个tomcat, 当一个用户线程从一个tomcat转向另一个时, 他就不能操作他的资源了, 因为线程已经不是原来的那个线程, 其中已经没有了用户ID,这相当于是没有登录的状态. 如果要将用户ID作为一个调用参数传入业务层的话, 接口改动将会很大.请问各位有什么好的办法可以解决这个问题, 或者是有其它的折衷的方法可以避免对接口的过大程度的修改? 谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-20
用户id为什么不放在session里?集群复制下session
|
|
返回顶楼 | |
发表时间:2007-07-20
让后续请求一直访问最初被负载过去的服务器就好了 最简单可以通过在request里加一个变量来实现
或者通过设置负载服务器??? 我们以前有做过类似的东西 肯定可以做的 不过不是我做的....-_- 不知道是怎么做的 |
|
返回顶楼 | |
发表时间:2007-07-20
dennis_zane 写道 用户id为什么不放在session里?集群复制下session
session对业务层是不可见的吧 |
|
返回顶楼 | |
发表时间:2007-07-20
ddandyy 写道 让后续请求一直访问最初被负载过去的服务器就好了 最简单可以通过在request里加一个变量来实现
或者通过设置负载服务器??? 我们以前有做过类似的东西 肯定可以做的 不过不是我做的....-_- 不知道是怎么做的 可"最初被负载过去的服务器"可能根本就已经down掉了... 通过设置负载服务器? 可以吗? 有没有具体的方法, 谢谢了! |
|
返回顶楼 | |
发表时间:2007-07-20
hunteagle 写道 dennis_zane 写道 用户id为什么不放在session里?集群复制下session
session对业务层是不可见的吧 是我误解了。请忽略。 |
|
返回顶楼 | |
发表时间:2007-07-20
hunteagle 写道: 以前没有使用负载均衡时,前台是没有显式的将用户ID传入业务层的, 而是将它设置在线程变量中. 现在使用了两个tomcat, 当一个用户线程从一个tomcat转向另一个时, 他就不能操作他的资源了, 因为线程已经不是原来的那个线程, 其中已经没有了用户ID,这相当于是没有登录的状态. 如果要将用户ID作为一个调用参数传入业务层的话, 接口改动将会很大.
请问各位有什么好的办法可以解决这个问题, 或者是有其它的折衷的方法可以避免对接口的过大程度的修改? 谢谢! 一次request处理跨两个tomcat?? 用户登录信息放在request、线程中?? |
|
返回顶楼 | |
发表时间:2007-07-20
down掉? 那就重新登陆好了 难道你服务器天天down么
你这个要求就高了 难道要两个服务器随时随便切换 你不要session了? 所有东西全在request里? |
|
返回顶楼 | |
发表时间:2007-07-20
ddandyy 写道 down掉? 那就重新登陆好了 难道你服务器天天down么
那倒不是, 因为最近开发新功能, 所以有时候需要重启服务器. |
|
返回顶楼 | |
发表时间:2007-07-20
要么就让用户重新登陆 要么就忍着 等到后半夜没人的时候重启
就算是开发新东西 也不用一天重启好几次吧 难道你们不做一个稍稍好些的再往上放版本么 一天放好几次? |
|
返回顶楼 | |