单点登录tbsession&SSO

0.前言

cookie:
网站通常将用户的信息以Key/Value的形式存储在用户的本地机器中,包括持久化(文件存储)和非持久化(内存存储,浏览器关闭即销毁)两种存储形式。
session:
http是一种无状态的协议,为了追踪客户的访问状态,需要使用session来存储用户和服务器的状态信息。
通常用户在第一次访问服务器时,服务器会为用户创建一个session,创建session的唯一标识sessionId,以后用户访问服务器时,都会带上这个sessionId,服务器以此来判断请求属于哪个session。

session存在的问题:
⦁    像淘宝这样具有上亿用户访问的系统,服务器存储用户的session信息,显然会耗费大量的内存,任何单台服务器都没有办法解决的;
⦁    当采用服务器集群部署应用时,对用户来说,服务器集群相当于同一服务器,用户的2次请求可能会被分配到2台不同服务器上处理,如何保证2次请求获取的用户session是一致的?

有很多session框架解决了这些问题,如:
⦁    webx提供的session管理功能:不同的store方式选择
⦁    alisession框架:2017年以前1688的应用使用的是alisession框架
⦁    tbsession框架:现在集团应用统一迁移到tbsession框架

1.tbsession

阿里内部小二账户使用

1.1原理

tbsession是如何解决这些问题的?
⦁    结合客户端和服务端来存储用户session信息;
⦁    客户端采用cookie存储;
⦁    服务端使用tair存储;
⦁    通过配置文件决定存储在cookie中 或 tair中(我们现在应用一般都采用tair存储);
⦁    配置文件存储在diamond-server上,实现动态更新;

tbsession的工作原理:

⦁    tbsession通过TaobaoSessionFilter对外提供服务
⦁    tbsession扩展了标准的HttpSession
⦁    tbsession依赖diamond server和tair
⦁    tbsession的类关系图:

⦁    工作流程:当一个请求到达服务端的时候,服务器会判断这个请求是否带有sessionID标识,如果没有,服务端会为该请求创建一个sessionID,如果该请求带有sessionID,则服务端会根据这个sessionID把该session取出来使用。

tbsession工作流程:
 
                                           图 tbsession的Filter工作流程图


1.2部署
 
 

分布式缓存:

⦁    采用tair存储,支持mdb和ldb两种存储
⦁    独立的多单元数据同步实现(写:先写本机房的机器【主,依据键的hash值取】,再异步写异地机房中的一台机器【备】;读:读主机,如果主机坏了再读备机,并将备机切换为主机)
⦁    容灾

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值