一种会话信息的共享方法、装置及系统与流程

文档序号:12753298阅读:205来源:国知局
一种会话信息的共享方法、装置及系统与流程

本发明涉及通信技术领域,特别涉及一种会话信息的共享方法、装置及系统。



背景技术:

随着互联网的日益壮大,网站的浏览次数和独立访客成线性或者指数倍的增加,单服务器单数据库早已经不能满足实际需求。目前大多数大型网站的服务器一般采用分布式服务集群的部署方式,通过使用一组服务器协同工作,来解决大并发大数据量的瓶颈问题。但是在分布式服务集群中,客户端在访问其中一台服务器并设置会话信息时,在下一次访问其他服务器时,该设置的会话信息无法实现共享,从而影响访问结果。



技术实现要素:

本发明实施例提供了一种会话信息的共享方法、装置及系统,以实现会话信息在分布式服务集群的共享。

一种会话信息的共享方法,包括:

接收分布式服务集群中各个应用服务器分别发送的存储指令,所述存储指令携带会话信息及对应的会话标识;

根据所述存储指令存储所述会话信息及对应的会话标识;

在接收到第一应用服务器发送的获取请求时,根据所述获取请求中携带的第一会话标识,在存储的会话信息中查找与所述第一会话标识相对应的第一会话信息;

将所述第一会话信息发送给所述第一应用服务器。

优选地,进一步包括:接收第二应用服务器发送的更新指令,所述更新指令携带第二会话标识和第三会话信息;根据所述第二会话标识在存储的会话信息中查找与所述第二会话标识相对应的第二会话信息,将所述第二会话信息删除,并存储所述第三会话信息。

优选地,

所述根据所述存储指令存储所述会话信息及对应的会话标识,包括:将所述会话信息及对应的会话标识存储到内存中;

进一步包括:在确定自身重启之后,读取日志列表中记录的每一条存储指令,并按照每一条存储指令重新加载相应的会话信息及对应的会话标识,并将重新加载的会话信息及对应的会话标识存储到内存中;

或,

所述根据所述存储指令存储所述会话信息及对应的会话标识,包括:将所述会话信息及对应的会话标识存储到内存中;

进一步包括:根据设置的时间段,对存储在内存中的数据进行快照,并将快照数据以及对应的快照时间点存储到磁盘中;

进一步包括:在确定自身重启之后,确定磁盘中距离当前时间点最近的目标快照时间点,将所述目标快照时间点对应的快照数据恢复到内存中。

一种会话信息的共享方法,包括:

接收客户端发送的会话信息,将所述会话信息存储到本地;

向外部的会话服务器发送存储指令,所述存储指令携带所述会话信息及对应的会话标识,以使所述会话服务器存储所述会话信息及对应的会话标识;

接收所述客户端发送的会话请求,所述会话请求携带第一会话标识;

在本地未存储有所述第一会话标识对应的第一会话信息时,向所述会话服务器获取与所述第一会话标识对应的第一会话信息;

利用所述第一会话信息对所述会话请求进行处理。

优选地,进一步包括:接收所述客户端发送的更新指令,所述更新指令携带第二会话标识和第三会话信息;在本地存储有所述第二会话标识时,将本地存储的与所述第二会话标识对应的第二会话信息删除,并将所述第三会话信息存储在本地,以及向所述会话服务器发送所述更新指令;在本地未存储有所述第二会话标识时,向所述会话服务器发送所述更新指令。

一种会话服务器,包括:

第一接收单元,用于接收分布式服务集群中各个服务器分别发送的存储指令,所述存储指令携带会话信息及对应的会话标识;

存储单元,用于根据所述存储指令存储所述会话信息及对应的会话标识;

第一查找单元,用于在接收到第一服务器发送的获取请求时,根据所述获取请求中携带的第一会话标识,在存储的会话信息中查找与所述第一会话标识相对应的第一会话信息;

发送单元,用于将所述第一会话信息发送给所述第二服务器。

优选地,

进一步包括:第二接收单元、第二查找单元和删除单元;

所述第二接收单元,用于接收第二服务器发送的更新指令,所述更新指令携带第二会话标识和第三会话信息;

所述第二查找单元,用于根据所述第二会话标识在存储的会话信息中查找与所述第二会话标识相对应的第二会话信息;

所述删除单元,用于将所述第二会话信息删除;

所述存储单元,进一步用于存储所述第三会话信息;

和/或,

所述存储单元为内存;

进一步包括:读取单元和加载单元;

所述读取单元,用于在确定自身重启之后,读取日志列表中记录的每一条存储指令;

所述加载单元,用于按照每一条存储指令重新加载相应的会话信息及对应的会话标识;

所述内存,用于存储重新加载的会话信息及对应的会话标识;

或,

所述存储单元为内存;

进一步包括:快照单元、磁盘和确定单元;

所述快照单元,用于根据设置的时间段,对存储在内存中的数据进行快照;

所述磁盘,用于存储快照数据以及对应的快照时间点;

所述确定单元,用于在确定自身重启之后,确定磁盘中距离当前时间点最近的目标快照时间点;

所述内存,用于存储所述目标快照时间点对应的快照数据。

一种应用服务器,包括:

第一接收单元,用于接收客户端发送的会话信息;

存储单元,用于存储所述会话信息;

发送单元,用于向外部的会话服务器发送存储指令,所述存储指令携带所述会话信息及对应的会话标识,以使所述会话服务器存储所述会话信息及对应的会话标识;

第二接收单元,用于接收所述客户端发送的会话请求,所述会话请求携带第一会话标识;

获取单元,用于在本地未存储有所述第一会话标识对应的第一会话信息时,向所述会话服务器获取与所述第一会话标识对应的第一会话信息;

处理单元,用于利用所述第一会话信息对所述会话请求进行处理。

一种会话信息的共享系统,包括:客户端、分布式服务集群和如上述所述的会话服务器;

所述分布式服务集群包括至少两个如权利要求8所述的应用服务器;

所述客户端,用于向所述分布式服务集群中的任一应用服务器发送会话信息,以及用于向所述分布式服务集群中的任一应用服务器发送会话请求。

优选地,所述会话服务器包括:Redis内存数据库。

本发明实施例提供了一种会话信息的共享方法、装置及系统,在会话信息的共享系统中增加会话服务器,该会话服务器专门用来存储会话信息,当某一应用服务器接收到客户端发送的会话请求时,若本地未存储有与会话请求中携带的会话标识相对应的会话信息,则表明该会话信息是客户端与其他应用服务器交互时存储到其他应用服务器上的,那么可以向存储有会话信息的应用服务器来获取该会话标识对应的会话信息,以实现对会话请求的处理,从而实现了分布式服务集群中各个应用服务器上会话信息的共享。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种方法流程图;

图2是本发明一个实施例提供的另一种方法流程图;

图3是本发明一个实施例提供的一种会话服务器结构示意图;

图4是本发明一个实施例提供的另一种会话服务器结构示意图;

图5是本发明一个实施例提供的又一种会话服务器结构示意图;

图6是本发明一个实施例提供的再一种会话服务器结构示意图;

图7是本发明一个实施例提供的一种应用服务器结构示意图;

图8是本发明一个实施例提供的一种系统结构示意图;

图9是本发明一个实施例提供的又一种方法流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种会话信息的共享方法,该方法可以包括以下步骤:

步骤101:接收分布式服务集群中各个应用服务器分别发送的存储指令,所述存储指令携带会话信息及对应的会话标识;

步骤102:根据所述存储指令存储所述会话信息及对应的会话标识;

步骤103:在接收到第一应用服务器发送的获取请求时,根据所述获取请求中携带的第一会话标识,在存储的会话信息中查找与所述第一会话标识相对应的第一会话信息;

步骤104:将所述第一会话信息发送给所述第一应用服务器。

根据上述实施例,利用该会话服务器专门用来存储会话信息,当某一应用服务器接收到客户端发送的会话请求时,若本地未存储有与会话请求中携带的会话标识相对应的会话信息,则表明该会话信息是客户端与其他应用服务器交互时存储到其他应用服务器上的,那么可以向存储有会话信息的应用服务器来获取该会话标识对应的会话信息,以实现对会话请求的处理,从而实现了分布式服务集群中各个应用服务器上会话信息的共享。

在本发明一个实施例中,该会话信息可以包括:账号密码、标识、权限等信息。会话信息是由客户端创建的,因此,客户端可以对会话信息进行修改,在修改会话信息时,由于每次客户端在访问分布式服务集群中,是根据负载均衡策略访问的,因此,在将更新指令发送给分配到的应用服务器时,该应用服务器可以将该更新指令转发给会话服务器,会话服务器可以根据该更新指令如下操作:

接收第二应用服务器发送的更新指令,所述更新指令携带第二会话标识和第三会话信息;根据所述第二会话标识在存储的会话信息中查找与所述第二会话标识相对应的第二会话信息,将所述第二会话信息删除,并存储所述第三会话信息。

根据上述实施例,在分布式服务集群中的应用服务器接收到更新指令之后,及时将更新指令发送给会话服务器,使得会话服务器对存储的会话信息进行更新,以保证分布式服务集群中的各个应用服务器之间共享的会话信息,都是最新的,从而可以保证分布式服务集群在进行会话请求的处理时,能够使用正确的会话信息进行处理。

在本发明一个实施例中,为了实现会话信息的共享时的效率,会话服务器可以将会话信息存储到内存中,由于内存的存取速率相对于磁盘的存取速率快,因此,在应用服务器向会话服务器请求会话信息时,会话服务器可以从内存中快速提取该会话信息反馈给相应的应用服务器。

在本发明一个实施例中,由于内存的特性是重启后数据消失,因此,为了保证分布式服务集群中会话信息的共享,在会话服务器中可以利用日志列表来获取存储在内存中的会话信息,进一步包括:在确定自身重启之后,读取日志列表中记录的每一条存储指令,并按照每一条存储指令重新加载相应的会话信息及对应的会话标识,并将重新加载的会话信息及对应的会话标识存储到内存中。利用该方式,从而可以保证分布式服务集群中会话信息的正常共享。

在本发明一个实施例中,由于日志列表中存储有大量的指令,在将日志列表中的所有存之指令重新加载一遍,需要耗费大量的时间才能够完成,因此,为了提高会话服务器重启之后,获取会话信息及对应会话标识的效率,可以采用如下一种方式:根据设置的时间段,对存储在内存中的数据进行快照,并将快照数据以及对应的快照时间点存储到磁盘中;

进一步包括:在确定自身重启之后,确定磁盘中距离当前时间点最近的目标快照时间点,将所述目标快照时间点对应的快照数据恢复到内存中。

其中,在设置时间段时可以根据会话服务器的关机重启的时间段来设置,若该快照的时间段设置的过短,可能存在相邻几个快照数据相同,那么会给会话服务器增加处理操作;若该快照的时间段设置的过长,可能导致在会话服务器重启时到最后一次快照操作之间的大量的数据丢失。例如,该设置的时间段为1h。

通过将快照数据和对应的快照时间点存储到磁盘中,由于磁盘的特性是重启之后数据不会丢失,因此,在重启之后,可以将磁盘中的快照数据进行恢复,从而实现分布式服务集群中会话信息的共享。

请参考图2,本发明一个实施例还提供了一种会话信息的共享方法,该方法可以包括:

步骤201:接收客户端发送的会话信息,将所述会话信息存储到本地;

步骤202:向外部的会话服务器发送存储指令,所述存储指令携带所述会话信息及对应的会话标识,以使所述会话服务器存储所述会话信息及对应的会话标识;

步骤203:接收所述客户端发送的会话请求,所述会话请求携带第一会话标识;

步骤204:在本地未存储有所述第一会话标识对应的第一会话信息时,向所述会话服务器获取与所述第一会话标识对应的第一会话信息;

步骤205:利用所述第一会话信息对所述会话请求进行处理。

根据上述实施例,在当前应用服务器接收到客户端发送的会话信息时,为了实现分布式服务集群的共享,可以将该会话信息发送给外部的会话服务器,以利用该会话服务器存储会话信息,在当前应用服务器接收到客户端发送的会话请求时,若本地未存储有与会话请求中携带的会话标识相对应的会话信息,则表明该会话信息是客户端与其他应用服务器交互时存储到其他应用服务器上的,那么可以向存储有会话信息的应用服务器来获取该会话标识对应的会话信息,以实现对会话请求的处理,从而实现了分布式服务集群中各个应用服务器上会话信息的共享。

在本发明一个实施例中,该会话信息可以包括:账号密码、标识、权限等信息。会话信息是由客户端创建的,因此,客户端可以对会话信息进行修改,在修改会话信息时,由于每次客户端在访问分布式服务集群中,是根据负载均衡策略访问的,因此,可以进一步包括:

接收所述客户端发送的更新指令,所述更新指令携带第二会话标识和第三会话信息;在本地存储有所述第二会话标识时,将本地存储的与所述第二会话标识对应的第二会话信息删除,并将所述第三会话信息存储在本地,以及向所述会话服务器发送所述更新指令;在本地未存储有所述第二会话标识时,向所述会话服务器发送所述更新指令。

根据上述实施例,在分布式服务集群中的应用服务器接收到更新指令之后,若本地存储有第二会话标识,则表明客户端是与本应用服务器之间进行交互时设置的第二会话信息,那么将本地存储的第二会话信息删除,存储第三会话信息,并及时将更新指令发送给会话服务器,使得会话服务器对存储的会话信息进行更新,以保证分布式服务集群中的各个应用服务器之间共享的会话信息,都是最新的,从而可以保证分布式服务集群在进行会话请求的处理时,能够使用正确的会话信息进行处理。

请参考图3,本发明实施例提供了一种会话服务器,可以包括:

第一接收单元301,用于接收分布式服务集群中各个服务器分别发送的存储指令,所述存储指令携带会话信息及对应的会话标识;

存储单元302,用于根据所述存储指令存储所述会话信息及对应的会话标识;

第一查找单元303,用于在接收到第一服务器发送的获取请求时,根据所述获取请求中携带的第一会话标识,在存储的会话信息中查找与所述第一会话标识相对应的第一会话信息;

发送单元304,用于将所述第一会话信息发送给所述第二服务器。

在本发明一个实施例中,请参考图4,该会话服务器可以进一步包括:第二接收单元401、第二查找单元402和删除单元403;

所述第二接收单元401,用于接收第二服务器发送的更新指令,所述更新指令携带第二会话标识和第三会话信息;

所述第二查找单元402,用于根据所述第二会话标识在存储的会话信息中查找与所述第二会话标识相对应的第二会话信息;

所述删除单元403,用于将所述第二会话信息删除;

所述存储单元302,进一步用于存储所述第三会话信息;

在本发明一个实施例中,为了提高会话服务器为应用服务器快速提供会话信息,该存储单元可以为内存;

请参考图5,在本发明一个实施例中,该会话服务器可以进一步包括:读取单元501和加载单元502;

所述读取单元501,用于在确定自身重启之后,读取日志列表中记录的每一条存储指令;

所述加载单元502,用于按照每一条存储指令重新加载相应的会话信息及对应的会话标识;

所述内存,用于存储重新加载的会话信息及对应的会话标识;

在本发明一个实施例中,由于内存的特性是重启后数据消失,因此,为了保证分布式服务集群中会话信息的共享,在会话服务器中可以利用日志列表来获取存储在内存中的会话信息,请参考图6,该会话服务器可以进一步包括:快照单元601、磁盘602和确定单元603;

所述快照单元601,用于根据设置的时间段,对存储在内存中的数据进行快照;

所述磁盘602,用于存储快照数据以及对应的快照时间点;

所述确定单元603,用于在确定自身重启之后,确定磁盘中距离当前时间点最近的目标快照时间点;

所述内存,用于存储所述目标快照时间点对应的快照数据。

请参考图7,本发明一个实施例还提供了一种应用服务器,包括:

第一接收单元701,用于接收客户端发送的会话信息;

存储单元702,用于存储所述会话信息;

发送单元703,用于向外部的会话服务器发送存储指令,所述存储指令携带所述会话信息及对应的会话标识,以使所述会话服务器存储所述会话信息及对应的会话标识;

第二接收单元704,用于接收所述客户端发送的会话请求,所述会话请求携带第一会话标识;

获取单元705,用于在本地未存储有所述第一会话标识对应的第一会话信息时,向所述会话服务器获取与所述第一会话标识对应的第一会话信息;

处理单元706,用于利用所述第一会话信息对所述会话请求进行处理。

请参考图8,本发明一个实施例中还提供了一种会话信息的共享系统,包括:客户端1、分布式服务集群2和如上述实施例任一所述的会话服务器3;

所述分布式服务集群2包括至少两个如上述任一所述的应用服务器20;

所述客户端1,用于向所述分布式服务集群2中的任一应用服务器20发送会话信息,以及用于向所述分布式服务集群2中的任一应用服务器20发送会话请求。

在本发明一个实施例中,由于内存的存取速率较快,因此,为了提高会话服务器提供会话信息的速率,该会话服务器可以包括:Redis内存数据库。

下面以一个分布式集群中包括3台应用服务器、会话服务器以Redis内存数据库为例,对本发明实施例提供的会话信息的共享方法进行进一步说明。

请参考图9,本发明一个实施例提供了一种会话信息的共享方法,该方法可以包括以下步骤:

步骤901:对分布式服务集群中的各个应用服务器进行过滤配置。

该过滤配置主要是配置应用服务器在接收到会话信息后的处理操作。

本实施例中,该过滤配置至少可以通过如下一种代码来实现:

步骤902:对Redis内存数据库进行管理配置。

为了利用Redis内存数据库实现分布式服务集群中会话信息的共享,需要对Redis内存数据库的管理进行配置,该配置方式至少可以通过如下一种方式来实现:

步骤903:客户端向分布式服务集群发起的会话信息设置请求,分布式服务集群根据负载均衡策略将该会话信息设置请求分配给应用服务器1。

步骤904:应用服务器1根据该会话信息设置请求中携带的会话标识和会话信息,将该会话标识和会话信息存储在本地,并向Redis内存数据库发送存储指令,该存储指令中携带该会话信息及对应的会话标识。

步骤905:Redis内存数据库根据该存储指令,将该会话信息和对应的会话标识存储在本地的内存数据库中。

在本实施例中,Redis内存数据库在实现会话信息共享时,可以是直接存储该会话信息和会话标识,在分布式服务集群中的应用服务器需要请求会话信息时,将相应的会话信息提供对方。也可以是每接收到新的会话信息和会话标识,可以该新的会话信息和会话标识发送分布式服务集群中的每一个应用服务器,以使分布式服务集群中的各个应用服务器中存储的会话信息同步。

由于后一种方式需要占用大量的存储空间,因此本实施例以前一种为例进行说明。

步骤906:客户端向分布式服务集群发起会话请求,分布式服务集群根据负载均衡策略将该会话请求分配给应用服务器2。

步骤907:应用服务器2根据该会话请求中携带的会话标识A,在本地查找是否存储有该会话标识A对应的会话信息A,若存在,则执行步骤908;否则,执行步骤909。

步骤908:利用该会话标识A对应的会话信息A对该会话请求进行处理,执行步骤910。

步骤909:向Redis内存数据库发送获取请求,该获取请求中携带该会话标识A;Redis内存数据库中存储的会话信息中查找与会话标识A对应的会话信息A,并将会话信息A发送给应用服务器2,并执行步骤908。

步骤910:在客户端向分布式服务集群发起更新请求时,分布式服务集群根据负载均衡策略将更新请求分配给应用服务器3。

步骤911:应用服务器3根据该更新请求中携带的会话标识B确定本地是否存储有会话标识B对应的会话信息B,若存在,执行步骤912;否则,执行步骤913。

步骤912:根据更新请求中携带的会话信息B1,将本地存储的会话信息B删除,并存储会话信息B1,执行步骤913。

步骤913:应用服务器3将更新请求转发给Redis内存数据库,Redis内存数据库根据该更新请求中携带的会话标识B,在存储的会话信息中查找与会话标识B对应的会话信息B,并将会话信息B删除,存储更新请求携带的会话信息B1。

综上,本发明各个实施例至少具体如下有益效果:

1、在本发明实施例中,利用该会话服务器专门用来存储会话信息,当某一应用服务器接收到客户端发送的会话请求时,若本地未存储有与会话请求中携带的会话标识相对应的会话信息,则表明该会话信息是客户端与其他应用服务器交互时存储到其他应用服务器上的,那么可以向存储有会话信息的应用服务器来获取该会话标识对应的会话信息,以实现对会话请求的处理,从而实现了分布式服务集群中各个应用服务器上会话信息的共享。

2、在本发明实施例中,在分布式服务集群中的应用服务器接收到更新指令之后,及时将更新指令发送给会话服务器,使得会话服务器对存储的会话信息进行更新,以保证分布式服务集群中的各个应用服务器之间共享的会话信息,都是最新的,从而可以保证分布式服务集群在进行会话请求的处理时,能够使用正确的会话信息进行处理。

3、在本发明实施例中,会话服务器通过将会话信息存储到内存中,由于内存的存取速率相对于磁盘的存取速率快,因此,在应用服务器向会话服务器请求会话信息时,会话服务器可以从内存中快速提取该会话信息反馈给相应的应用服务器,提高了会话信息的共享时的效率。

4、在本发明实施例中,通过将快照数据和对应的快照时间点存储到磁盘中,由于磁盘的特性是重启之后数据不会丢失,因此,在重启之后,可以将磁盘中的快照数据进行恢复,从而实现分布式服务集群中会话信息的共享。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

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

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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