不同 servlet 如何共享 session

不同 servlet 如何共享 session,第1张

session在一个会话中都是有效的,而在同一个会话中你可以访问多个servlet,也就是说在不同的servlet中session是相同的,是可以共享的。
共享办法:在servlet中先得到session,即 >zbmcq 2005-5-2 10:40

网段(通过路由连结)共享上网问题
跨网段(通过路由连结)共享上网问题
网段A:接交换机A,再接路由器A
网段IP:10371090,2552552550
路由器:1037109254
网段B:接交换机B,再接路由器B
网段IP:10371050,2552552550
路由器:1037105254
两段通过光纤相连,分别设置网关为路由器网关后,A与B内的
微机互通。
现在我有一台微机有2块网卡。
一网卡接internat已能上网;
别一块设IP地址:1037109117,接入交换机A
现在我想B网段的一台机器如:1037105158,能通过A网段的
1037109117共享上网。
我搞了好久不成功,请各位高手赐教。万分感谢。
有一点,我不太想改动路由器A与B的路由。
真想在客户机上改一下就能实现。
到底能不能实现呀!
[size=18][/size]
apen 2005-5-2 11:55

跨网段(通过路由连结)共享上网问题
如果不改路由,基本没戏,外网的数据包进入A网段后,将不能通过路由器发送到B网段,同样B网段发向外网的的数据包,如果不改路由的话,它是不知道发向哪台设备的。你这样做,有可能在A网段上网都是不可能的,因为A网段的网关是指向A路由器,而不是指向代理服务器。
zbmcq 2005-5-2 12:57

跨网段(通过路由连结)共享上网问题
[color=red]非常感觉楼上回复指点。[/color]
我现在能控制的只能是A网段的路由。差不多能改。
但怎么改,加什么语句我不知道。
在A网段内我能通过代理上网,设两个网关:1037109254,1037109117即可。效果还可以。
但就是B网段的1037105158不能上外网。B网设1037109117作网关后
只能我内网。我们A、B、C等网段内有好多内部WEB服务器。
实际上A与B在设各自的网关1037254后都能互相Ping通。网上邻居也能找到。
xliu 2005-5-3 09:05

跨网段(通过路由连结)共享上网问题
你有路由器,怎么不用路由器做接入,比PC要稳定的多啊,有路由器做接入,对你的内网数据包,就是加个路由的问题了。你可以找点相关的资料看看。
xliu 2005-5-3 09:07

跨网段(通过路由连结)共享上网问题
再有就是,B网的数据保能走到那里,可以贴一点你的路由信息上来看看。
zbmcq 2005-5-3 09:27

跨网段(通过路由连结)共享上网问题
[color=darkred]十分感谢Help you as help myself! 回复[/color]
我是有A段的路由器。为Cisco2600系列路由器。
这个路由器和其它单位的B段、C段、等好多路由器相连
我能控制的只有A段路由器。B段不好控制。
这些路由器之间都用光纤远程相连。A段和B段目前只要设1037254为网
关就能互相Ping通。并能上内部的网页。以及传输文件、电子邮件等。
你的意思是我直接把internat接入我的A段路由器吗?具体怎么搞我不明白。
请你指点。万分感谢!
xliu 2005-5-3 10:04

跨网段(通过路由连结)共享上网问题
指点不敢当,大家互相学习。
在你两个网络A和B互通之后,如果你是用路由器接入,你只要加静态路由,ip route 0000 0 0000 xxxx,xxxx是你的路由器前的地址,如果是拨号,可以是虚拟的拨号端口,如果电信有给你网关地址,就是他们给的地址,你把你现在的接入方式和你的路由器的硬件信息说清楚我给你看看。现在嘛只是这个思路,你可以考虑一下,自己先找点资料看看。
apen 2005-5-3 12:43

跨网段(通过路由连结)共享上网问题
如果是这样的话,你的B网段路由器要有一条路由表,目的地址:0000,掩码:0000,下一跳地址为A网段路由器与B网段路由器相联的接口地址,这样一来,所有B网段向外发出的包都发送到A路由器,在A路由器上,除你自己的网络路由外,你要增加一条路由表,将不是发向你自己内部网络的数据(发向Internet的数据)全部发送到你的代理服务器上,在你的代理上要做以下设置,增加一条路由表:目标地址为B网段,掩码为B网段掩码,下一跳地址为A网段路由器局域口地址。基本的要求是:网络设备(路由器、代理服务器)必须要能保证数据的双向传输都是可以正常路由的。
zbmcq 2005-5-3 15:54

跨网段(通过路由连结)共享上网问题
请看附图。
zbmcq 2005-5-3 16:00

跨网段(通过路由连结)共享上网问题
图没发上吗,我再试一下
zbmcq 2005-5-3 16:17

跨网段(通过路由连结)共享上网问题
[size=18][color=red]刚才我的附图大小超标,这回应该行了[/color][/size]。
zbmcq 2005-5-4 12:14

跨网段(通过路由连结)共享上网问题
图已在上面发了。
目前A网段的客户机只要加上1037109254和1037109117两个网关,即能上内网,又能上外网。但B网段的客户机加1037105254或1037109117,或两个都加上,均是只能上内网,不能上外网。
xiaoman 2005-5-4 15:38

跨网段(通过路由连结)共享上网问题
你用的win NAT 那么你的客户机的DNS要设置为你的代理服务器的IP,如果这样还不行,你把那台机器给砸了换台新的呵呵
zbmcq 2005-5-5 02:18

跨网段(通过路由连结)共享上网问题
DNS我已加为服务器的地址,要不A段的也上不了外网。可就是B段的不行。
B段的这台客户机不是我的,要不我也早砸了。呵呵,愁人呀。
xliu 2005-5-5 09:00

跨网段(通过路由连结)共享上网问题
有几个问题不明白:
1 目前的网络结构下(A B两个网络可以互相通信),B的数据可以到达1037109117吗
2 A B两个路由器的路由是怎么设置的
最关键的是要知道B的数据可以走到哪里,这个你要确定,只有这样才能找出问题的关键,才好处理,你觉得呢
zbmcq 2005-5-5 15:08

跨网段(通过路由连结)共享上网问题
真有点不好意思,我对路由的设置也不是很清楚。
但有一点可以肯定,A网段内的机器只要设置1037109254为网关,在这个大的局域内,就能与其它不同段内微机通信,当然其它段内的微机也要设置1037254(如1037105254)。我说也就是各段不管是A、B、C、D
实际上有很多段,只要设1037254为网关,各段就能互相通信。通信的内容包括:互相Ping通,网上邻居能找到,在内网上的WEB服务器都能上网,如输入:103710918,103710518,103732108,1037118都能看到内部的网站网页内容。
便这也只是内部的网站,但对外的,B段的客户机就是看不到。即使设了1037109117为网关,和DNS
说来说去,是不是,B段的路由器必须加一条路由才能达到目的?
我原先是想仅在B段内的客户机作些改动。不改B路由器的设置。
或者A路由器改设置,因为A路由器我能控制。B路由器不在我掌握之内。可就是B段内的那台微机要通过我A段内的代理服务器上网,你说这不是难为我吗?
到底怎么能行,不管什么方法,还请各位高手指点。
zbmcq 2005-5-10 08:24

跨网段(通过路由连结)共享上网问题
XLIU你好!
B段的客户机只要设置1037105254为网关,代理服务器1037109117设1037109254为网关,这两台机器就能屏
通,互相传数据。
A和B的路由表我确实不是很清楚。
但1037109117不能设网关,因为它做代理用,一设1037109254
后,内网的其它机器就不能通过它上外网了。
paulwang 2005-5-11 00:38

跨网段(通过路由连结)共享上网问题
你这中做发以后要吃苦头的。 前面的兄弟说的对,不推荐用PC做网络边界设备。你可以用你A段的2600的router啊。 如果网络接口不够,再配个好了。
后者你线买个防火墙做你的边界设备。
xliu 2005-5-11 01:04

跨网段(通过路由连结)共享上网问题
如你所说,的确要在B路由器上加一条路由,这样应该就可以了,不需要再作别的设置了。
lrx 2005-5-11 03:46

跨网段(通过路由连结)共享上网问题
zbmcg, 你能在B段客户机执行
tracert >如果是WINXP就点文件夹右键属性,然后选择共享,再把它移到共享文件夹就行了!如果是WIN2000就点右键属性,选共享,直接选共享此文件夹就行了
连起两台机子·!
设置两台机子的IP随便设置就可以·!但是一定要接近·!
例如:172163359和17263358
网关什么的默认就行了·!
然后开始>>程序>>附件>>通讯>>新建连接向导>>下一步>>设置家庭活小型办公网络>>完成>>下一步>>下一步>>其他>>选没有连接网络的选项>>设置想要的名字>>共享打印机>>另一台机子也同样的设置~!

Session共享有多种解决方法,常用的有四种:客户端Cookie保存、服务器间Session同步、使用集群管理Session、把Session持久化到数据库。


1客户端Cookie保存
以cookie加密的方式保存在客户端,每次session信息被写在客户端,然后经浏览器再次提交到服务器,即使两次请求在集群中的两台服务器上完成,也可以到达session共享。


优点是减轻服务器端的压力;


缺点是受到cookie的大小限制,可能占用一定带宽,因为每次请求会在头部附带一定大小的cookie信息,另外这种方式在用户禁止使用cookie的情况下无效。


传统网站一般通过将一部分数据存储在cookie中,来规避分布式环境下session的 *** 作。这样做的弊端很多,一方面cookie的安全性一直广为垢病,另一方面cookie存储数据的大小是有限制的。随着移动互联网的发展,很多情况下还得兼顾移动端的session需求,使得采用cookie来进行session同步的方式的弊端更为凸显,分布式session正是在这种情况下应运而生的。


2服务器间Session同步
定时同步各个服务器的session信息,此方法可能有一定延时,用户体验也不是很好。


使用主-从服务器的架构,当用户在主服务器上登录后,通过脚本或者守护进程的方式,将session信息传递到各个从服务器中,也可以手工把session文件存放的目录改为nfs网络文件系统,从而实现文件的跨机器共享(使用nfs或windows文件共享都可以,或者专用的共享存储设备)。


这样,用户访问其它的从服务器时,就可以读到session信息。


缺点:比如速度慢、不稳定等,另外,如果session信息传递是主->从单向的,会有一些风险,比如主服务器down了,其它服务器无法获得session信息。


3把Session持久化到数据库
这种共享session的方式即将session信息存入数据库中,其它应用可以从数据库中查出session信息。目前采用这种方案时所使用的数据库一般为mysql。


利用数据库共享session的方案有一定的实用性,但也有如下缺点:
首先session的并发读写在数据库中完成,对mysql的性能要求比较高;
其次,我们需要额外地实现session淘汰逻辑代码,即定时从数据库表中更新和删除session信息,增加了工作量。
对于系统可靠性要求较高的用户,可以将session持久化到DB中,这样可以保证宕机时会话不易丢失,但缺点也是显而易见的,系统的整体吞吐将受到很大的影响。


4使用集群管理Session
将session统一存储在缓存集群上,如memcache,这样可以保证较高的读、写性能,这一点对于并发量大的系统来说非常重要;并且从安全性考虑,session毕竟是有有效期的,使用缓存存储,也便于利用缓存的失效机制。


使用缓存的缺点是,一旦缓存重启,里面保存的会话也就丢失了,需要用户重新建立会话,可以使用缓存集群来保证缓存的稳定性。


如图(基于缓存的分布式session架构)所示,前端用户请求经过随机分发之后,可能会命中后端任意的Web Server,将session以sessionid作为key,保存到后端的缓存集群中,使得不管请求如何分配,即便是某个Web Server宕机,也不会影响其他Web Server获得 session,这样既实现了集群间的session同步,又提高了 Web Server的容错性。


Tomcat作为Web Server时,可以通过一个简单的工具memcached-session- manager9(一个Tomcat session共享解决方案), 实现基于memcache的分布式session。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10514880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存