一种基于cookie的会话保持方法及装置与流程

文档序号:14351543阅读:290来源:国知局
一种基于cookie的会话保持方法及装置与流程

本申请涉及计算机互联网领域,尤其涉及一种基于cookie的会话保持方法及装置。



背景技术:

在电子商务的应用系统中或需要进行用户身份认证的在线系统中,客户端与服务器之间经常需要经过好几次的交互过程才能完成一笔交易或一次事务处理。由于这几次交互过程是密切相关的,因此与这个客户端相关的访问请求都由同一台服务器来进行处理,而不能通过负载均衡设备分配到不同的服务器上。为了实现这一机制,需要在负载均衡设备上配置会话保持机制,以确保客户端与服务器之间的交互过程不会因为部署了负载均衡而出现问题。

现有的技术方案是当客户端第一次发出http报文时,客户端发出的http报文(没有携带cookie)进入负载均衡设备,负载均衡设备根据预设的负载均衡算法分配一台服务器,并将http报文发送至该服务器;负载均衡设备在接收到服务器的响应报文时,在所述响应报文的头部插入cookie信息,负载均衡设备在响应报文的头部插入的cookie信息为服务器的ip地址和端口,并将该插入cookie信息的响应报文返回给客户端;当客户端再次发出http报文时,负载均衡设备解析http报文中携带的cookie信息,根据其携带的cookie信息将该http报文发送至上次根据预设的负载均衡算法分配的服务器。

现有技术方案的缺点是在实际应用场景中,存在具有相同ip地址和端口的服务器。例如服务器s1和服务器s2具有相同的ip地址和端口,当客户端c1第一次发出http报文并且被分配到服务器s1上,在客户端c1发出http报文后客户端c2也发出了http报文,并且被分配到服务器s2上,因s1、s2具有相同的ip地址和端口,则c1和c2再次发出http报文时会携带相同的cookie信息,则c2的http报文可能被分配到s1上,基于cookie的会话保持机制将失效。



技术实现要素:

有鉴于此,本申请提供一种基于cookie的会话保持方法及装置。

具体地,本申请是通过如下技术方案实现的:

一种基于cookie的会话保持方法,所述方法包括:

在接收到客户端发出的http报文的情况下,判断其是否携带cookie信息;

在所述客户端发出的http报文没有携带cookie信息的情况下,根据预设的负载均衡算法为客户端发送的http报文分配服务器,并将所述客户端发出的http报文发送给所述分配的服务器;

在接收到所述分配的服务器发出的响应报文的情况下,在所述响应报文中插入cookie信息,并将插入cookie信息的响应报文返回给客户端,其中所述cookie信息由服务器的ip地址、端口和服务器id组合而成,所述服务器id是所述负载均衡设备为每台服务器分配的唯一标识;

在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的cookie信息将所述客户端再次发出的http报文转发到所述分配的服务器。

一种基于cookie的会话保持装置,其特征在于,所述装置包括:

判断单元,用于在接收到客户端发出的http报文的情况下,判断其是否携带cookie信息;

服务器分配单元,用于在所述客户端发出的http报文没有携带cookie信息的情况下,根据预设的负载均衡算法为客户端发送的http报文分配服务器;

报文发送单元,用于将所述客户端发出的http报文发送给所述分配的服务器;

信息插入单元,用于在接收到所述分配的服务器发出的响应报文的情况下,在所述响应报文中插入cookie信息;

报文返回单元,用于将插入cookie信息的响应报文返回给客户端,其中所述cookie信息由服务器的ip地址、端口和服务器id组合而成,所述服务器id是所述负载均衡设备为每台服务器分配的唯一标识;

报文转发单元,用于在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的cookie信息将所述客户端再次发出的http报文转发到所述分配的服务器。

通过本申请的技术方案,由于为每个服务器分配了一个唯一的id,则为每个服务器的响应报文的头部插入的cookie信息也是唯一的,当客户端再次发出http报文时,根据其携带的cookie信息将该http报文发送至上次根据预设的负载均衡算法分配的服务器。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请一示例性实施例示出的一种示例性应用场景示意图;

图2是本申请一示例性实施例示出的基于cookie的会话保持方法的一种实施流程图;

图3是本申请一示例性实施例示出的根据预设的负载均衡算法将接收到的不同http报文分配到不同服务器的一种示意图;

图4是本申请一示例性实施例示出的当再次接收到客户端发出的http报文时中间的处理过程;

图5是本申请一示例性实施例示出的基于cookie的会话保持装置的一种结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先对本申请实施例提供的一种基于cookie的会话保持方法进行说明,该方法可以具体包括以下步骤:

在接收到客户端发出的http报文的情况下,判断其是否携带cookie信息;

在所述客户端发出的http报文没有携带cookie信息的情况下,根据预设的负载均衡算法为客户端发送的http报文分配服务器,并将所述客户端发出的http报文发送给所述分配的服务器;

在接收到所述分配的服务器发出的响应报文的情况下,在所述响应报文中插入cookie信息,并将插入cookie信息的响应报文返回给客户端,其中所述cookie信息由服务器的ip地址、端口和服务器id组合而成,所述服务器id是所述负载均衡设备为每台服务器分配的唯一标识;

在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的cookie信息将所述客户端再次发出的http报文转发到所述分配的服务器。

在背景技术中提到,在实际应用场景中,如图1所示的示例性应用场景示意图,存在具有相同ip地址和端口的服务器。例如服务器s1和服务器s2具有相同的ip地址和端口,当客户端c1第一次发出http报文并且被分配到服务器s1上,在客户端c1发出http报文后客户端c2也发出了http报文,并且被分配到服务器s2上,因s1、s2具有相同的ip地址和端口,则c1和c2再次发出http报文时会携带相同的cookie信息,则c2的http报文可能被分配到s1上,基于cookie的会话保持机制将失效。基于上述问题,本申请实施例提供了一种技术方案,在负载均衡设备中为每台服务器分配一个唯一标识,即每台服务器都有其自己唯一的id,这样在服务器返回的响应报文报文头部插入的cookie信息也是唯一的,cookie信息包括服务器的ip、端口和服务器id,当客户端再次发出http报文时,解析其携带的cookie信息,根据解析得到的cookie信息将所述客户端再次发出的http报文转发到相应的服务器。

具体的在将客户端发出的http报文转发到服务器的过程中,接收到客户端发出的http报文,判断其是否携带cookie信息,这里有可能接收到客户端第一次发出的http报文,因为客户端第一次发出的http报文不会携带cookie信息;在所述客户端发出的http报文没有携带cookie信息的情况下,根据预设的负载均衡算法为所述客户端发出的http报文分配服务器,并将所述客户端发出的http报文发送给所述分配的服务器,负载均衡算法主要有:轮询、加权轮询、最小连接、加权最小连接等;在接收到所述分配的服务器返回的响应报文的情况下,在所述响应报文报文头部插入cookie信息,并将插入cookie信息的响应报文返回给客户端,其中所述cookie信息由服务器的ip地址、端口和服务器id组合而成,所述服务器id是所述负载均衡设备为每台服务器分配的唯一标识;在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的服务器的ip地址、端口和服务器id,将所述客户端再次发出的http报文中报文头部携带的cookie信息去除后转发到所述分配的服务器。为了对本申请进一步说明,提供下列实施例对本申请进行说明:

如图2所示,为本申请基于cookie的会话保持方法的一种实施流程图,其具体可以包括以下步骤:

s101,在接收到客户端发出的http报文的情况下,判断其是否携带cookie信息;

在一实施例中,在接收到客户端发出的http报文的情况下,判断其是否携带cookie信息。因为客户端第一次发出http报文进入均衡负载设备,其没有携带cookie信息,或者在客户端保存的cookie信息超过其生命周期,在客户端发出的http报文中,也并不会携带cookie信息。因此在接收到客户端发出的http报文的情况下,判断其是否携带cookie信息,以便于进行后续的处理。若所述客户端发出的http报文携带了cookie信息,则解析其携带的cookie信息,根据解析得到的cookie信息,将所述客户端发送的http报文转发到相应的服务器。

s102,在所述客户端发出的http报文没有携带cookie信息的情况下,根据预设的负载均衡算法为客户端发送的http报文分配服务器,并将所述客户端发出的http报文发送给所述分配的服务器;

在一实施例中,在所述客户端发出的http报文没有携带cookie信息的情况下,根据预设的负载均衡算法为所述客户端发送的http报文分配服务器,并将所述客户端发出的http报文发送给所述分配的服务器。例如在如图3所示的应用场景示意图,在负载均衡设备接收到http报文时,根据预设的负载均衡算法为负载均衡设备接收到的报文分配服务器,其中所述预设的负载均衡算法主要有:轮询、加权轮询、最小连接、加权最小连接等。这里以轮询算法为例进行说明,轮询算法是最简单的一种负载均衡算法,其原理是把负载均衡设备接收到的http报文轮流分配给内部的服务器,从服务器1开始,直到服务器n,然后重新开始循环。假设现在负载均衡设备接收到3条http报文,其对应的内部服务器有3台,根据轮询算法,对接收到的http报文1分配服务器1,将其转发到服务器1,对接收到的http报文2分配服务器2,将其转发到服务器2,对接收到的http报文3分配服务器3,将其转发到服务器3,在接收到http报文4时,则重新为其分配服务器1,将其转发到服务器1。

s103,在接收到所述分配的服务器发出的响应报文的情况下,在所述响应报文中插入cookie信息,并将插入cookie信息的响应报文返回给客户端,其中所述cookie信息由服务器的ip地址、端口和服务器id组合而成,所述服务器id是所述负载均衡设备为每台服务器分配的唯一标识;

在一实施例中,在接收到所述分配的服务器发出的响应报文的情况下,在所述响应报文的报文头部插入cookie信息,并将插入cookie信息的响应报文返回给客户端,其中所述cookie信息由服务器的ip地址、端口和服务器id组合而成,所述服务器id是所述负载均衡设备为每台服务器分配的唯一标识。例如上述所说的http报文1为其分配了服务器1,将其转发到服务器1,在接收到服务器1发出的响应报文的情况下,在所述服务器1发出的响应报文的报文头部插入cookie信息,所述cookie信息由服务器的ip地址、端口和服务器id组合而成,例如服务器1的ip地址为192.1681.1.10,其端口号为port1,服务器id为id1。

其中服务器id是负载均衡设备为每台服务器分配的唯一标识,用该id可以区分不同服务器。服务器id分配的方式有很多种,例如可以根据服务器的mac地址来分配,每台服务器的mac地址不同,根据此信息可以为每台服务器分配不同的标识;还可以根据其服务器与负载均衡设备连接的通道来分配标识,例如上述所说的负载均衡设备与服务器1连接的通道成为通道1,根据此通道1可以为服务器1分配标识,根据此标识可以得知将http报文通过通道1发给服务器1。其他的分配方式有很多种,这里不再一一赘述,只要根据服务器自身的一些特性来分配标识用于区分不同服务器即可。

在所述响应报文中插入cookie信息时,并设置cookie信息的生命周期。cookie信息的生命周期可以根据实际情况来设置,例如其生命周期而已设置为60秒,1小时,1年……。如果cookie信息没有设置生命周期,则表示这个cookie生命周期为浏览器会话生命周期,在浏览器关闭以后会消失,而且这种cookie信息保存在内存中,并不会保存在硬盘中,不同的浏览器也不能共享此cookie信息。如果cookie信息设置了生命周期,此时cookie信息会保存到硬盘中,在用户关闭浏览器并再次打开浏览器时,cookie信息依然有效,直到超过其设置的生命周期。而且存储在硬盘中的cookie信息可以共享,即不同的浏览器可以共享同一cookie信息。

s104,在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的cookie信息将所述客户端再次发出的http报文转发到所述分配的服务器。

在一实施例中,在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的所述服务器的ip地址、端口和服务器id,将所述客户端再次发出的http报文中报文头部携带的cookie信息去除后转发到所述分配的服务器。例如上述所说的http报文4,在接收到客户端c1发送的所述http报文4的情况下,解析其携带的cookie信息,根据解析得到的服务器ip地址、端口和服务器id,例如上述所说的服务器的ip地址为192.168.1.10,端口为port1,服务器id为id1,可以确定服务器1为其所分配的服务器,将所述客户端发出的http报文4报文头部携带的cookie信息去除后转发到所述服务器1。在接收到服务器1返回的响应报文的情况下,将上述cookie信息再次插入所述服务器1返回的响应报文的报文头部,并将插入cookie信息的响应报文返回给客户端c1,其示例性示意图如图4所示。

由于每个服务器都有其唯一id,则为每个服务器返回的响应报文插入的cookie信息也是唯一的,则当客户端再次发出http报文时,根据其携带的cookie信息将该http报文发送至上次根据预设的负载均衡算法分配的服务器。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

与前述基于cookie的会话保持方法的实施例相对应,本申请还提供了基于cookie的会话保持装置的实施例,如图5所示,包括判断单元200、服务器分配单元210、报文发送单元220、信息插入单元230、报文返回单元240、报文转发单元250。

所述判断单元200,用于在接收到客户端发出的http报文的情况下,判断其是否携带cookie信息;

所述服务器分配单元210,用于在所述客户端发出的http报文没有携带cookie信息的情况下,根据预设的负载均衡算法为客户端发送的http报文分配服务器;

所述报文发送单元220,用于将所述客户端发出的http报文发送给所述分配的服务器;

所述信息插入单元230,用于在接收到所述分配的服务器发出的响应报文的情况下,在所述响应报文中插入cookie信息;

所述报文返回单元240,用于将插入cookie信息的响应报文返回给客户端,其中所述cookie信息由服务器的ip地址、端口和服务器id组合而成,所述服务器id是所述负载均衡设备为每台服务器分配的唯一标识;

所述报文转发单元250,用于在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的cookie信息将所述客户端再次发出的http报文转发到所述分配的服务器。

在本申请的一种具体实施方式中,所述信息插入单元230具体用于:

在接收到所述分配的服务器发出的响应报文的情况下,在所述响应报文的报文头部插入cookie信息。

在本申请的一种具体实施方式中,所述装置还包括:周期设置单元260

所述周期设置单元260,用于在所述响应报文中插入cookie信息时,并设置cookie信息的生命周期。

在本申请的一种具体实施方式中,所述报文转发单元250具体用于:

在接收到客户端再次发出的http报文的情况下,解析其携带的cookie信息,根据解析得到的所述服务器的ip地址、端口和服务器id,将所述客户端再次发出的http报文中报文头部携带的cookie信息去除后转发到所述分配的服务器。

上述系统中各个单元的作用实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本发明可以在由计算机执行的计算值可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1