CN107992340B - 用于分布式集群系统的系统退出方法及分布式集群系统 - Google Patents
用于分布式集群系统的系统退出方法及分布式集群系统 Download PDFInfo
- Publication number
- CN107992340B CN107992340B CN201711135654.5A CN201711135654A CN107992340B CN 107992340 B CN107992340 B CN 107992340B CN 201711135654 A CN201711135654 A CN 201711135654A CN 107992340 B CN107992340 B CN 107992340B
- Authority
- CN
- China
- Prior art keywords
- sessionid
- session
- subsystem
- main system
- distributed cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种用于分布式集群系统的系统退出方法,包括以下步骤:实时检测退出主系统的退出操作;当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID;根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。与现有技术相比,本发明实现了在退出主系统时,同时删除主系统以及各个子系统的session,保证了分布式集群系统的安全。本发明还公开了一种分布式集群系统。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种用于分布式集群系统的系统退出方法及分布式集群系统。
背景技术
通常情况下,Tomcat、Jetty等Servlet容器,会默认将Session保存在内存中。如果是单个服务器实例的应用,将Session保存在服务器内存中是一个非常好的方案。但是这种方案有一个缺点,就是不利于扩展。而随着系统功能越来越多,为了保证服务器性能,通常会对系统进行拆分,此时为了保证用户的使用体验及高可用性,拆分后的子系统采用分布式部署,并且在多个系统间做单点登入,即用户只需要登入一次就可以访问相互信任的各个子系统。
当将同一个应用部署在多个服务器上通过负载均衡对外提供访问时,需要实现Session共享,目前实现Session共享的方案很多,其中一种方案是使用Tomcat、Jetty等服务器提供的Session共享功能,将Session的内容统一存储在一个数据库(如MySQL)或缓存(如Redis)中;另一种方案是通过spring-session和redis实现Session共享,其直接在已有项目基础上加入Spring Session框架来实现Session统一存储在Redis中。其中,通过spring-session和redis实现Session共享时,在退出系统时,无法同时清除各个子系统的session,将会存在系统安全隐患。
因此,有必要提供一种用于分布式集群系统的系统退出方法及分布式集群系统来解决上述技术问题。
发明内容
本发明的主要目的在于提出一种用于分布式集群系统的系统退出方法,旨在解决现有的分布式集群系统下在退出系统时无法同时清除各个子系统的session,导致存在系统安全隐患的问题。
首先,为实现上述目的,本发明还提供一种分布式集群系统,所述分布式集群系统包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的用于分布式集群系统的系统退出程序,所述用于分布式集群系统的系统退出程序被所述处理器执行时实现如下步骤:
实时检测退出主系统的退出操作;
当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID;
根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。
可选地,所述根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID的步骤之前,所述处理器还用于执行所述用于分布式集群系统的系统退出程序,以实现如下步骤:
由主系统切换至子系统时,所述主系统向所述子系统发送携带有会话令牌的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID;
所述子系统接收所述会话请求并根据所述用户身份标识对所述主系统进行身份验证;
当身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID;
建立所述主系统的sessionID与所述子系统的sessionID的映射关系。
可选地,所述建立所述主系统的sessionID与所述子系统的sessionID的映射关系的步骤之后,所述处理器还用于执行所述用于分布式集群系统的系统退出程序,以实现如下步骤:
将所述主系统的sessionID与所述子系统的sessionID映射关系存储于redis数据库中,其中所述主系统的sessionID作为key值,各所述子系统的sessionID作为value值。
可选地,各所述子系统采用单点登入验证对所述主系统进行身份验证。
同时,本发明还提供一种用于分布式集群系统的系统退出方法,所述分布式集群系统包括主系统和多个子系统,所述方法包括以下步骤:
实时检测退出主系统的退出操作;
当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID;
根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。
可选地,所述根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID的步骤之前还包括:
由主系统切换至子系统时,所述主系统向所述子系统发送携带有会话令牌的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID;
所述子系统接收所述会话请求并根据所述用户身份标识对所述主系统进行身份验证;
当身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID,并建立所述主系统的sessionID与所述子系统的sessionID的映射关系。
可选地,所述建立所述主系统的sessionID与所述子系统的sessionID的映射关系的步骤之后还包括:
将所述主系统的sessionID与所述子系统的sessionID映射关系存储于redis数据库中,其中所述主系统的sessionID作为key值,各所述子系统的sessionID作为value值。
可选地,各所述子系统采用单点登入验证对所述主系统进行身份验证。
可选地,所述子系统通过filter进行所述单点登入验证。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有用于分布式集群系统的系统退出程序,所述用于分布式集群系统的系统退出程序被处理器执行时实现如上述用于分布式集群系统的系统退出方法的步骤。
相较于现有技术,本发明所提出的用于分布式集群系统的系统退出方法、分布式集群系统及计算机可读存储介质,在检测到退出主系统的退出操作时,会获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID,之后根据所述主系统的sessionID和所述子系统的sessionID删除对应的session,从而实现了在退出主系统时,同时删除主系统以及各个子系统的session,保证了分布式集群系统的安全。
附图说明
图1为本发明用于分布式集群系统的系统退出程序第一实施例的功能模块示意图;
图2为本发明用于分布式集群系统的系统退出程序第二实施例的功能模块示意图;
图3为本发明用于分布式集群系统的系统退出方法第一实施例的实施流程示意图;
图4为本发明用于分布式集群系统的系统退出方法第二实施例的实施流程示意图;
图5为本发明分布式集群系统一实施例的示意图;
图6为访问图5所示分布式集群系统时生成的映射关系一实施例的示意图。
附图标记:
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展,为了提高大型网站的高可用架构,人们提出了一种分布式集群系统。对于分布式集群系统,需要实现Session共享,目前实现Session共享的方案很多,其中一种方案是使用Tomcat、Jetty等服务器提供的Session共享功能,将Session的内容统一存储在一个数据库(如MySQL)或缓存(如Redis)中;另一种方案是通过spring-session和redis实现Session共享,其直接在已有项目基础上加入Spring Session框架来实现Session统一存储在Redis中。
基于上述分布式集群系统,提出本发明方法各个实施例。
首先,本发明提出一种分布式集群系统,所述分布式集群系统从功能角度上来说,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的用于分布式集群系统的系统退出程序100。
如图1所示,是本发明用于分布式集群系统的系统退出程序100第一实施例的功能模块示意图。在本实施例中,所述用于分布式集群系统的系统退出程序100可以被分割成一个或多个模块,所述一个或多个模块存储于存储器中,并由一个或多个处理器所执行,以完成本发明。例如,在图1中,所述用于分布式集群系统的系统退出程序100可以被分割成退出操作检测模块101、sessionID获取模块102以及删除模块103。本发明所称的模块是指一种能够完成特定功能的一系列获取机程序指令段,比获取机程序更适合于描述软件在所述分布式集群系统中的执行过程。以下将就上述各功能模块101-103的具体功能进行详细描述。其中:
所述退出操作检测模块101,用于实时检测退出主系统的退出操作。本发明中,分布式集群系统采用单点登入(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一,SSO的定义是在多个应用系统中,用户只需要登入一次就可以访问所有相互信任的应用系统。本发明中多个子系统即为相互信任的多个应用系统。通常,在用户登入主系统后,由主系统切换到各个子系统时,会在子系统生成对应的session,但由于各个子系统使用的域名不同,因此生成的sessionID也不相同,这就导致退出主系统时,无法将各个子系统的session同时清除,通过本发明即可解决该问题。
所述sessionID获取模块102,当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID。具体的,用户登入主系统时,会生成一个session,且主系统会为该session随机分配一个唯一的sessionID来标识该session,其中tomcat生成的sessionID叫做jsessionID,而本发明中主系统、子系统所采用的服务器均为Tomcat服务器,因此其生成的sessionID具体为jsessionID。之后,用户由主系统切换至任一子系统时,子系统上也会生成一个session,并对应分配一个sessionID,本实施例中,在由主系统切换至子系统后,会将主系统的sessionID和子系统的sessionID进行关联,得到一个映射关系并存储,之后在退出主系统时,可以根据主系统的sessionID从映射关系中查找得到与之相关联的子系统的sessionID,进而在退出主系统时可以同时删除主系统的session和子系统的session。具体的,用户登入主系统后,由主系统切换至子系统并生成所述映射关系的过程包括以下步骤:(1)所述主系统向所述子系统发送携带有会话令牌(token)的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID,本实施例中由主系统切换至子系统时使用token验证,因此会话请求中会包含有会话令牌(token),该会话令牌(token)中包括有用户身份标识,同时为了建立所述映射关系,该会话令牌(token)中还包括有登入主系统的session的sessionID,后续称为主系统的sessionID;(2)所述子系统接收所述会话请求并根据所述用户身份标识对所述主系统进行身份验证;(3)当身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID,并建立所述主系统的sessionID与所述子系统的sessionID的映射关系,即当子系统验证通过时,子系统会建立本次会话请求的session,并为该session分别一个sessionID,后续记为子系统的sessionID,同时会对主系统的sessionID与所述子系统的sessionID建立映射关系并存储,以便于退出主系统时调用。
所述删除模块103,用于根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。具体的,根据得到的主系统的sessionID和子系统的sessionID,可以查找到用户访问过程中主系统生成的session和各个子系统生成的session,并将其进行删除,从而实现了退出主系统时同时删除各个子系统的session。
通过上述模块101至103,本发明用于分布式集群系统的系统退出程序在检测到退出主系统的退出操作时,会获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID,之后根据所述主系统的sessionID和所述子系统的sessionID删除对应的session,从而实现了在退出主系统时,同时删除主系统以及各个子系统的session,保证了分布式集群系统的安全。
进一步地,基于上述本发明用于分布式集群系统的系统退出程序100的第一实施例,提出本发明用于分布式集群系统的系统退出程序100的第二实施例。请参考图2,图2为本发明用于分布式集群系统的系统退出程序100第二实施例的功能模块示意图,与第一实施例相比,本实施例中,用于分布式集群系统的系统退出程序100还包括请求发送模块104、身份验证模块105、映射关系生成模块106以及存储模块106。本实施例中,各功能模块的说明如下:
所述请求发送模块104,用于在由主系统切换至子系统时,所述主系统向所述子系统发送携带有会话令牌的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID。本实施例中,各子系统采用单点登入验证方式,即用户只需要访问任一个子系统即可实现访问所有相互信任的子系统。此时,主系统切换至任一子系统时,实现过程举例说明如下:请参考图5,图5为本发明分布式集群系统一实施例的示意图,如图5所示,本发明分布式集群系统包括主系统X和子系统Y1、Y2、Y3、Y4,则当用户由主系统X切换至任一子系统(如子系统Y2)时,会向子系统Y2发送会话请求,该会话请求中携带有会话令牌,而会话令牌中包括用户身份标识和用户登入主系统X生成的session(即主系统X的session)的sessionID。
所述身份验证模块105,用于在所述子系统接收所述会话请求后根据所述用户身份标识对所述主系统进行身份验证。本实施例中,子系统使用过滤器(filter)进行单点登入验证,而单点登入验证的具体实现过程为已经成熟的技术,因此此处不再对其原理进行详细描述。
所述映射关系生成模块106,用于在身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID,并建立所述主系统的sessionID与所述子系统的sessionID的映射关系。
所述存储模块107,用于将所述主系统的sessionID与所述子系统的sessionID映射关系存储于redis数据库中,其中所述主系统的sessionID作为key值,各所述子系统的sessionID作为value值。其中,redis是是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型),这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。基于redis数据库的以上优点,本发明使用redis数据库进行数据存储。请参考图6,图6为访问图5所示分布式集群系统时生成的映射关系一实施例的示意图,如图6所示,假设用户在登入主系统X后、在退出主系统X前,分别切换到了子系统Y1、Y2、Y3、Y4进行访问,则此时生成的映射关系以Key-Value结构存储,其中key值为主系统X的sessionID,记为主sessionID,Value值包括子系统Y1、Y2、Y3、Y4的sessionID,分别记为第一子sessionID,第二子sessionID、第三子sessionID、第四子sessionID,根据该映射关系,当知道主系统X的sessionID时可以查找到与之关联存储的子系统Y1、Y2、Y3、Y4的sessionID。
通过上述模块101至107,本发明用于分布式集群系统的系统退出程序在由主系统切换至子系统时会生成主系统的sessionID与子系统的sessionID的映射关系,从而在退出主系统时可以根据访问过程中生成的映射关系查找与主系统的sessionID相关联的子系统的sessionID,并根据主系统的sessionID和所述子系统的sessionID删除对应的session,实现了同时删除所有系统的session,提高了分布式集群系统的安全性;且本实施例中各主系统之间采用单点登入验证,避免了访问大型系统时每个子系统都需要进行身份验证的问题。
此外,本发明提出一种用于分布式集群系统的系统退出方法,其中分布式集群系统包括主系统和多个子系统,该分布式集群系统是通过spring-session和redis实现Session共享的,其直接在已有项目基础上加入spring-session框架来实现Session统一存储在Redis中。其中spring-session是spring旗下的一个项目,其把servlet容器实现的httpSession替换为spring-session,专注于解决session管理问题。Spring-session存储在redis数据库中的session信息使用的key值为:spring:session:sessions:{$SESSIONID},SESSIONID为客户端与服务端交互所用的识别ID,可存储在cookic或header中。
如图3所示,是本发明用于分布式集群系统的系统退出方法第一实施例的实施流程图。在本实施例中,根据不同的需求,图3所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。所述用于分布式集群系统的系统退出方法包括:
步骤S301,实时检测退出主系统的退出操作。
本发明中,分布式集群系统采用单点登入(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一,SSO的定义是在多个应用系统中,用户只需要登入一次就可以访问所有相互信任的应用系统。本发明中多个子系统即为相互信任的多个应用系统。通常,在用户登入主系统后,由主系统切换到各个子系统时,会在子系统生成对应的session,但由于各个子系统使用的域名不同,因此生成的sessionID也不相同,这就导致退出主系统时,无法将各个子系统的session同时清除,通过本发明即可解决该问题。
步骤S302,当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID。
具体的,用户登入主系统时,会生成一个session,且主系统会为该session随机分配一个唯一的sessionID来标识该session,其中tomcat生成的sessionID叫做jsessionID,而本发明中主系统、子系统所采用的服务器均为Tomcat服务器,因此其生成的sessionID具体为jsessionID。之后,用户由主系统切换至任一子系统时,子系统上也会生成一个session,并对应分配一个sessionID,本实施例中,在由主系统切换至子系统后,会将主系统的sessionID和子系统的sessionID进行关联,得到一个映射关系并存储,之后在退出主系统时,可以根据主系统的sessionID从映射关系中查找得到与之相关联的子系统的sessionID,进而在退出主系统时可以同时删除主系统的session和子系统的session。
具体的,用户登入主系统后,由主系统切换至子系统并生成所述映射关系的过程包括以下步骤:(1)所述主系统向所述子系统发送携带有会话令牌(token)的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID,本实施例中由主系统切换至子系统时使用token验证,因此会话请求中会包含有会话令牌(token),该会话令牌(token)中包括有用户身份标识,同时为了建立所述映射关系,该会话令牌(token)中还包括有登入主系统的session的sessionID,后续称为主系统的sessionID;(2)所述子系统接收所述会话请求并根据所述用户身份标识对所述主系统进行身份验证;(3)当身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID,并建立所述主系统的sessionID与所述子系统的sessionID的映射关系,即当子系统验证通过时,子系统会建立本次会话请求的session,并为该session分别一个sessionID,后续记为子系统的sessionID,同时会对主系统的sessionID与所述子系统的sessionID建立映射关系并存储,以便于退出主系统时调用。
步骤S303,根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。
具体的,根据得到的主系统的sessionID和子系统的sessionID,可以查找到用户访问过程中主系统生成的session和各个子系统生成的session,并将其进行删除,从而实现了退出主系统时同时删除各个子系统的session。
通过上述步骤S301-S303,本发明用于分布式集群系统的系统退出方法在检测到退出主系统的退出操作时,会获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID,之后根据所述主系统的sessionID和所述子系统的sessionID删除对应的session,从而实现了在退出主系统时,同时删除主系统以及各个子系统的session,保证了分布式集群系统的安全。
进一步地,基于上述第一实施例,提出本发明用于分布式集群系统的系统退出方法的第二实施例。如图4所示,是本发明用于分布式集群系统的系统退出方法第二实施例的实施流程图。在本实施例中,根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。所述用于分布式集群系统的系统退出方法包括:
步骤S401,用户登入主系统时,所述主系统生成相应的session和sessionID。具体的,用户登入主系统时,会生成一个session,且主系统会为该session随机分配一个唯一的sessionID来标识该session,其中tomcat生成的sessionID叫做jsessionID,而本发明中主系统、子系统所采用的服务器均为Tomcat服务器,因此其生成的sessionID具体为jsessionID。
步骤S402,由主系统切换至子系统时,所述主系统向所述子系统发送携带有会话令牌的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID。
本实施例中,各子系统采用单点登入验证方式,即用户只需要访问任一个子系统即可实现访问所有相互信任的子系统。此时,主系统切换至任一子系统时,实现过程举例说明如下:请参考图5,图5为本发明分布式集群系统一实施例的示意图,如图5所示,本发明分布式集群系统包括主系统X和子系统Y1、Y2、Y3、Y4,则当用户由主系统X切换至任一子系统(如子系统Y2)时,会向子系统Y2发送会话请求,该会话请求中携带有会话令牌(token),而会话令牌中包括用户身份标识和用户登入主系统X生成的session(即主系统X的session)的sessionID。
步骤S403,所述子系统接收所述会话请求并根据所述用户身份标识对所述主系统进行身份验证。
本实施例中,子系统使用过滤器(filter)进行单点登入验证,而单点登入验证的具体实现过程为已经成熟的技术,因此此处不再对其原理进行详细描述。
步骤S404,当身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID,并建立所述主系统的sessionID与所述子系统的sessionID的映射关系。
步骤S405,将所述主系统的sessionID与所述子系统的sessionID映射关系存储于redis数据库中,其中所述主系统的sessionID作为key值,各所述子系统的sessionID作为value值。
其中,redis是是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型),这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。基于redis数据库的以上优点,本发明使用redis数据库进行数据存储。请参考图6,图6为访问图5所示分布式集群系统时生成的映射关系一实施例的示意图,如图6所示,假设用户在登入主系统X后、在退出主系统X前,分别切换到了子系统Y1、Y2、Y3、Y4进行访问,则此时生成的映射关系以Key-Value结构存储,其中key值为主系统X的sessionID,记为主sessionID,Value值包括子系统Y1、Y2、Y3、Y4的sessionID,分别记为第一子sessionID,第二子sessionID、第三子sessionID、第四子sessionID,根据该映射关系,当知道主系统X的sessionID时可以查找到与之关联存储的子系统Y1、Y2、Y3、Y4的sessionID。
步骤S406,实时检测退出主系统的退出操作。
步骤S407,当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID。继续以图5和图6所示实施例为例,则当退出主系统X时,可以根据主系统的sessionID从映射关系中查找到与之关联的子系统Y1、Y2、Y3、Y4的sessionID。
步骤S408,根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。
通过上述步骤S401至S408,本发明用于分布式集群系统的系统退出方法在由主系统切换至子系统时会生成主系统的sessionID与子系统的sessionID的映射关系,从而在退出主系统时可以根据访问过程中生成的映射关系查找与主系统的sessionID相关联的子系统的sessionID,并根据主系统的sessionID和所述子系统的sessionID删除对应的session,实现了同时删除所有系统的session,提高了分布式集群系统的安全性;且本实施例中各主系统之间采用单点登入验证,避免了访问大型系统时每个子系统都需要进行身份验证的问题。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有用于分布式集群系统的系统退出程序,所述用于分布式集群系统的系统退出程序被处理器执行时实现图3至图4所述的用于分布式集群系统的系统退出方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种分布式集群系统,其特征在于,所述分布式集群系统包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的用于分布式集群系统的系统退出程序,所述用于分布式集群系统的系统退出程序被所述处理器执行时实现如下步骤:
实时检测退出主系统的退出操作;
当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID;
根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。
2.如权利要求1所述的分布式集群系统,其特征在于,所述根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID的步骤之前,所述处理器还用于执行所述用于分布式集群系统的系统退出程序,以实现如下步骤:
由主系统切换至子系统时,所述主系统向所述子系统发送携带有会话令牌的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID;
所述子系统接收所述会话请求并根据所述用户身份标识对所述主系统进行身份验证;
当身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID;
建立所述主系统的sessionID与所述子系统的sessionID的映射关系。
3.如权利要求2所述的分布式集群系统,其特征在于,所述建立所述主系统的sessionID与所述子系统的sessionID的映射关系的步骤之后,所述处理器还用于执行所述用于分布式集群系统的系统退出程序,以实现如下步骤:
将所述主系统的sessionID与所述子系统的sessionID映射关系存储于redis数据库中,其中所述主系统的sessionID作为key值,各所述子系统的sessionID作为value值。
4.如权利要求2所述的分布式集群系统,其特征在于,各所述子系统采用单点登入验证对所述主系统进行身份验证。
5.一种用于分布式集群系统的系统退出方法,所述分布式集群系统包括主系统和多个子系统,其特征在于,所述方法包括以下步骤:
实时检测退出主系统的退出操作;
当检测到所述退出主系统的退出操作时,获取所述主系统的sessionID,并根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID;
根据所述主系统的sessionID和所述子系统的sessionID删除对应的session。
6.如权利要求5所述的用于分布式集群系统的系统退出方法,其特征在于,所述根据所述主系统的sessionID从存储的映射关系中查找与所述主系统的sessionID关联的子系统的sessionID的步骤之前还包括:
由主系统切换至子系统时,所述主系统向所述子系统发送携带有会话令牌的会话请求,其中所述会话令牌中包括用户身份标识和登入所述主系统的sessionID;
所述子系统接收所述会话请求并根据所述用户身份标识对所述主系统进行身份验证;
当身份验证通过时,在所述子系统生成与所述会话请求对应的session和sessionID,并建立所述主系统的sessionID与所述子系统的sessionID的映射关系。
7.如权利要求6所述的用于分布式集群系统的系统退出方法,其特征在于,所述建立所述主系统的sessionID与所述子系统的sessionID的映射关系的步骤之后还包括:
将所述主系统的sessionID与所述子系统的sessionID映射关系存储于redis数据库中,其中所述主系统的sessionID作为key值,各所述子系统的sessionID作为value值。
8.如权利要求6所述的用于分布式集群系统的系统退出方法,其特征在于,各所述子系统采用单点登入验证对所述主系统进行身份验证。
9.如权利要求8所述的用于分布式集群系统的系统退出方法,其特征在于,所述子系统通过filter进行所述单点登入验证。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分布式集群系统的系统退出程序,所述分布式集群系统的系统退出程序被执行时实现如权利要求5至9任一项所述的分布式集群系统的系统退出方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711135654.5A CN107992340B (zh) | 2017-11-16 | 2017-11-16 | 用于分布式集群系统的系统退出方法及分布式集群系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711135654.5A CN107992340B (zh) | 2017-11-16 | 2017-11-16 | 用于分布式集群系统的系统退出方法及分布式集群系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107992340A CN107992340A (zh) | 2018-05-04 |
CN107992340B true CN107992340B (zh) | 2020-09-01 |
Family
ID=62030387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711135654.5A Active CN107992340B (zh) | 2017-11-16 | 2017-11-16 | 用于分布式集群系统的系统退出方法及分布式集群系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107992340B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109587251A (zh) * | 2018-12-07 | 2019-04-05 | 用友网络科技股份有限公司 | 会话访问方法以及服务器 |
CN109547481A (zh) * | 2018-12-28 | 2019-03-29 | 深圳竹云科技有限公司 | 一种基于Redis有序集合和令牌方式的网站用户会话管理方法 |
CN110336820B (zh) * | 2019-07-09 | 2022-08-05 | 中国联合网络通信集团有限公司 | 单点登出方法、装置、设备、存储介质及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020029269A1 (en) * | 2000-06-29 | 2002-03-07 | Campus Pipeline, Inc. | Methods and systems for coordinating the termination of sessions on one or more systems |
CN102857484B (zh) * | 2011-07-01 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种实现单点登录的方法、系统及装置 |
CN105072123B (zh) * | 2015-08-21 | 2018-06-19 | 广州博鳌纵横网络科技有限公司 | 一种集群环境下的单点登陆退出方法及系统 |
CN106603567B (zh) * | 2016-12-30 | 2019-09-06 | 杭州迪普科技股份有限公司 | 一种web管理员的登录管理方法及装置 |
-
2017
- 2017-11-16 CN CN201711135654.5A patent/CN107992340B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107992340A (zh) | 2018-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144651B2 (en) | Secure cloud-based storage of data shared across file system objects and clients | |
CN107277049B (zh) | 一种应用系统的访问方法及装置 | |
CN106021256B (zh) | 使用基于云的对象存储的消除重复分布式文件系统 | |
US10609035B2 (en) | Access guards for multi-tenant logging | |
CN109684285B (zh) | 一种用户态网络文件系统文件锁方法、装置及设备 | |
CN112261172B (zh) | 服务寻址访问方法、装置、系统、设备及介质 | |
CN107948203A (zh) | 一种容器登录方法、应用服务器、系统及存储介质 | |
US8590030B1 (en) | Credential seed provisioning system | |
US8645550B2 (en) | Database virtualization | |
CN107992340B (zh) | 用于分布式集群系统的系统退出方法及分布式集群系统 | |
US9253011B2 (en) | Session-server affinity for clients that lack session identifiers | |
US20190251094A1 (en) | Techniques for interruption-free partitioning | |
US20170103219A1 (en) | Restricting network spidering | |
US20140101719A1 (en) | Systems and methods for providing a network storage system | |
CN110708309A (zh) | 反爬虫系统及方法 | |
CN112804222B (zh) | 基于云部署的数据传输方法、装置、设备及存储介质 | |
CN103957252A (zh) | 云储存系统的日志获取方法及其系统 | |
CN111666509A (zh) | 基于跨网络地理数据的云查询方法及系统 | |
WO2016201780A1 (zh) | 网关管理方法及装置 | |
CN109302446B (zh) | 跨平台访问方法、装置、电子设备及存储介质 | |
CN109525649B (zh) | 一种zookeeper客户端的数据处理方法及装置 | |
CN114595457A (zh) | 任务处理方法、装置、计算机设备和存储介质 | |
CN109960682B (zh) | 快照点数据访问方法、装置、服务器及存储介质 | |
CN117240533A (zh) | 一种基于企业服务网关的统一认证鉴权方法及装置 | |
WO2015108537A1 (en) | Identity information including a schemaless portion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200806 Address after: Room 1008, comprehensive south building, room 9, No. 1699, Zuchongzhi South Road, Yushan Town, Kunshan City, Suzhou City, Jiangsu Province Applicant after: HAOHUO (KUNSHAN) NETWORK TECHNOLOGY Co.,Ltd. Address before: 518057 Guangdong Province, Shenzhen high tech Zone of Nanshan District City, No. 9018 North Central Avenue's innovation building A, 6-8 layer, 10-11 layer, B layer, C District 6-10 District 6 floor Applicant before: NUBIA TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |