1.   Sso系统分析

1.1. 什么是sso系统

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。

用来解决分布式环境下的登陆问题,最终的目的是解决分布式环境下session共享的问题,

1.2. 为什么要有单点登录系统

  tomcat集群是多台tomcat服务器部署同一套代码,同时提供相同的服务,tomcat集群虽然可提供一定的高并发的访问,当访问量更大的时候,tomcat集群以session复制的形式是无法处理高并发的请求,此时session复制就是性能上的瓶颈,为了进一步的提高系统的并发处理能力,我们只能放弃tomcate的session复制机制,将session从系统的独立出来,形成公用的session服务器。在基于soa的架构体系中,系统被拆分成了若干只能单一的工程,来提供专一的服务,所以我们可以将用户登陆功能也从系统中拆分出来,拆分出来的登陆工程与session服务器通信,实现一次登陆处处可用的效果。登录独立的好处便是解决了session共享的问题,这样集群便可以几乎不受限制的进行扩展。

1.2.1.    传统的登录实现方式

此方式在只有一个web工程时是没有问题。

1.2.2.    集群环境下

随着用户规模的上升,但几点的tomcat无法承担负载,这时候需要搭建tomcat集群。

集群环境下会出现要求用户多次登录的情况。

集群和分布式的区别在于,集群是多台设备干同一件事情,而分布式是不同的设备干不同的事情。传统模式的工程当用户访问量大的时候就难以招架了,这时首先考虑到的是使用集群来增加网站的吞吐量,一个tomcat可以处理大约300个并发,多个tomcat就可以处理更多的并发。但是tomcat集群有一个致命的瓶颈,那就是session共享,由于不同的tomcat之间要以广播的方式来进行session共享,当tomcat数量较多时,广播便占据了绝大多数带宽,从而使真正的请求难以被处理,一般来说,tomcat集群中tomcat的个数不要超过5个。

解决方案:

1、配置tomcat集群。配置tomcat Session复制。节点数不要超过5个。

  当节点太多的时候,集群的性能反而骤降,这是由于tomcat节点两两之间进行session复制,造成了性能上的瓶颈。

2、可以使用Session服务器,保存Session信息,使每个节点是无状态。需要模拟Session,考虑到session是key-value形式的,具有有限期,这与redis特别相似,可以使用redis来模拟session。

  这里的单点登录系统是使用redis模拟Session,实现Session的统一管理,这样集群便可以几乎不受限制的进行扩展。

如何用redis模拟session

1、要模拟session首先要了解session。

  sessionid如何产生?由谁产生?保存在哪里?

  http://www.cnblogs.com/sharpxiajun/p/3395607.html

  http://lavasoft.blog.51cto.com/62575/275589/

  在计算机专业术语里:session是指一个终端用户与交互系统进行通信时间间隔,通常指从注册入系统到注销系统之间所经过的时间以及如果需要的话,可能还有一定操作空间。

2、用redis来模拟

  链接:即使是同一个用户在不同的设备中登录同一个系统,产生的session也是不同的,彼此之间互相隔离,互不干扰。这就限制了不能使用user的id作为redis中的key来模拟sessionid。

  有效期:session默认存活时间是30分钟。

最新文章

  1. one to many
  2. session失效后,登录页面嵌入iframe框架
  3. codeforces B. New Year Present 解题报告
  4. 初学Ajax(三)
  5. 编译安装lnmp
  6. 关于Java(Hello World程序)
  7. CSS3 :nth-of-type() 选择器
  8. php文件粘贴上传
  9. HDU 1852 Beijing 2008 数论
  10. Struts1的实现原理
  11. Android热修复技术选型——三大流派解析
  12. docker进阶-利用dcoker Swarm搭建简单集群
  13. 计蒜客NOIP模拟赛(2) D2T2紫色百合
  14. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用
  15. 二、网络编程-socket之TCP协议开发客户端和服务端通信
  16. 多媒体开发(7):编译Android与iOS平台的FFmpeg
  17. Nordic Collegiate Programming Contest NCPC 2017-Problem G Galactic Collegiate Programming Contest
  18. Composer的学习
  19. Linux shell 常用 加减乘除记录
  20. 教你正确进入DFU及恢复模式 无敌重刷模式

热门文章

  1. Flask第四篇——第一个程序
  2. flex 伸缩布局
  3. kubectl&docker容器命令行窗口太小
  4. 【转】Linux 静态库与共享库的使用
  5. python3之es+log+date+timezone
  6. "Could not find the main class: org.apache.catalina.startup.Boostrap. Program will exit."
  7. ubuntu :安装好了搜狗输入法但是没法用
  8. ios生成自签名证书,实现web下载安装app
  9. 用命令行cmd 编译小程序
  10. 关于FPGA电源精度要求