【SSO】单点登录系统介绍

一、前言

      对于一个开发项目来说,每个项目都必不可少要有登录的这个功能。但是随着项目的变大,变大,再变大。系统可能会被拆分成多个小系统,咱们就拿支付宝和淘宝来说,咱们在淘宝上购物,然后就可以直接连接到自己的支付宝,这个过程不需要我们再次登录系统,自动就完成了跳转。这个操作就是小编这次向大家介绍的——单点登录。

二、什么是单点登录?

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

      可以看出,咱们使用了单点登录系统,在分布式架构APP中,咱们的系统和系统之间的跳转就可以达到无缝链接了。用户体验度非常好,用户根本没有觉察出是多个系统。这个就达到了我们的目的,即提高了性能,又增加了我们系统之间跳转的灵活度。

三、从单机到集群的演变

      下面小编从一个技术小白做订餐系统,一步一步演变框架。

      首先呢,小编做了一个java Web的项目,这个项目用户进入订餐界面,选择要定的饭后,提交的时候,会判断是否登录。如果没有登录,就会跳转到用户登录界面,然后进行登录的判断;如果已经登录了,就可以直接提交信息了。

      这个小系统非常的简单,操作也很流畅。但是它由一个适应范围:非高并发使用流畅。


这里写图片描述

      当我们的这个系统有了很高的并发,就像美团外面一样,每天的用户很多。我们能做的就是把我们的APP多发布到几个tomcat上,然后通过Nginx反向代理来均分权重。

      随之而来的就是Session共享问题了。 
      用户1登录后,nginx给他分配到tomcat1上,session被存储在tomcat1上。当下次登录可能分配到tomcat2上,这样还需要重新登录。

      Session共享的问题: 
      1、tomcat做集群配置session复制。如果集群中节点很多,会形成网络风暴。推荐节点数量不要超过5个。 
      2、分布式架构。拆分成多个子系统。


这里写图片描述

      分布式架构

      独立建立一个单点登录系统,登录后,把用户信息存储到redis,把key值存储到cookie中,当其他系统需要用户信息的时候,就可以通过读取redis中的信息,如果redis中存在,就直接使用。如果不存在就跳转到单点登录系统进行登录。


这里写图片描述

四、小结

      在研究的过程中,还是比较愉快的,个人也比较享受。

      一步一步演变的系统,让系统变的更加强大,也是系统进化的表现。另外点单登录的过程还是要好好理解一下的。

      下一篇博客向大家介绍单点登录系统的实现。


感谢博主,本文转自https://blog.csdn.net/kisscatforever/article/details/76409250

猜你喜欢

转载自blog.csdn.net/albenxie/article/details/80266327