一种通用的用户自定义会话系统及其会话管理方法
【技术领域】
[0001] 本发明设及用户会话技术,具体设及一种通用的用户自定义会话系统及其会话管 理方法。
【背景技术】
[0002] 由于服务器的负载越来越大,服务器集群中通常会使用负载均衡器,将用户请求 分发给不同的服务器,W减轻服务器负载。同样,云计算中的化aS平台为保障应用的高可 用性,通常会扩展多个实例运行,W达到负载均衡的目的。因此化aS平台中可能会引入一 个负载均衡器,当应用的访问请求量较大时,由负载均衡器将请求转发给应用的不同实例。 由于HTTP是无状态的,而有些请求可能需要维护用户状态,因此用户和服务器之间需要维 护用户会话(session),如购物车需要使用session来记录用户选择的商品。在一个应用服 务器上存储会话信息可能比在不同服务器间共享该信息更为高效,因此一般使用负载均衡 器,将用户的一系列访问请求转发到同一个应用实例所在的服务器上,也就是说,负载均衡 器需要提供黏性转发的功能。
[0003] -个典型的系统一般使用唯一的sessionID来收集客户的会话信息。开始时, 用户的第一个请求并不包含sessionID,处理该请求的服务器会生成一个会话,并生成一 个该会话的唯一的标识,即sessionID。服务器在请求返回结果中加入该sessionID,该 用户在后续的请求中,就可W使用该唯一的sessionID,将请求交由同一个服务器处理。 sessionID可能被编码在U化中,也有可能存储在服务器生成的cookie中。
[0004] 在一些分布式系统中,负载均衡器或者路由器用于接收客户端请求,并检测出其 中的sessionID,然后将该请求转发给生成该sessionID的服务器,该样保证了该会话存 储在同一台服务器中。一般将使用sessionID来选择处理用户请求的服务器的技术称为 黏性会话、黏性负载均衡或者黏性路由,因为sessionID使得该会话中所有的用户请求都 黏到同一个服务器。
[0005] 现有的负载均衡器一般是应用类型相关的,只支持特定类型的应用的请求的转 发,而部署在化aS平台的应用类型是多样的,现有的负载均衡器并不能满足该种需求,则 需要对传统的负载均衡器进行扩展,W支持多种应用类型的负载均衡。
[0006] 负载均衡器为了实现黏性转发,一般需要维护一张sessionID和服务器的映射 表,然后路由器或者负载均衡器根据sessionID在该表中查找相应的服务器。一般的化va Web应用服务器生成的会话的名字为JSESSI0NID,如Tomcat、Weblogic;而PHP服务器生成 的会话的名字一般为PHPSESSI0NID。因此,目前迫切需要一种通用的会话管理的机制。
【发明内容】
[0007] 发明目的:本发明的目的在于解决现有技术存在的不足,提供一种通用的用户自 定义会话系统及其会话管理方法。
[0008] 技术方案;本发明的一种通用的用户自定义会话系统,包括若干客户端、网络、负 载均衡器(例如可W是化aS平台中的负载均衡器)化及若干应用服务器,所述客户端与网 络相互连通,网络的另一端与负载均衡器相连通,负载均衡器上连接有应用服务器;
[0009] 所述客户端通过网络向应用服务器发出会话请求,请求经过负载均衡器转发至应 用服务器,应用服务器处理用户请求,并产生及存储相应的会话。
[0010] 本发明还公开了一种通用的用户自定义会话系统的会话管理方法,包括W下步 骤:
[0011] (1)用户从客户端发出请求;若请求中没有会话信息,则随机选择一个可用的应 用服务器并记录转发的服务器,若请求中含有会话,则负载均衡器查表并找到相应的应用 服务器;最后负载均衡器将请求转发至应用服务器;
[0012] (2)应用服务器向负载均衡器注册并指明支持的应用类型type及服务器地址;
[0013] (3)负载均衡器检查是否有该类型的注册表;若有该类型的注册表,则负载均衡 器在注册表中登记应用服务器的地址;若负载均衡器检查出没有该类型的注册表,则负载 均衡器创建一个该类型的注册表,最后负载均衡器也在该新建的注册表中登记应用服务器 的地址;
[0014] 进一步的,客户端发出的请求头部包含有黏性转发字段(即SessionKey字段),负 载均衡器接收到请求时,根据黏性转发字段查找相应的注册表并转发;负载均衡器为不同 的应用类型创建不同的会话映射表;所述黏性转发字段由用户自定义其关键字。
[0015] 用户可W指明黏性转发字段是JSESSI0NID,表明是一般的化vaWeb应用;也可W 指明黏性转发字段是PHPSESSI0NID,用于一般的PHP应用;或者可W自己定义一个黏性转 发字段,如Transaction。
[0016] 进一步的,所述负载均衡器接收到用户的初始请求后,该请求要求初始化一个会 话,并且给出生成会话的黏性转发字段;负载均衡器根据均衡策略,为该请求选择一个服务 器来处理该请求;同时负载均衡器根据请求指定的黏性转发字段,生成相应的映射表,并记 录该请求转发的服务器;
[0017] 当接到与上一个请求属于同一会话的访问请求时,负载均衡器根据解析出的黏性 转发字段,将请求转发给相同的服务器。
[0018] 进一步的,当会话超时时,应用服务器通知负载均衡器会话超时;负载均衡器收到 应用服务器的会话超时请求时,认为该会话已经结束并删除记录的超时会话信息。
[0019] 有益效果;本发明提供了一种通用的会话管理方法,既使得会话管理更加灵活,又 能够保证会话过程的时效性。
【附图说明】
[0020] 图1为实施例中分布式结构系统结构图;
[0021] 图2为图1中系统实现黏性负载均衡转发的流程图;
[0022] 图3为实施例中应用服务器向负载均衡注册的过程示意图;
[0023]