关于Session的机制,实现方式和安全、单点故障问题

问题如下:

关于session的。 
为什么使用session?使用session的根本原因是? 
假如你使用的编程语言没有提供对session的支持,请你使用伪代码实现session机制。 
请说明在你实现的机制中的安全因素。 
假如要让你的机制实现多个web服务器前端(几多个机器),你要怎样实现?假如要让你的机制实现勿单点故障点(即一台机器当掉,不影响整个系统的运行),你要怎样实现? 

我的回复:

 

1 为什么使用session?使用session的根本原因是? 
session是为了维持客户端和服务器的会话,实际上就是通过这个机制,来判断当前访问的用户,是上次的那一个?也就是身份的辨认。 


2 session的机制和实现 
session一般通过cookie或者URL里的一个参数来实现。 
第一次访问,产生一个唯一的session编号,然后发送给客户端,比如传递cookie,或者在url里面加上额外的参数 
服务器在一个Map里保存此编号对应的信息 
用户下一次访问,会再次传递这个编号,服务器在map里查找对应编号的信息是否存在,并进行后面的操作。 

3 请说明在你实现的机制中的安全因素。 
最关键的,就是sessionid 的生成算法,要足够的随机性,且长度足够长。 除非不得已,不要放在url里面传递 

4 多个机器 
这个是集群的基础,session至少要在另一个机器上保持同步,也就是这个机器的某个session的任何改变,都要在另一个机器上同时改变。 当然,如果所有机器都改变也行,不过网络流量大了一些毕竟2个机器同时出故障的几率已经很低了。 

同步的机制可以用消息的方法进行,比如JMS/UDP等。如果同步有问题,则必须尝试,除非系统只剩下最后一台机器了。 

5 故障恢复 
因为有至少一个session的备份,所以故障后应立即让备份的机器接管,并继续服务,同时让另外一个机器再次作为备份。 

系统如果有管理机,则可以实现简单的故障切换,否则只能每个session进行整个集群的备份了,这样任何一个机器接管都没有问题了。 



session这个东西不错,其实如果真的某个session故障了,如果不是关键应用,让系统rollback 然后重新开始,也是一个很有效并且可以接受的方案。 

对不起,系统忙,请稍后重试,然后就链接到另一个机器了,继续提供服务了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值