1.什么是SSO系统
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。
为什么要用单点登录呢?我们来看看传统的登录方式:
我们一般通过session设计登录,这种对于只有一个工程来说是没有问题的。但是对于分布式系统来说,由于牵涉到多个子系统,如果每一个系统都要输入一遍用户名,密码;这会非常麻烦。因此,单点登录应运而生。
2.集群与分布式登录方式比较
集群的登录方式如下
集群和分布式的区别在于,集群是多台设备干同一件事情,而分布式是不同的设备干不同的事情。传统模式的工程当用户访问量大的时候就难以招架了,这时首先考虑到的是使用集群来增加网站的吞吐量,一个tomcat可以处理大约300个并发,多个tomcat就可以处理更多的并发。但是tomcat集群有一个致命的瓶颈,那就是session共享,由于不同的tomcat之间要以广播的方式来进行session共享,当tomcat数量较多时,广播便占据了绝大多数带宽,从而使真正的请求难以被处理,一般来说,tomcat集群中tomcat的个数不要超过5个。
分布式环境下:
我们把登录单独拿出来,可以使用session服务器,保存session的信息。那么我们用什么模拟session呢?我们知道session是key,value的形式,同时也有自己的限制时间。我们在商品详情和首页运用中的redis缓存技术也是这种形式,因此我们可以用redis模拟session,实现session的统一管理。登录独立的好处便是解决了session共享的问题,这样集群便可以几乎不受限制的进行扩展。
3.SSO系统的实现
需要创建一个sso服务工程和表现层工程,可以参考taotao-manager创建。
工程目录如下
taotao-sso(pom聚合工程)
- taotao-sso-interface(jar)
- taotao-sso-service(war)
taotao-sso-web(war)可以参考taotao-manager-web创建
创建后的工程目录
需要配置的pom.xml,resource,web.xml可以从github中下载后赋值黏贴过去~
https://github.com/AslanYJ/shopping.git