一种分布式会话管理方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机网络技术领域,尤其涉及一种分布式会话管理方法及系统。
【背景技术】
[0002]在计算机专业术语中,会话(sess1n)是指一个终端用户与交互系统进行通信期间的状态信息通常指从注册进入系统到注销退出系统之间的状态信息。同时由于网页是一种无状态的连接程序,应用服务器需要通过sess1n得知用户的浏览状态,所以一些用户相关的信息也是保存到sess1n当中的。
[0003]当今社会的信息产业飞速发展,许多企业级应用都面临着大量的并发访问,同时也需要更强的稳定性,一台应用服务器已经不能满足应用的需要,而需要增加更多的服务器。这时就需要部署使用两台以上的应用服务器,作为一个集群对外提供服务。使用应用服务器集群,则一般都会用到负载均衡,而且很多企业会把负载均衡的配置设定为非亲和模式,即sess1n非粘滞(Non_sticky Sess1n)模式,这种模式的作用是能够把请求均勻的分散到应用服务器集群的每个节点上。
[0004]在Java EE应用服务器集群中,sess1n的管理会比较复杂,因为要保证集群中某一个节点失效后,其sess1n数据能由其他节点获取以便其他节点接替失效节点,实现集群的容错。过去的技术有的是使用内存复制机制,这种方式在用户数量和集群数量达到一定规模后,服务器性能就会大幅下降,不可取。还有一种方式是采用sess1n共享机制,SP把sess1n数据同步备份到缓存服务器,以提高sess1n的可用性,但是现有技术无论是开源还是非开源的实现方式都无法保证非亲和模式下的数据一致性。尤其是当用户终端同时向两个Java EE应用服务器发起对同一 sess1n的请求时,sess1n数据就会出现不一致。
【发明内容】
[0005]本发明所要解决的技术问题是如何在非亲和的模式下保证用户会话数据一致性,并且提高会话数据可用性。
[0006]为解决上述技术问题,本发明提出了一种分布式会话管理方法,包括以下步骤:
[0007]判断终端访问请求的当前会话数据是否需要备份;
[0008]如果需要备份,则向会话备份服务器集群内与所述终端对应的会话备份服务器请求分布式锁;
[0009]获取分布式锁以后,使用所述当前会话数据更新所述会话备份服务器存储的所述终端的会话数据;
[0010]将更新后的会话数据备份到会话备份服务器集群中的其他会话备份服务器。
[0011]此外,本发明提出了另一种分布式会话管理方法,包括以下步骤:
[0012]接收终端访问请求;
[0013]向会话备份服务器集群内与所述终端对应的会话备份服务器请求分布式锁;
[0014]当完成本次会话请求时,判断终端访问请求的当前会话数据是否需要备份;
[0015]如需要备份,则使用所述当前会话数据更新所述会话备份服务器存储的所述终端的会话数据;
[0016]将更新后的会话数据备份到会话备份服务器集群中的其他会话备份服务器。
[0017]进一步,所述判断终端访问请求的当前会话数据是否需要备份,具体包括:
[0018]判断所述当前会话数据是否是新产生的会话数据:
[0019]如果是,则所述访问请求的当前会话数据需要备份;如果不是,则进一步判断所述访问请求的当前会话数据与在先访问请求的会话数据是否不同,如果不同则所述访问请求的当前会话数据需要备份;
[0020]当终端访问请求为注销会话请求时,则所述请求的当前会话数据需要备份;
[0021]当在先访问请求的会话数据过期时,则所述访问请求的当前会话数据需要备份。
[0022]进一步,其特征在于,所述向会话备份服务器集群内与所述终端对应的会话备份服务器请求分布式锁,具体包括:
[0023]在所述会话备份服务器集群内查找与所述终端对应的会话备份服务器;
[0024]向所述会话备份服务器发送分布式锁请求消息。
[0025]进一步,所述使用所述当前会话数据更新所述会话备份服务器存储的所述终端的会话数据,具体包括:
[0026]获取所述会话备份服务器中存储的所述终端在先访问请求的会话数据;
[0027]比较所述当前会话数据与所述在先访问请求的会话数据的一致性;
[0028]若一致,则将所述当前会话数据写入会话备份服务器;
[0029]若不一致,则合并所述当前会话数据和所述在先访问请求的会话数据,将合并后的会话数据写入会话备份服务器。
[0030]进一步,在所述获取所述会话备份服务器中存储的所述终端在先访问请求的会话数据之后,还包括:
[0031]对所述在先访问请求的会话数据进行反序列化解压。
[0032]进一步,在将所述当前访问请求的会话数据写入会话备份服务器之前,还包括:
[0033]对所述当前访问请求的会话数据进行序列化压缩。
[0034]此外,本发明还提供了一种分布式会话管理系统,包括:判断模块、请求模块、更新模块和备份模块;
[0035]判断模块,用于判断终端访问请求的当前会话数据是否需要备份;
[0036]请求模块,用于当所述判断模块的判断结果为需要备份时,向会话备份服务器集群内与所述终端对应的会话备份服务器请求分布式锁;
[0037]更新模块,用于获取到分布式锁以后,使用所述当前会话数据更新所述会话备份服务器存储的所述终端的会话数据;
[0038]备份模块,用于将更新后的会话数据备份到会话备份服务器集群中的其他会话备份服务器。
[0039]进一步,所述判断模块包括:第一判断子模块、第二判断子模块和第三判断子模块,
[0040]第一判断子模块,用于判断终端访问请求的当前会话数据是否为新产生的会话数据,如果是,则所述访问请求的当前会话数据需要备份;如果不是,则进一步判断所述访问请求的当前会话数据与在先访问请求的会话数据是否不同,如果不同,则所述访问请求的当前会话数据需要备份。
[0041]第二判断子模块,用于判断终端访问请求是否为注销会话请求,当终端访问请求为注销会话请求时,所述访问请求的当前会话数据需要备份;
[0042]第三判断子模块,用于判断所述在先访问请求的会话数据是否过期,当所述在先访问请求的会话数据过期时,所述访问请求的当前会话数据需要备份。
[0043]进一步,所述更新模块包括:获取子模块、比较子模块、第一写入子模块和第二写入子模块,
[0044]获取子模块,用于获取所述会话备份服务器中存储的所述终端在先访问请求的会话数据;还用于根据分布式锁响应消息,获取分布式锁;
[0045]比较子模块,用于比较所述当前会话数据与所述在先访问请求的会话数据的一致性;
[0046]第一写入子模块,用于当所述比较子模块的比较结果一致时,将本次访问请求的会话数据写入会话备份服务器;
[0047]第二写入子模块,用于当所述比较子模块的比较结果不一致时,合并所述当前会话数据和所述在先访问请求的会话数据,将合并后的会话数据写入会话备份服务器。
[0048]通过采用本发明所公开的一种分布式会话管理方法及系统,使得应用服务器在非亲和的模式下既能保证会话数据一致性,又能提高会话数据可用性。
【附图说明】
[0049]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050]图1:是本发明实施例一中一种分布式会话管理方法的流程图;
[0051]图2:是本发明实施例二中一种分布式会话管理方法的流程图;
[0052]图3:是本发明实施例三中一种分布式会话管理系统的模块图。
【具体实施方式】
[0053]下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0054]本发明中,当用户终端发起访问请求时,应用服务器内的会话内存管理程序读取预设配置项,配置项内容为单项选择使用悲观锁会话管理方法或者乐观锁会话管理方法。
[0055]本发明实施例一中提出了一种分布式会话管理方法,如图1所示,包括以下步骤:
[0056]步骤