专利名称:一种会话实现的方法、设备及系统的制作方法
技术领域:
本申请涉及通信领域,尤其涉及一种会话实现的方法、设备及系统。
背景技术:
Session(会话)表示Web (网页)服务器与用户终端之间的一次会话过程(用户终端通过浏览器与Web服务器进行交互),该过程是连续的,也可以是时断时续的。以用户登录邮箱查看邮件为例,Session指的是用户通过用户终端登录邮箱后到离开邮箱前的过程。如果Web服务器提供的服务是面向登录用户,用户在通过用户终端登录服务器时需要首先输入账户信息,Web服务器验证通过后允许用户登录。验证通过时,Web服务器产生一个Session ID,将该Session ID作为key (键)携带在cookie中写入该用户终端的浏览器。Web服务器存储用户的Session状态,包括Session ID与该用户的账户信息的对应关系。在一次Session中,Web服务器接收浏览器发送的业务请求报文,如果报文中携带cookie,且cookie中携带Session ID,服务器根据Session ID查找对应的账户信息,如果查找成功,则判定用户为登录用户,允许用户的操作。如果报文中没有携带cookie,或者cookie中没有携带Session ID,或者根据Session ID没有找到对应的用户信息,Web服务器判定用户尚未登录,拒绝相应操作,要求用户登录。当多台Web服务器共同提供一项服务时,例如,多台Web服务器共同提供邮箱服务,此时,浏览器的Session状态存储在其第一次访问的Web服务器内,为了使浏览器后续访问其他Web服务器时不需要重复输入账户信息,多台Web服务器之间需要相互复制传递Session状态。当访问量过大时 ,需要大量Web服务器共同提供服务,此时在大量Web服务器之间相互复制传递Session状态将会影响Web服务器的工作效率。
发明内容
本申请提供了一种会话实现的方法、设备及系统,以提高Web服务器的工作效率。一种会话实现的方法,包括所述Web服务器接收所述浏览器发送的登录请求,当所述登录请求中携带的账户信息正确时,将所述账户信息发送至所述Session服务器,接收所述Session服务器发送的Session ID并将所述Session ID发送至所述浏览器,由所述Session服务器存储账户信息与Session ID的对应关系;所述Web服务器接收所述浏览器发送的业务请求,当所述业务请求内携带Session ID时,所述Web服务器向所述Session服务器发送账户信息获取请求,使所述Session服务器根据所述账户信息获取请求内携带的所述Session ID查找对应的账户信息,如果查找到对应的账户信息,所述Web服务器允许所述业务请求,否则,所述Web服务器拒绝所述业务请求。一种网页Web服务器,包括第一收发单元,登录处理单元,第二收发单元,业务处理单元,其中所述第一收发单元,用于接收用户终端发送的携带账户信息的登录请求以及业务请求;以及,将Session服务器返回的Session ID发送给所述用户终端;所述登录处理单元,用于当所述第一收发单元接收到的登录请求中携带的账户信息验证通过时,指示所述第二收发单元向所述Session服务器发送携带有所述账户信息的Session ID获取请求;所述第二收发单元,用于根据所述登录处理单元的指示向所述Session服务器发送Session ID获取请求,并接收所述Session服务器返回的Session ID;以及,根据所述业务处理单元的指示向所述Session服务器发送账户信息确认请求,并接收所述Session服务器的响应;其中,所述Session服务器根据所述账户信息确认请求内携带的Session ID查找对应的账户信息,如果查找到对应的账户信息,则向所述Web服务器发送确认信息;所述业务处理单元,用于当判断所述第一收发单元接收到的业务请求内携带Session ID时,指示所述第二收发单元向所述Session服务器发送携带有所述Session ID的账户信息确认请求;以及,当判断所述第二收发单元接收到的所述Session服务器的响应为确认信息时,执行所述业务请求。一种Session服务器,包括收发单元,第一处理单元,存储单元,第二处理单元,其中所述收发单元,用于接收Web服务器根据用户终端的登录请求发送的携带有账户信息的Session ID获取请求,并向所述Web服务器返回Session ID ;以及,接收Web服务器在接收到已登录用户终端发送的业务请求后所发送的携带Session ID的账户信息确认请求,并对所述账户信息确认请求进行响应;所述第一处理单 元,用于根据所述收发单元接收到的Session ID获取请求,生成与所述账户信息对应的Session ID,指示所述收发单元向所述Web服务器发送所述Session ID,并将Session ID与账户信息的对应关系存储到所述存储单元;所述存储单元,用于存储Session ID与账户信息的对应关系;所述第二处理单元,用于根据所述账户信息确认请求内携带的Session ID查找对应的账户信息,并当查找到对应的账户信息时,指示所述收发单元向所述Web服务器发送确认信息进行响应。—种会话实现的系统,包括Web服务器和Session服务器;所述Web服务器,用于接收所述用户终端发送的携带账户信息的登录请求以及业务请求;当所述登录请求中携带的账户信息验证通过时,向所述Session服务器发送携带有所述账户信息的Session ID获取请求,接收所述Session服务器返回的Session ID并将所述Session ID发送至所述用户终端,由所述Session服务器存储账户信息与SessionID的对应关系;当所述业务请求内携带Session ID时,向所述Session服务器发送携带有所述的Session ID的账户信息确认请求,并在接收到确认信息后,执行所述业务请求;所述Session服务器,用于接收所述Web服务器发送的携带账户信息的SessionID获取请求,生成并向所述Web服务器发送Session ID,存储所述Session ID与账户信息的对应关系;接收所述Web服务器发送的携带SessionID的账户信息确认请求,根据所述账户信息确认请求内携带的Session ID查找对应的账户信息,并当查找到对应的账户信息时,向所述Web服务器发送确认信息。与现有技术相比,本申请实施例至少具有以下优点Web服务器不需要存储账户信息与Session ID的对应关系,而是由Session服务器存储该对应关系并处理Session ID的生成以及账户信息的查找,使得Web服务器之间不需要复制传递Session状态,提高了 Web服务器的工作效率。
图1是本申请实施例提供的会话实现的方法应用于邮箱服务场景的流程示意图;图2是本申请实施例提供的会话实现的方法应用于在线购物场景的流程示意图;图3是本申请实施例提供的Web服务器的结构示意图;图4是本申请实施例提供的Session服务器的结构示意图。
具体实施例方式下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。本申请实施例提供一种会话实现的方法,应用于包括用户终端、多个Web服务器、以及session服务器的系统中,该多个Web服务器共同提供网络服务,例如,多个Web服务器共同向用户提供邮箱服 务,该邮箱形式为“XXX@888. com”,用户向Web服务器请求注册888邮箱,然后通过888邮箱进行邮件收发。本实例中,Web服务器不再承担生成Session ID以及存储Session状态的功能,而是由Session服务器生成Session ID以及存储Session状态。为了便于描述,在本申请实施例中以用户终端通过浏览器与Web服务器交互,Session状态为Session ID与账户信息的对应关系为例进行说明。在Web服务器验证用户的账户信息正确后,Web服务器向Session服务器发送Session ID获取请求,由Session服务器根据该Session ID获取请求中携带的账户信息生成与该账户信息对应的Session ID并存储该账户信息与Session ID的对应关系,Web服务器将Session服务器生成的Session ID携带在cookie中写入浏览器。在后续接收到浏览器的业务请求后,Web服务器获取浏览器发送的报文中的cookie,从中获取SessionID,然后向Session服务器发送查找与Session ID对应的账户信息的账户信息确认请求,Session服务器接收该账户信息确认请求,如果查找得到与Session ID对应的用户信息,则判定对应帐户的用户在Web服务器上的状态为登录状态,向Web服务器发送确认信息,使Web服务器根据该确认信息执行相应业务请求,否则判定用户未登录,拒绝相应业务请求。其中,该业务请求可以包括页面刷新请求(即刷新浏览器当前浏览的页面),页面关闭请求(即关闭浏览器当前浏览的页面),或在线购买请求等。其中,当系统中存在多个Session服务器时,Web服务器中则需要存储Session ID与Session服务器的对应关系。当接收到用户终端发送的携带有Session ID的业务请求时,Web服务器向该Session ID对应的Session服务器发送账户信息确认请求。
以下以888邮箱为例,对本实施例提供的会话实现的方法进行介绍。假定提供888邮箱服务的Web服务器包括第一服务器和第二服务器,如图1所示,该方法包括以下步骤步骤101,用户通过浏览器访问888邮箱登录界面,输入账户信息,并向第一服务器发送携带账户信息的登录请求;步骤102,第一服务器接收该登录请求,验证账户信息是否正确,如果验证结果为正确,执行步骤103 ;否则拒绝用户登录。步骤103,第一服务器向Session服务器发送对应账户信息的Session ID获取请求,由Session服务器根据该请求生成Session ID并记录Session ID与账户信息的对应关系,Session服务器向第一服务器发送该Session ID。步骤104,第一服务器将Session ID携带在cookie中写入浏览器。步骤105,浏览器向第二服务器发送页面刷新请求,第二服务器接收到该请求,查找请求中是否携带cookie ;如果查找结果为是,执行步骤106 ;否则,拒绝执行页面刷新处理。步骤106,第二服务器获取cookie中携带的Session ID,根据该Session ID向Session服务器发送账户信息确认请求。步骤107, Session服务器查找存储的与账户信息确认请求中携带的Session ID对应的账户信息,如果查找到 该账户信息,执行步骤108 ;如果未查找到该账户信息,执行步骤109。步骤108,第二服务器接收账户信息查找成功的通知,判定用户为登录状态,执行页面刷新操作。其中,账户信息查找成功的通知可以为一个预设的表示Session服务器查找得到对应账户信息的通知,或者携带查找得到的账户信息的通知。步骤109,第二服务器接收查找失败通知,判定用户为非登录状态,拒绝执行页面刷新操作。本实例提供的方法可以应用于多种场景,为了使本申请方案更加清楚,下面结合在线购物场景对本实例提供的方法进行介绍。在线购物服务网站提供的服务包括在线搜索服务和在线购买服务,由多台Web服务器共同提供服务。其中,在线搜索服务不需要用户登录,在线购买服务要求用户登录。用户初始时在线搜索商品,假定用户搜索到合适的商品后要求使用在线购买服务,则此时Web服务器A接收到用户通过浏览器发送的在线购买请求后,处理过程如图2所示,包括步骤201,Web服务器A判断在线购买请求中是否携带cookie ;如果判断结果为是,执行步骤202 ;否则要求用户登录。步骤202, Web服务器A获取cookie中的Session ID,向Session服务器发送账户信息查询请求。步骤203, Session服务器查找与账户信息查询请求中携带的Session ID对应的账户信息,如果查找成功,执行步骤204 ;否则,Web服务器A要求用户登录。步骤204,Web服务器A允许用户使用在线购买服务。本申请实施例提供的方法中,可选的,Session服务器以分布式缓存的方式存储Session状态。具体的,Session服务器生成与用户的账户信息对应的Session ID,并可将该Session ID作为键(key),使用一致性哈希算法找到与Session ID对应的分布式缓存,将Session状态存储到对应的分布式缓存。即使用一致性哈希算法,确定Session ID (key)对应的分布式缓存(value)。具体地,当接收到Web服务器的账户信息查询请求时,Session服务器获取账户信息查询请求中携带的Session ID,使用一致性哈希算法找到与SessionID对应的分布式缓存,在该分布式缓存内查找与账户信息查询请求内携带的Session ID对应的账户信息。Session服务器使用一致性哈希算法确定与SessionID对应的分布式缓存时,可根据各分布式缓存的负载情况,确定Session ID的存储,以使各缓存能够实现均衡负载。基于与上述方法实施例相同的技术构思,本申请还提供下述装置实施例。本申请实施例提供一种Web服务器,应用于包括Session服务器的系统中,如图3所示,该Web服务器包括第一收发单元11,登录处理单元12,第二收发单元13,业务处理单元14,其中第一收发单元11,用于接收用户终端发送的携带账户信息的登录请求以及业务请求;以及,将Session服务器返回的Session ID发送给所述用户终端;登录处理单元12,用于当第一收发单元11接收到的登录请求中携带的账户信息验证通过时,指示第二收发单元13向所述Session服务器发送携带有所述账户信息的Session ID获取请求;第二收发单元13,用于根据登录处理单元12的指示向所述Session服务器发送Session ID获取请求,并接收所述Session服务器返回的Session ID;以及,根据业务处理单元14的指示向所述Session服务器发送账户信息确认请求,并接收所述Session服务器的响应;其中,所述Session服务器根据所述账户信息确认请求内携带的Session ID查找对应的账户信息,如果查找到对应的账户信息,则向所述Web服务器发送确认信息;业务处理单元14 ,用于当判断第一收发单元11接收到的业务请求内携带SessionID时,指示第二收发单元13向所述Session服务器发送携带有所述Session ID的账户信息确认请求;以及,当判断第二收发单元13接收到的所述Session服务器的响应为确认信息时,执行所述业务请求。其中,业务处理单元14还可以用于,查找所述业务请求内携带的cookie,在查找失败时拒绝所述业务请求,在查找成功时判断所述cookie内是否携带Session ID,如果所述cookie内没有携带Session ID,拒绝所述业务请求。本申请实施例提供一种Session服务器,应用于包括Web服务器的系统中,如图4所示,该服务器包括收发单元21,第一处理单元22,存储单元23,第二处理单元24,其中收发单元21,用于接收Web服务器根据用户终端的登录请求发送的携带有账户信息的Session ID获取请求,并向所述Web服务器返回Session ID ;以及,接收Web服务器在接收到已登录用户终端发送的业务请求后所发送的携带Session ID的账户信息确认请求,并对所述账户信息确认请求进行响应;第一处理单元22,用于根据收发单元21接收到的Session ID获取请求,生成与所述账户信息对应的Session ID,指示收发单元21向所述Web服务器发送所述Session ID,并将Session ID与账户信息的对应关系存储到存储单元23 ;存储单元23,用于存储Session ID与账户信息的对应关系;
第二处理单元24,用于根据所述账户信息确认请求内携带的Session ID查找对应的账户信息,并当查找到对应的账户信息时,指示收发单元21向所述Web服务器发送确认信息进行响应。其中,存储单元23可以具体为多个分布式缓存单元。相应地,第一处理单元22可以具体用于根据一致性哈希算法确定与Session ID对应的分布式缓存单元,并将所述账户信息与Session ID的对应关系存储到确定出的分布式缓存单元中;第二处理单元24可以具体用于根据一致性哈希算法确定与Session ID对应的分布式缓存单元,在确定的分布式缓存单元内查找与Session ID对应的账户信息。本申请实施例提供一种会话实现的系统,包括Web服务器和Session服务器;所述Web服务器,用于接收所述用户终端发送的携带账户信息的登录请求以及业务请求;当所述登录请求中携带的账户信息验证通过时,向所述Session服务器发送携带有所述账户信息的Session ID获取请求,接收所述Session服务器返回的Session ID并将所述Session ID发送至所述用户终端,由所述Session服务器存储账户信息与SessionID的对应关系;当所述业务请求内携带Session ID时,向所述Session服务器发送携带有所述的Session ID的账户信息确认请求,并在接收到确认信息后,执行所述业务请求;所述Sessi on服务器,用于接收所述Web服务器发送的携带账户信息的SessionID获取请求,生成并向所述Web服务器发送Session ID,存储所述Session ID与账户信息的对应关系;接收所述Web服务器发送的携带SessionID的账户信息确认请求,根据所述账户信息确认请求内携带的Session ID查找对应的账户信息,并当查找到对应的账户信息时,向所述Web服务器发送确认信息。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种会话实现的方法,其特征在于,包括 Web服务器接收用户终端发送的携帯有账户信息的登录请求,并当所述账户信息验证通过后,向Session服务器发送携带有所述账户信息的Session ID获取请求; 所述Session服务器根据所述Session ID获取请求,生成与所述账户信息对应的Session ID,存储所述账户信息与所生成的Session ID的对应关系,并将所述Session ID发送给所述Web服务器; 所述Web服务器将获取到的Session ID发送至所述用户終端; 当所述Web服务器接收到所述用户终端发送的携帯有Session ID的业务请求后,向所述Session服务器发送携带有所述Session ID的账户信息确认请求,并在接收到确认信息后,执行所述业务请求; 其中,所述Session服务器根据所述账户信息确认请求中携带的Session ID查找对应的账户信息,如果查找到对应的账户信息,则向所述Web服务器发送确认信息。
2.如权利要求1所述的方法,其特征在于,所述Session服务器包括多个分布式缓存; 所述Session服务器存储账户信息与Session ID的对应关系包括所述Session服务器根据一致性哈希算法确定与Session ID对应的分布式缓存,在确定出的分布式缓存中存储所述账户信息与Session ID的对应关系; 所述Session服务器根据所述账户信息确认请求内携带的所述Session ID查找对应的账户信息包括所述Session服务器根据一致性哈希算法确定与所述Session ID对应的分布式缓存,在确定出的分布式缓存内查找对应的账户信息。
3.如权利要求1或2所述的方法,其特征在于,所述Web服务器接收所述用户终端发送的业务请求之后,还包括 所述Web服务器查找所述业务请求内携带的cookie,在查找失败时拒绝所述业务请求,在查找成功时判断所述cookie内是否携带Session ID,如果所述cookie内没有携带Session ID,拒绝所述业务请求。
4.ー种Web服务器,其特征在干,该Web服务器包括第一收发单元,登录处理単元,第二收发单元,业务处理单元,其中 所述第一收发单元,用于接收用户终端发送的携帯账户信息的登录请求以及业务请求;以及,将Session服务器返回的Session ID发送给所述用户終端; 所述登录处理单元,用于当所述第一收发单元接收到的登录请求中携帯的账户信息验证通过时,指示所述第二收发单元向所述Session服务器发送携帯有所述账户信息的Session ID获取请求; 所述第二收发单元,用于根据所述登录处理单元的指示向所述Session服务器发送Session ID获取请求,并接收所述Session服务器返回的Session ID;以及,根据所述业务处理单元的指示向所述Session服务器发送账户信息确认请求,并接收所述Session服务器的响应;其中,所述Session服务器根据所述账户信息确认请求内携带的Session ID查找对应的账户信息,如果查找到对应的账户信息,则向所述Web服务器发送确认信息; 所述业务处理单元,用于当判断所述第一收发单元接收到的业务请求内携带SessionID时,指示所述第二收发单元向所述Session服务器发送携带有所述Session ID的账户信息确认请求;以及,当判断所述第二收发单元接收到的所述Session服务器的响应为确认信息时,执行所述业务请求。
5.如权利要求4所述的服务器,其特征在于,所述业务处理单元还用于 查找所述业务请求内携带的cookie,在查找失败时拒绝所述业务请求,在查找成功时判断所述cookie内是否携带Session ID,如果所述cookie内没有携带Session ID,拒绝所述业务请求。
6.ー种Session服务器,其特征在于,包括收发单元,第一处理单元,存储单元,第二处理单元,其中 所述收发単元,用于接收Web服务器根据用户终端的登录请求发送的携帯有账户信息的Session ID获取请求,并向所述Web服务器返回Session ID ;以及,接收Web服务器在接收到已登录用户终端发送的业务请求后所发送的携帯Session ID的账户信息确认请求,并对所述账户信息确认请求进行响应; 所述第一处理单元,用于根据所述收发单元接收到的Session ID获取请求,生成与所述账户信息对应的Session ID,指示所述收发単元向所述Web服务器发送所述SessionID,并将Session ID与账户信息的对应关系存储到所述存储単元; 所述存储単元,用于存储Session ID与账户信息的对应关系; 所述第二处理单元,用于根据所述账户信息确认请求内携帯的Session ID查找对应的账户信息,并当查找到对应的账户信息时,指示所述收发単元向所述Web服务器发送确认信息进行响应。
7.如权利要求6所述的服务器,其特征在干,所述存储単元具体为多个分布式缓存单元, 所述第一处理单元具体用于根据一致性哈希算法确定与Session ID对应的分布式缓存单元,并将所述账户信息与Session ID的对应关系存储到确定出的分布式缓存单元中; 所述第二处理单元具体用于根据一致性哈希算法确定与Session ID对应的分布式缓存单元,在确定的分布式缓存单元内查找与Session ID对应的账户信息。
8.ー种会话实现的系统,其特征在于,包括Web服务器和Session服务器; 所述Web服务器,用于接收所述用户终端发送的携帯账户信息的登录请求以及业务请求;当所述登录请求中携带的账户信息验证通过时,向所述Session服务器发送携带有所述账户信息的Session ID获取请求,接收所述Session服务器返回的Session ID并将所述Session ID发送至所述用户终端,由所述Session服务器存储账户信息与Session ID的对应关系;当所述业务请求内携带Session ID时,向所述Session服务器发送携带有所述的Session ID的账户信息确认请求,并在接收到确认信息后,执行所述业务请求; 所述Session服务器,用于接收所述Web服务器发送的携帯账户信息的Session ID获取请求,生成并向所述Web服务器发送Session ID,存储所述Session ID与账户信息的对应关系;接收所述Web服务器发送的携帯SessionID的账户信息确认请求,根据所述账户信息确认请求内携帯的Session ID查找对应的账户信息,并当查找到对应的账户信息吋,向所述Web服务器发送确认信息。
全文摘要
本申请公开了一种会话实现的方法、设备及系统。该方法包括Web服务器接收用户终端发送的携带有账户信息的登录请求,当所述账户信息验证通过后,向Session服务器发送携带有所述账户信息的Session ID获取请求,接收Session服务器发送的Session ID并将所述Session ID发送至浏览器,由Session服务器存储账户信息与Session ID的对应关系;当接收到携带Session ID的业务请求时,Web服务器向Session服务器发送账户信息确认请求,由Session服务器根据所述Session ID查找对应的账户信息,根据查找结果判断是否允许所述业务请求。通过Session服务器存储Session状态,提高了Web服务器的工作效率。
文档编号H04L29/06GK103051647SQ20111030931
公开日2013年4月17日 申请日期2011年10月13日 优先权日2011年10月13日
发明者段晓辉 申请人:阿里巴巴集团控股有限公司