本发明涉及session会话管理技术领域,尤其涉及一种基于国产数据库的session管理中间件、系统及运行方法。
背景技术:
当前,web服务技术不断完善,web服务器集群的架构成为企业级web服务的主流选择。web服务器集群主要采用负载均衡的方式分发连接到服务器的请求,分散每台web服务器的响应压力,能提升请求的响应速度,降低web服务不可用的风险。
在web服务器集群广泛应用的同时,为了保证session会话的共享存储,目前存在web服务器集群中基于数据库进行session管理的方法,但是现有的方法是通过修改web框架的配置项对接数据库,但是现有的web框架只能配置mysql数据库、memcached数据及redis数据库,缺少对国产数据库的支持,不能对接国产数据库,导致web服务器集群对接国产数据库时只能采用session复制的方式在web服务器集群中共享session会话,而web服务器集群中频繁的session复制同步会导致web服务器集群性能低、延时高、用户体验差。
技术实现要素:
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种基于国产数据库的session管理中间件、系统及运行方法,能够对国产数据库的操作进行支持,满足session会话国产数据库持久化存储的要求。
为解决上述技术问题,本发明提出的技术方案为:
一种基于国产数据库的session管理中间件,包括依次连接的session核心模块、session引擎模块和session数据库适配模块,其中:
所述session核心模块用于管理http请求和http响应中的session会话信息;
所述session引擎模块用于使用session数据库适配模块对国产化数据库服务器进行session会话信息操作;
所述session数据库适配模块用于向session引擎模块提供国产数据库服务器的管理功能,所述session数据库适配模块包括:
国产数据库初始化单元,用于使用国产数据库提供的连接参数连接国产数据库服务器创建一个国产数据库连接池;
国产数据库重连单元,用于创建国产数据库连接池时连接国产数据库服务器失败后重连国产数据库服务器,如果失败次数达到阈值则直接向session引擎模块报告初始化失败的错误信息;
国产数据库连接请求处理单元,用于在国产数据库连接池创建成功后接收session引擎模块申请的国产数据库连接请求,从国产数据库连接池中获取一个空闲连接并分配给该国产数据库连接请求,如果没有空闲连接,则进行等待直到有空闲连接;
国产数据库执行单元,用于获取session引擎模块发送的session会话操作指令,根据session会话操作指令的类型对国产数据库执行相应的session会话信息操作;
国产数据库结果获取单元,用于向session引擎模块提供执行结果。
进一步的,所述session会话信息包括session唯一标识码、session信息数据和过期时间。
进一步的,所述管理http请求和http响应中的session会话信息具体包括:如果http请求是首次与web服务器集群建立连接,调用session引擎模块为其分配session唯一标识码、session信息数据和过期时间,并通过session引擎模块使用session数据库适配模块将session唯一标识码、session信息数据和过期时间持久化存储到国产数据库服务器中;如果http请求非首次与web服务器集群建立连接,通过session引擎模块使用session数据库适配模块读取国产数据库中持久化的session唯一标识码、session信息数据和过期时间信息;当处理http响应时,若http响应中的session会话信息与http请求存在差异时,调用session引擎模块使用session数据库适配模块将新的session会话信息持久化存储到国产数据库服务器中。
进一步的,所述session会话信息操作包括从国产化数据库服务器读取session会话信息、判断session会话信息是否存在于国产数据库服务器中、创建session会话信息到国产化数据库服务器、返回session会话信息、持久化session会话信息到国产数据库服务器、删除国产化数据库服务器中session会话信息。
本发明还提出一种web服务器集群系统,包括依次连接的终端、负载均衡服务器、web服务器集群和国产数据库服务器,其中:
所述的负载均衡服务器用于分发http请求到web服务器集群,负载均衡服务器与web服务器集群共享同一个虚拟地址,负载均衡服务器通过配置各台web服务器的权重来维护管理http请求分发策略;
所述的web服务器集群至少包含一台web服务器,web服务器集群用于处理http请求并返回http响应,web服务器集群中部署有与web服务器一一对应的session管理中间件,所述session管理中间件为上述的基于国产数据库的session管理中间件;
所述的国产数据库服务器用于为web服务器集群和session管理中间件提供数据管理服务,持久化存储session会话信息以及web服务器的配置数据。
本发明还提出上述web服务器集群系统的运行方法,包括以下步骤:
s1)用户通过终端的浏览器向web服务器集群发起http请求;
s2)负载均衡服务器根据配置的权重向web服务器集群中的web服务器分发http请求;
s3)web服务器对应的session管理中间件的session核心模块收到http请求后,判断该http请求中是否携带session会话信息的session唯一标识码,否则执行步骤s4);是则执行步骤s5);
s4)session管理中间件的session核心模块生成长度为32位的随机字符串作为session的唯一标识码,同时初始化一个空字典作为session会话信息的session信息数据载体,并且根据配置的过期时间设置此次session会话信息的过期时间,然后分别设置此次session会话的访问标志位、修改标志位和空session标志位,通过session引擎模块使用session数据库适配模块将session会话信息持久化存储到国产数据库服务器中,跳转步骤s6);
s5)session管理中间件的session核心模块调用session引擎模块根据session唯一标识码读取国产数据库中对应的session会话信息;
s6)session管理中间件将session会话信息填充到http协议报文中,然后交给对应的web服务进行处理;
s7)web服务处理session会话信息时同步设置session会话信息的访问标志位、修改标志位以及空session标志位,然后发送http响应到对应的session管理中间件;
s8)session管理中间件收到web服务返回的http响应,session核心模块读取session会话信息的访问标志位、修改标志位以及空session标志位,若空session标志位为“真”则进入步骤s9);若空session标志位为“假”但http响应的状态码为服务器内部错误,也进入步骤s9);若http响应的状态码正常且修改标志位为“是”,session核心模块调用session引擎模块根据session唯一标识码更新国产数据库中对应的session会话信息中的session信息数据,同时更新session会话信息中的过期时间,最终将session会话信息的修改持久化存储到国产数据库服务器中,最后更新http协议报文中的session会话信息;
s9)session管理中间件将http响应返回到终端的浏览器。
进一步的,步骤s5)具体包括:session引擎模块使用session数据库适配模块将session唯一标识码作为读取条件从国产数据库中读取出session唯一标识码对应的session会话信息中的session信息数据以及过期时间信息,若过期时间小于当前时间,session引擎模块使用session数据库适配模块清空当前session信息数据内容,并重新设置此次session会话的访问标志位、修改标志位和空session标志位,最终清空国产数据库中session唯一标示码对应的session会话信息。
与现有技术相比,本发明的优点在于:
本发明提供一种基于国产数据库的session管理中间件,session管理中间件增加session数据库适配模块,能够对国产数据库的操作进行支持,在现有的web框架中通过配置修改的方式调用此session管理中间件,从而达到对国产数据库的支持,因此可以实现session会话国产数据库持久化存储的要求。
附图说明
图1为本发明实施例的session管理中间件结构方框图。
图2为本发明实施例的session管理中间件在web服务器集群系统的部署示意图。
图3为本发明实施例的web服务器集群系统内部模块工作流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本发明提出一种基于国产数据库的session管理中间件,包括依次连接的session核心模块、session引擎模块和session数据库适配模块,其中:
所述session核心模块用于管理http请求和http响应中的session会话信息,如果http请求是首次与web服务器集群建立连接,调用session引擎模块为其分配session会话信息,并通过session引擎模块使用session数据库适配模块将session会话信息持久化存储到国产数据库服务器中;如果http请求非首次与web服务器集群建立连接,通过session引擎模块使用session数据库适配模块读取国产数据库中持久化的session会话信息;当处理http响应时,若http响应中的session会话信息与http请求存在差异时,调用session引擎模块使用session数据库适配模块将新的session会话信息持久化存储到国产数据库服务器中;
所述session引擎模块用于使用session数据库适配模块对国产化数据库服务器进行session会话信息操作;session引擎模块定义了管理国产化数据库服务器的session会话信息操作的集合,session会话信息操作包括从国产化数据库服务器读取session会话信息、判断session会话信息是否存在于国产数据库服务器中、创建session会话信息到国产化数据库服务器、返回session会话信息、持久化session会话信息到国产数据库服务器、删除国产化数据库服务器中session会话信息;
所述session数据库适配模块用于向session引擎模块提供国产数据库服务器的管理功能,所述session数据库适配模块包括:
国产数据库初始化单元,用于使用国产数据库提供的连接参数连接国产数据库服务器创建一个国产数据库连接池;
国产数据库重连单元,用于创建国产数据库连接池时连接国产数据库服务器失败后重连国产数据库服务器,如果失败次数达到阈值则直接向session引擎模块报告初始化失败的错误信息;
国产数据库连接请求处理单元,用于在国产数据库连接池创建成功后接收session引擎模块申请的国产数据库连接请求,从国产数据库连接池中获取一个空闲连接并分配给该国产数据库连接请求,如果没有空闲连接,则进行等待直到有空闲连接;
国产数据库执行单元,用于获取session引擎模块发送的session会话操作指令,根据session会话操作指令的类型对国产数据库执行相应的session会话信息操作;
国产数据库结果获取单元,用于向session引擎模块提供执行结果。
本实施例中的session数据库适配模块通过各单元的组合作用向session引擎模块提供国产数据库服务器的管理功能。session引擎模块通过使用国产数据库初始化单元和国产数据库连接请求处理单元创建与国产数据库服务器的连接,session引擎模块与国产数据库连接后,再使用国产数据库执行单元可以对国产数据库服务器进行创建、修改和删除session会话信息,本实施例中的session会话信息包含session唯一标识码、session信息数据和过期时间,session引擎模块最后通过国产数据库结果获取单元获取国产数据库执行的结果;在修改和删除session会话信息时都是通过session唯一标识码为唯一查找目标在国产数据库中查找session会话信息,以下是session引擎模块使用session数据库适配模块对国产化数据库服务器进行session会话信息操作的具体过程:
session引擎模块首先需要使用国产数据库初始化单元利用国产数据库提供的连接参数创建一个国产数据库连接池,该国产数据库连接池会保存一定数量的国产数据库连接;如果在创建连接池时连接国产数据库服务器失败,session引擎模块将使用国产数据库重连单元尝试重连国产数据库服务器,如果失败次数达到阈值则国产数据库重连单元直接向session引擎模块报告初始化失败的错误信息。session引擎模块成功使用国产数据库初始化单元后,即可向国产数据库连接请求处理单元申请获取一个国产数据库连接。国产数据库连接请求处理单元检测到session引擎模块的国产数据库连接请求时,将从国产数据库连接池中获取一个空闲连接,如果没有空闲连接,则进行等待,直到有空闲连接,如果有空闲连接,则给该国产数据库连接请求分配一个国产数据库连接。session引擎模块获取到国产数据库连接后可以向国产数据库执行单元发送session会话操作指令来使用国产数据库执行单元进行国产数据库操作,国产数据库执行单元通过所获取的session会话操作指令类型对国产数据库执行相应的session会话信息操作,国产数据库执行单元认可的session会话操作指令包括国产数据库插入操作,国产数据库删除操作,国产数据库提交操作,国产数据库回滚操作,国产数据库查询操作。最终session引擎模块通过国产数据库结果获取单元获取操作执行结果。
通过上述结构,本实施例的session管理中间件基于国产数据库增加session数据库适配模块,能够对国产数据库的操作进行支持,因此可以实现session会话国产数据库持久化存储的要求。
如图2所示,本实施例还提出一种web服务器集群系统,包括依次连接的终端、负载均衡服务器、web服务器集群和国产数据库服务器,其中:
所述的负载均衡服务器用于分发http请求到web服务器集群,负载均衡服务器与web服务器集群共享同一个虚拟地址,负载均衡服务器通过配置各台web服务器的权重来维护管理http请求分发策略;
所述的web服务器集群至少包含一台web服务器,web服务器集群用于处理http请求并返回http响应,web服务器集群中部署有与web服务器一一对应的session管理中间件,所述session管理中间件为上述的基于国产数据库的session管理中间件;
所述的国产数据库服务器用于为web服务器集群和session管理中间件提供数据管理服务,持久化存储session会话信息以及web服务器的配置数据。
本实施例中的国产数据库服务器为达梦数据库服务器,web服务器集群包括两台web服务器,web服务器通过以太网络分别与负载均衡服务器和达梦数据库服务器连接,session管理中间件是web服务用来处理请求和响应的钩子框架,能够全局性的控制web服务的请求和响应。终端的浏览器发出的http请求经由session管理中间件处理后将继续被web服务处理,经由web服务处理返回的http响应也将会被session管理中间件处理,最终返回到终端的浏览器。
如图3所示,上述web服务器集群系统的运行方法包括以下步骤:
s1)用户通过终端的浏览器向web服务器集群发起http请求;
s2)负载均衡服务器根据配置的权重向web服务器集群中的web服务器分发http请求,图3中,负载均衡服务器根据配置的权重向web服务器1或者web服务器2分发http请求;
s3)web服务器对应的session管理中间件的session核心模块收到http请求后,判断该http请求中是否携带session会话信息的session唯一标识码,否则执行步骤s4);是则执行步骤s5);图3中,web服务器1或者web服务器2对应的session管理中间件的session核心模块首先收到http请求,然后按照前述内容进行是否携带session唯一标识码的判断;
s4)session管理中间件的session核心模块生成长度为32位的随机字符串作为session的唯一标识码,同时初始化一个空字典作为session会话信息的session信息数据载体,并且根据配置的过期时间设置此次session会话信息的过期时间为(当前时间 设置的过期时间),然后分别设置此次session会话的访问标志位为“否”,修改标志位为“否”,空session标志位为“真”,通过session引擎模块使用session数据库适配模块将session会话信息持久化存储到国产数据库服务器中,跳转步骤s6);
s5)session管理中间件的session核心模块调用session引擎模块根据session唯一标识码读取国产数据库中对应的session会话信息,具体包括:session引擎模块使用session数据库适配模块将session唯一标识码作为读取条件从国产数据库中读取出session唯一标识码对应的session会话信息中的session信息数据以及过期时间信息,若过期时间小于当前时间,session引擎模块使用session数据库适配模块清空当前session信息数据内容,并重新设置此次session会话的访问标志位为“是”,修改标志位为“是”,空session标志位为“真”,最终清空国产数据库中session唯一标示码对应的session会话信息;
s6)session管理中间件将session会话信息填充到http协议报文中,然后交给对应的web服务进行处理;本实施例中web服务器1或者web服务器2对应的session管理中间件根据前述步骤生成或在国产数据库中找到对应的session会话信息后,将会话信息填充到http协议报文中并交给web服务器1或者web服务器2对应的web服务进行处理;
s7)web服务能够根据http请求中携带的session会话信息获取用户信息,并校验用户权限;另外,web服务能够根据需要更新或者删除session会话信息,同时web服务在进行session会话信息处理时会同步设置session会话信息的访问标志位、修改标志位以及空session标志位,然后发送http响应到对应的session管理中间件;
s8)session管理中间件收到web服务返回的http响应,session核心模块读取session会话信息的访问标志位、修改标志位以及空session标志位,若空session标志位为“真”则进入步骤s9);若空session标志位为“假”但http响应的状态码为服务器内部错误,也进入步骤s9);若http响应的状态码正常且修改标志位为“是”,session核心模块调用session引擎模块根据session唯一标识码更新国产数据库中对应的session会话信息中的session信息数据,同时更新session会话信息中的过期时间,最终将session会话信息的修改持久化存储到国产数据库服务器中,最后更新http协议报文中的session会话信息;
s9)session管理中间件将http响应返回到终端的浏览器。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
1.一种基于国产数据库的session管理中间件,其特征在于,包括依次连接的session核心模块、session引擎模块和session数据库适配模块,其中:
所述session核心模块用于管理http请求和http响应中的session会话信息,如果http请求是首次与web服务器集群建立连接,调用session引擎模块为其分配session会话信息,并通过session引擎模块使用session数据库适配模块将session会话信息持久化存储到国产数据库服务器中;如果http请求非首次与web服务器集群建立连接,通过session引擎模块使用session数据库适配模块读取国产数据库中持久化的session会话信息;当处理http响应时,若http响应中的session会话信息与http请求存在差异时,调用session引擎模块使用session数据库适配模块将新的session会话信息持久化存储到国产数据库服务器中;
所述session引擎模块用于使用session数据库适配模块对国产化数据库服务器进行session会话信息操作;
所述session数据库适配模块用于向session引擎模块提供国产数据库服务器的管理功能,所述session数据库适配模块包括:
国产数据库初始化单元,用于使用国产数据库提供的连接参数连接国产数据库服务器创建一个国产数据库连接池;
国产数据库重连单元,用于创建国产数据库连接池时连接国产数据库服务器失败后重连国产数据库服务器,如果失败次数达到阈值则直接向session引擎模块报告初始化失败的错误信息;
国产数据库连接请求处理单元,用于在国产数据库连接池创建成功后接收session引擎模块申请的国产数据库连接请求,从国产数据库连接池中获取一个空闲连接并分配给该国产数据库连接请求,如果没有空闲连接,则进行等待直到有空闲连接;
国产数据库执行单元,用于获取session引擎模块发送的session会话操作指令,根据session会话操作指令的类型对国产数据库执行相应的session会话信息操作;
国产数据库结果获取单元,用于向session引擎模块提供执行结果。
2.根据权利要求1所述的基于国产数据库的session管理中间件,其特征在于,所述session会话信息包括session唯一标识码、session信息数据和过期时间。
3.根据权利要求1所述的基于国产数据库的session管理中间件,其特征在于,所述session会话信息操作包括从国产化数据库服务器读取session会话信息、判断session会话信息是否存在于国产数据库服务器中、创建session会话信息到国产化数据库服务器、返回session会话信息、持久化session会话信息到国产数据库服务器、删除国产化数据库服务器中session会话信息。
4.一种web服务器集群系统,其特征在于,包括依次连接的终端、负载均衡服务器、web服务器集群和国产数据库服务器,其中:
所述的负载均衡服务器用于分发http请求到web服务器集群,负载均衡服务器与web服务器集群共享同一个虚拟地址,负载均衡服务器通过配置各台web服务器的权重来维护管理http请求分发策略;
所述的web服务器集群至少包含一台web服务器,web服务器集群用于处理http请求并返回http响应,web服务器集群中部署有与web服务器一一对应的session管理中间件,所述session管理中间件为权利要求1~3任一所述的基于国产数据库的session管理中间件;
所述的国产数据库服务器用于为web服务器集群和session管理中间件提供数据管理服务,持久化存储session会话信息以及web服务器的配置数据。
5.根据权利要求4所述的web服务器集群系统的运行方法,其特征在于,包括以下步骤:
s1)用户通过终端的浏览器向web服务器集群发起http请求;
s2)负载均衡服务器根据配置的权重向web服务器集群中的web服务器分发http请求;
s3)web服务器对应的session管理中间件的session核心模块收到http请求后,判断该http请求中是否携带session会话信息的session唯一标识码,否则执行步骤s4);是则执行步骤s5);
s4)session管理中间件的session核心模块生成长度为32位的随机字符串作为session的唯一标识码,同时初始化一个空字典作为session会话信息的session信息数据载体,并且根据配置的过期时间设置此次session会话信息的过期时间,然后分别设置此次session会话的访问标志位、修改标志位以及空session标志位,通过session引擎模块使用session数据库适配模块将session会话信息持久化存储到国产数据库服务器中,跳转步骤s6);
s5)session管理中间件的session核心模块调用session引擎模块根据session唯一标识码读取国产数据库中对应的session会话信息;
s6)session管理中间件将session会话信息填充到http协议报文中,然后交给对应的web服务进行处理;
s7)web服务处理session会话信息时同步设置session会话信息的访问标志位、修改标志位以及空session标志位,然后发送http响应到对应的session管理中间件;
s8)session管理中间件收到web服务返回的http响应,session核心模块读取session会话信息的访问标志位、修改标志位以及空session标志位,若空session标志位为“真”则进入步骤s9);若空session标志位为“假”但http响应的状态码为服务器内部错误,也进入步骤s9);若http响应的状态码正常且修改标志位为“是”,session核心模块调用session引擎模块根据session唯一标识码更新国产数据库中对应的session会话信息中的session信息数据,同时更新session会话信息中的过期时间,最终将session会话信息的修改持久化存储到国产数据库服务器中,最后更新http协议报文中的session会话信息;
s9)session管理中间件将http响应返回到终端的浏览器。
6.根据权利要求5所述的web服务器集群系统的运行方法,其特征在于,步骤s5)具体包括:session引擎模块使用session数据库适配模块将session唯一标识码作为读取条件从国产数据库中读取出session唯一标识码对应的session会话信息中的session信息数据以及过期时间信息,若过期时间小于当前时间,session引擎模块使用session数据库适配模块清空当前session信息数据内容,并重新设置此次session会话的访问标志位、修改标志位以及空session标志位,最终清空国产数据库中session唯一标示码对应的session会话信息。
技术总结