CN105812351B - 实现会话共享的方法和系统 - Google Patents
实现会话共享的方法和系统 Download PDFInfo
- Publication number
- CN105812351B CN105812351B CN201610098654.1A CN201610098654A CN105812351B CN 105812351 B CN105812351 B CN 105812351B CN 201610098654 A CN201610098654 A CN 201610098654A CN 105812351 B CN105812351 B CN 105812351B
- Authority
- CN
- China
- Prior art keywords
- session
- client
- access request
- shared
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种实现会话共享的方法和系统。上述方法包括以下步骤:获取用户通过客户端访问网站所产生的会话数据;将所述会话数据作为整体以哈希结构存储在redis中;接收客户端的访问请求;提取所述访问请求中包含的会话标识;根据所述会话标识在所述redis中查找对应的会话数据;根据所述访问请求对查找得到的会话数据执行相应的操作。上述实现会话共享的方法和系统,能够减少网络开销,节省网络资源,且数据处理速度快。
Description
技术领域
本发明涉及计算机领域,特别是涉及一种实现会话共享的方法和系统。
背景技术
在网络应用中,Session被称为“会话控制”,当用户请求来自应用程序的网页时,如果该用户还没有会话,则服务器会自动创建一个Session对象,用于存储特定用户会话所需的数据,例如用户的账号、密码、登录状态等。而随着网站业务规模和访问量的逐步发展,原本由单台服务器、单个域名的网站架构已无法满足发展需要,经常需要购买多个服务器,并启用多个二级子域名以频道化的方式,根据业务功能将网站分布部署在不同的服务器上,或是采用负载均衡技术让网站的多个频道共享一组服务器。由于Session默认以文件形式保存在本地服务器的硬盘中,使得网站用户需要在不同的几个频道中输入账号、密码等会话数据,浪费用户的大量时间,因此需要实现网站跨服务器之间的Session共享,即实现会话共享。
在传统的方式中,实现会话共享的方法有很多种,其中最经常被采用的是基于Memcache实现Session共享,Memcache是一套分布式的高速缓存系统,可使用key-value(关键码-值)数据存储模式存储会话数据。在Memcache中,通常有两种存储方式,一种是将会话数据中的各个字段分别用一个key进行存储,一种是利用Map(图)结构将会话数据中的各个字段包装成一个对象进行存储。若采用第一种方式存储,当需要从会话数据中取出所有字段,则需要与Memcache进行多次网络交互,若采用第二种方式存储,当需要从会话数据中取出部分字段,则需要先将包装过的会话数据取出,再读取其中所需的字段,也需要进行多次网络交互,浪费网络资源。
发明内容
基于此,有必要提供一种实现会话共享的方法,能够在读取会话数据时减少客户端与服务器的网络交互,节省网络资源。
此外,还有必要提供一种实现会话共享的系统,能够在读取会话数据时减少客户端与服务器的网络交互,节省网络资源。
一种实现会话共享的方法,包括以下步骤:
获取用户通过客户端访问网站所产生的会话数据;
将所述会话数据作为整体以哈希结构存储在redis中;
接收客户端的访问请求;
提取所述访问请求中包含的会话标识;
根据所述会话标识在所述redis中查找对应的会话数据;
根据所述访问请求对查找得到的会话数据执行相应的操作。
在其中一个实施例中,所述根据所述会话标识在所述redis中查找对应的会话数据,具体包括:
将所述会话标识作为关键码,并在所述redis中查找是否有与所述关键码对应的值;
若有与所述关键码对应的值,则根据所述访问请求从所述值中获取所需的会话数据。
在其中一个实施例中,所述方法还包括以下步骤:
与客户端建立TCP连接;
建立管道机制;
通过所述管道机制接收所述客户端通过一个套接字连接发送的多个访问请求;
处理所述多个访问请求;
处理完成后,将处理结果打包并通过所述管道机制发送给所述客户端。
在其中一个实施例中,所述处理所述多个访问请求,具体包括:
依次处理所述多个访问请求,并将每次处理访问请求的处理结果进行缓存。
在其中一个实施例中,在所述处理所述多个访问请求的步骤之后,还包括:
根据各个访问请求的处理结果所占的数据尺寸及所述套接字连接的缓冲区大小确定所述管道机制的处理数量;
所述处理完成后,将处理结果打包并通过所述管道机制发送给所述客户端具体为:
处理完成后,将处理结果按照所述管道机制的处理数量打包并通过所述管道机制发送给所述客户端。
一种实现会话共享的系统,包括:
获取模块,用于获取用户通过客户端访问网站所产生的会话数据;
存储模块,用于将所述会话数据作为整体以哈希结构存储在redis中;
接收模块,用于接收客户端的访问请求;
提取模块,用于提取所述访问请求中包含的会话标识;
查找模块,用于根据所述会话标识在所述redis中查找对应的会话数据;
操作模块,用于根据所述访问请求对查找得到的会话数据执行相应的操作。
在其中一个实施例中,所述查找模块包括:
查找单元,用于将所述会话标识作为关键码,并在所述redis中查找是否有与所述关键码对应的值;
获取单元,用于若有与所述关键码对应的值,则根据所述访问请求从所述值中获取所需的会话数据。
在其中一个实施例中,所述系统还包括:
连接模块,用于与客户端建立TCP连接;
管道模块,用于建立管道机制;
所述接收模块还用于通过所述管道机制接收所述客户端通过一个套接字连接发送的多个访问请求;
处理模块,用于处理所述多个访问请求;
发送模块,用于处理完成后,将处理结果打包并通过所述管道机制发送给所述客户端。
在其中一个实施例中,所述处理模块还用于依次处理所述多个访问请求,并将每次处理访问请求的处理结果进行缓存。
在其中一个实施例中,所述系统还包括:
确定模块,用于根据各个访问请求的处理结果所占的数据尺寸及所述套接字连接的缓冲区大小确定所述管道机制的处理数量;
所述发送模块还用于处理完成后,将处理结果按照所述管道机制的处理数量打包并通过所述管道机制发送给所述客户端。
上述实现会话共享的方法和系统,会话共享服务器通过将获取的客户端产生的会话数据作为整体以哈希结构存储在redis中,当需要获取会话数据时,提取客户端的访问请求的会话标识并直接查找对应的会话数据,会话共享服务器与客户端只需进行一次网络交互,减少网络开销,节省网络资源,且数据处理速度快。
附图说明
图1为一个实施例中实现会话共享的方法的系统架构图;
图2为一个实施例中实现会话共享的方法的流程示意图;
图3为一个实施例中查找会话数据的流程示意图;
图4为另一个实施例中实现会话共享的方法的流程示意图;
图5(a)为一个实施例中会话共享服务器未建立管道机制时处理客户端的访问请求的示意图;
图5(b)为一个实施例中会话共享服务器建立管道机制时处理客户端的访问请求的示意图;
图6为一个实施例中实现会话共享的系统的结构示意图;
图7为一个实施例中查找模块的内部结构示意图;
图8为另一个实施例中实现会话共享的系统的结构示意图;
图9为又一个实施例中实现会话共享的系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中实现会话共享的方法的系统架构图。如图1所示,网站被分布部署在不同的应用服务器20上,并设置会话共享服务器30用于存储会话数据,实现各个应用服务器20的会话共享。会话共享服务器30上安装有redis,redis是一种key-value型的分布式存储系统,可支持多种的value类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set,有序集合)和hash(哈希类型)等,存储和读取数据的速率都很高。redis相比Memcached来说,拥有更多的数据结构并支持更丰富的数据操作。
当用户初次在客户端10上访问网站的某一应用服务器20时,该应用服务器20会创建一个Session对象,生成唯一的SessionID,即会话标识,并将SessionID返回给客户端10。会话共享服务器30获取生成的会话标识、用户登录的账号、密码等会话数据,并将获取的会话数据作为整体以哈希结构存储在redis中。当用户访问网站的另一应用服务器20时,共享服务器30接收到客户端10发送的访问请求,提取该访问请求中包含的会话标识,并根据该会话标识在redis中查找客户端10所需的会话数据,再根据该访问请求对查找得到的会话数据执行相应的操作。
如图2所示,一种实现会话共享的方法,包括以下步骤:
步骤S210,获取用户通过客户端访问网站所产生的会话数据。
具体的,当用户在客户端通过浏览器首次访问网站的某一应用服务器时,该应用服务器会创建一个Session对象,生成唯一的SessionID,即会话标识,并将该会话标识返回给客户端。客户端将该SessionID存储在浏览器的cookie(储存在用户本地终端上的数据)中。会话共享服务器获取该Session对象相关的会话数据,会话数据可包括SessionID、用户登录的账号、密码、作用域等信息。
步骤S220,将会话数据作为整体以哈希结构存储在redis中。
具体的,会话共享服务器上安装有redis,可将获取的会话数据作为一个整体以哈希结构存储在redis中。哈希结构是根据关键码-值(key-value)而直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。可将会话数据中的SessionID作为关键码,即key,并设置用户登录的账号、密码、作用域等为该key的键,而会话共享服务器获取的此次会话中产生的会话数据中具体的用户登录的账号、密码及作用域即为键对应的值,即value,但不限于此。例如,会话数据包括SessionID、userid(用户标识)、avatar(用户头像),会话共享服务器在某次用户访问网站的应用服务器时,获取到此次会话产生的会话数据为SessionID1、userid1、avatar1,并将此次获取的会话数据作为一个整体存储在redis中,其存储的代码可如下所示:
HMSET SessionID1userid#userid1avatar#avatar1。
表示给关键码为SessionID1的键userid设置对应的值为userid1,键avatar对应的值为avatar1。可为该存储在redis上的会话数据设置时效期限,在该时效期限内该会话数据会一直存储在redis中,方便用户在不同的时间段访问同一网站的不同的应用服务器也能保持会话,实现会话共享,无需用户重复进行登录,减少用户时间,也无需应用服务器多次生成Session对象,减少服务器资源浪费,减轻服务器的压力。
步骤S230,接收客户端的访问请求。
具体的,当用户通过浏览器访问网站的其它应用服务器时,需保持会话,即获取首次访问该网络的应用服务器时所产生的会话数据,实现不同的应用服务器之间的会话共享,客户端会向会话共享服务器发向访问请求以获取相关的会话数据,或是当客户端需要对会话数据进行操作,例如删除、修改会话数据时,也会向会话共享服务器发送访问请求。
步骤S240,提取访问请求中包含的会话标识。
具体的,会话共享服务器接收客户端的访问请求,该访问请求中包含带有SessionID,即会话标识的浏览器cookie,会话共享服务器可从该cookie中提取该会话标识。
步骤S250,根据会话标识在redis中查找对应的会话数据。
具体的,会话共享服务器提取了客户端发送的访问请求中包含的会话标识后,可根据该会话标识在redis中查找对应的会话数据,并对该会话数据执行相应的操作。
如图3所示,在一个实施例中,步骤S250根据会话标识在redis中查找对应的会话数据,具体包括以下步骤:
步骤S302,将会话标识作为关键码,并在redis中查找是否有与该关键码对应的值,若是,则执行步骤S304,若否,则执行步骤S306。
具体的,会话共享服务器可将会话标识,即SessionID作为关键码在redis中进行查询,并确定该关键码是否有对应的值,若没有,则代表先前没有生成相关的会话数据或是会话数据已经过期,可向客户端返回无法正确获取会话数据的信息。若该关键码有对应的值,可根据客户端发送的访问请求获取该关键码中的全部或部分的值,即为客户端所需的会话数据。
步骤S304,根据访问请求从该值中获取所需的会话数据。
具体的,会话共享服务器可根据客户端发送的访问请求确定客户端所需的会话数据。在redis中,可一次取出关键码全部的值,或是其中部分键对应的值。例如,可通过HGETALL SessionID1一次性取出关键码为SessionID1的全部的值,也可通过HGETSessionID1 userid只取出关键码为SessionID1中键为userid对应的值,或是通过HGETSessionID1 userid name取出关键码为SessionID1中键为userid及name对应的值。会话共享服务器通过将会话数据作为整体以哈希结构存储在redis中,不论客户端需要获取全部或部分的会话数据,只需要进行一次网络交互,只需要消耗一次网络资源,可减少网络开销,节省网络资源。
步骤S306,向客户端返回无法正确获取会话数据的信息。
具体的,若将该会话标识作为关键码进行查找,没有找到对应的值,则向客户端返回无法正确获取会话数据的信息,客户端的浏览器中可跳转网站的登录界面,并提示会话过期或是会话无效,重新让用户进行登录。
步骤S260,根据访问请求对查找得到的会话数据执行相应的操作。
具体的,对会话数据的操作可包括读取、添加、删除、更改等,会话共享服务器根据客户端发送的访问请求可在服务端直接对相应的会话数据进行操作,而无需将会话数据返回客户端由客户端进行操作后再重新存储在会话共享服务器的redis中,可减少客户端与会话共享服务器的网络交互,简化数据操作,使数据处理更加高效快捷。
上述实现会话共享的方法,会话共享服务器通过将获取的客户端产生的会话数据作为整体以哈希结构存储在redis中,当需要获取会话数据时,提取客户端的访问请求的会话标识并直接查找对应的会话数据,会话共享服务器与客户端只需进行一次网络交互,减少网络开销,节省网络资源,且数据处理速度快。
如图4所示,上述实现会话共享的方法,还包括以下步骤:
步骤S402,与客户端建立TCP(Transmission Control Protocol,传输控制协议)连接。
具体的,会话共享服务器与客户端可建立TCP连接,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
步骤S404,建立管道机制。
具体的,会话共享服务器可在redis中建立管道(pipeline)机制,并通过该管道机制批量处理客户端发送的访问请求。
步骤S406,通过管道机制接收客户端通过一个套接字连接发送的多个访问请求。
具体的,客户端可通过一个套接字(socket)连接发起多个访问请求,当redis未建立管道机制时,客户端每向会话共享服务器发起一个访问请求,通常会阻塞并等待处理,会话共享服务器处理完该访问请求后会将结果通过响应报文返回给客户端,共享服务器未在redis中建立管道机制时处理客户端的访问请求的过程可如图5(a)所示,客户端每次发送访问请求及会话共享服务器每次返回处理结果均需要经过网络传输,如此,当访问请求的次数较多时,会造成较大的往返时延,导致会话共享服务器处理客户端的访问请求的性能下降。当会话共享服务器在redis中建立管道机制时,会话共享服务器可一次性接收客户端发送的多个访问请求,其处理过程可如图5(b)所示,会话共享服务器批量处理客户端发送的多个访问请求,并将处理结果打包一起发送返回给客户端,只需进行一次通信,大大降低了往返时延。
步骤S408,处理多个访问请求。
具体的,会话共享服务器处理一次性接收的多个访问请求,并将处理结果打包发送给客户端。
在一个实施例中,步骤S408处理多个访问请求,具体包括:依次处理多个访问请求,并将每次处理访问请求的处理结果进行缓存。
具体的,会话共享服务器可根据接收到的访问请求的次序,依次处理访问请求,当客户端发送的多个访问请求中的每个访问请求均不依赖前一个访问请求的处理结果时,会话共享服务器可将处理结果进行缓存,并在处理完成后,将处理结果打包并通过管道机制返回给客户端。例如,客户端发送的第一访问请求为获取SessionID为SessionID2中的用户账号,第二访问请求为SessionID为SessionID2中的用户头像,则会话共享服务器可依次处理上述两个访问请求,并将获取的用户账号及用户头像打包返回给客户端。
在一个实施例中,在步骤S408处理多个访问请求之后,还包括根据各个访问请求的处理结果所占的数据尺寸及套接字连接的缓冲区大小确定管道机制的处理数量。
具体的,会话共享服务器可根据各个访问请求的处理结果所占的数据尺寸及套接字连接的缓冲区大小确定管道机制的处理数量,当处理结果需要打包的数量越多,则缓存所消耗的内存越多,因此,需要确定管道机制较佳的处理数量,当需要打包的处理结果的数量大于该确定的处理数量时,可分多次打包分别通过管道机制将处理结果返回给客户端,在减少往返时延的同时减少内存消耗,减轻会话共享服务器的压力。
步骤S410,处理完成后,将处理结果打包并通过管道机制发送给客户端。
具体的,在处理完成后,会话共享服务器可按照确定的管道机制的处理数量将处理结果打包分批次通过管道机制返回给客户端。
上述实现会话共享的方法,会话共享服务器可在redis中建立管道机制,批量接收并处理客户端发送的多个访问请求,并将处理结果打包返回给客户端,可有效减少会话共享服务器和客户端的通信次数,减少往返时延,提高数据处理效率及能力。
如图6所示,一种实现会话共享的系统,包括获取模块610、存储模块620、接收模块630、提取模块640、查找模块650及操作模块660。
获取模块610,用于获取用户通过客户端访问网站所产生的会话数据。
具体的,当用户在客户端通过浏览器首次访问网站的某一应用服务器时,该应用服务器会创建一个Session对象,生成唯一的SessionID,即会话标识,并将该会话标识返回给客户端。客户端将该SessionID存储在浏览器的cookie(储存在用户本地终端上的数据)中。会话共享服务器获取该Session对象相关的会话数据,会话数据可包括SessionID、用户登录的账号、密码、作用域等信息。
存储模块620,用于将会话数据作为整体以哈希结构存储在redis中。
具体的,会话共享服务器上安装有redis,可将获取的会话数据作为一个整体以哈希结构存储在redis中。哈希结构是根据关键码-值(key-value)而直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。可将会话数据中的SessionID作为关键码,即key,并设置用户登录的账号、密码、作用域等为该key的键,而会话共享服务器获取的此次会话中产生的会话数据中具体的用户登录的账号、密码及作用域即为键对应的值,即value,但不限于此。例如,会话数据包括SessionID、userid(用户标识)、avatar(用户头像),会话共享服务器在某次用户访问网站的应用服务器时,获取到此次会话产生的会话数据为SessionID1、userid1、avatar1,并将此次获取的会话数据作为一个整体存储在redis中,其存储的代码可如下所示:
HMSET SessionID1userid#userid1avatar#avatar1。
表示给关键码为SessionID1的键userid设置对应的值为userid1,键avatar对应的值为avatar1。可为该存储在redis上的会话数据设置时效期限,在该时效期限内该会话数据会一直存储在redis中,方便用户在不同的时间段访问同一网站的不同的应用服务器也能保持会话,实现会话共享,无需用户重复进行登录,减少用户时间,也无需应用服务器多次生成Session对象,减少服务器资源浪费,减轻服务器的压力。
接收模块630,用于接收客户端的访问请求。
具体的,当用户通过浏览器访问网站的其它应用服务器时,需保持会话,即获取首次访问该网络的应用服务器时所产生的会话数据,实现不同的应用服务器之间的会话共享,客户端会向会话共享服务器发向访问请求以获取相关的会话数据,或是当客户端需要对会话数据进行操作,例如删除、修改会话数据时,也会向会话共享服务器发送访问请求。
提取模块640,用于提取该访问请求中包含的会话标识。
具体的,会话共享服务器接收客户端的访问请求,该访问请求中包含带有SessionID,即会话标识的浏览器cookie,会话共享服务器可从该cookie中提取该会话标识。
查找模块650,用于根据会话标识在redis中查找对应的会话数据。
具体的,会话共享服务器提取了客户端发送的访问请求中包含的会话标识后,可根据该会话标识在redis中查找对应的会话数据,并对该会话数据执行相应的操作。
如图7所示,在一个实施例中,查找模块650包括查找单元652和获取单元654。
查找单元652,用于将会话标识作为关键码,并在redis中查找是否有与该关键码对应的值。
具体的,会话共享服务器可将会话标识,即SessionID作为关键码在redis中进行查询,并确定该关键码是否有对应的值,若没有,则代表先前没有生成相关的会话数据或是会话数据已经过期,可向客户端返回无法正确获取会话数据的信息。若该关键码有对应的值,可根据客户端发送的访问请求获取该关键码中的全部或部分的值,即为客户端所需的会话数据。
获取单元654,用于若有与该关键码对应的值,则根据访问请求从该值中获取所需的会话数据。
具体的,会话共享服务器可根据客户端发送的访问请求确定客户端所需的会话数据。在redis中,可一次取出关键码全部的值,或是其中部分键对应的值。例如,可通过HGETALL SessionID1一次性取出关键码为SessionID1的全部的值,也可通过HGETSessionID1 userid只取出关键码为SessionID1中键为userid对应的值,或是通过HGETSessionID1 userid name取出关键码为SessionID1中键为userid及name对应的值。会话共享服务器通过将会话数据作为整体以哈希结构存储在redis中,不论客户端需要获取全部或部分的会话数据,只需要进行一次网络交互,只需要消耗一次网络资源,可减少网络开销,节省网络资源。
若将该会话标识作为关键码进行查找,没有找到对应的值,则向客户端返回无法正确获取会话数据的信息,客户端的浏览器中可跳转网站的登录界面,并提示会话过期或是会话无效,重新让用户进行登录。
操作模块660,用于根据访问请求对查找得到的会话数据执行相应的操作。
具体的,对会话数据的操作可包括读取、添加、删除、更改等,会话共享服务器根据客户端发送的访问请求可在服务端直接对相应的会话数据进行操作,而无需将会话数据返回客户端由客户端进行操作后再重新存储在会话共享服务器的redis中,可减少客户端与会话共享服务器的网络交互,简化数据操作,使数据处理更加高效快捷。
上述实现会话共享的系统,会话共享服务器通过将获取的客户端产生的会话数据作为整体以哈希结构存储在redis中,当需要获取会话数据时,提取客户端的访问请求的会话标识并直接查找对应的会话数据,会话共享服务器与客户端只需进行一次网络交互,减少网络开销,节省网络资源,且数据处理速度快。
如图8所示,在另一个实施例中,上述实现会话共享的系统,除了包括获取模块610、存储模块620、接收模块630、提取模块640、查找模块650及操作模块660,还包括连接模块670、管道模块680、处理模块690及发送模块700。
连接模块670,用于与客户端建立TCP连接。
具体的,会话共享服务器与客户端可建立TCP连接,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
管道模块680,用于建立管道机制。
具体的,会话共享服务器可在redis中建立管道(pipeline)机制,并通过该管道机制批量处理客户端发送的访问请求。
接收模块630还用于通过管道机制接收客户端通过一个套接字连接发送的多个访问请求。
具体的,客户端可通过一个套接字(socket)连接发起多个访问请求,当redis未建立管道机制时,客户端每向会话共享服务器发起一个访问请求,通常会阻塞并等待处理,会话共享服务器处理完该访问请求后会将结果通过响应报文返回给客户端,共享服务器未在redis中建立管道机制时处理客户端的访问请求的过程可如图5(a)所示,客户端每次发送访问请求及会话共享服务器每次返回处理结果均需要经过网络传输,如此,当访问请求的次数较多时,会造成较大的往返时延,导致会话共享服务器处理客户端的访问请求的性能下降。当会话共享服务器在redis中建立管道机制时,会话共享服务器可一次性接收客户端发送的多个访问请求,其处理过程可如图5(b)所示,会话共享服务器批量处理客户端发送的多个访问请求,并将处理结果打包一起发送返回给客户端,只需进行一次通信,大大降低了往返时延。
处理模块690,用于处理多个访问请求。
具体的,会话共享服务器处理一次性接收的多个访问请求,并将处理结果打包发送给客户端。
在一个实施例中,处理模块690还用于依次处理多个访问请求,并将每次处理访问请求的处理结果进行缓存。
具体的,会话共享服务器可根据接收到的访问请求的次序,依次处理访问请求,当客户端发送的多个访问请求中的每个访问请求均不依赖前一个访问请求的处理结果时,会话共享服务器可将处理结果进行缓存,并在处理完成后,将处理结果打包并通过管道机制返回给客户端。例如,客户端发送的第一访问请求为获取SessionID为SessionID2中的用户账号,第二访问请求为SessionID为SessionID2中的用户头像,则会话共享服务器可依次处理上述两个访问请求,并将获取的用户账号及用户头像打包返回给客户端。
发送模块700,用于处理完成后,将处理结果打包并通过管道机制发送给所述客户端。
上述实现会话共享的系统,会话共享服务器可在redis中建立管道机制,批量接收并处理客户端发送的多个访问请求,并将处理结果打包返回给客户端,可有效减少会话共享服务器和客户端的通信次数,减少往返时延,提高数据处理效率及能力。
如图9所示,在一个实施例中,上述实现会话共享的系统,除了包括获取模块610、存储模块620、接收模块630、提取模块640、查找模块650、操作模块660、连接模块670、管道模块680、处理模块690及发送模块700,还包括确定模块710。
确定模块710,用于根据各个访问请求的处理结果所占的数据尺寸及套接字连接的缓冲区大小确定管道机制的处理数量。
具体的,会话共享服务器可根据各个访问请求的处理结果所占的数据尺寸及套接字连接的缓冲区大小确定管道机制的处理数量,当处理结果需要打包的数量越多,则缓存所消耗的内存越多,因此,需要确定管道机制较佳的处理数量,当需要打包的处理结果的数量大于该确定的处理数量时,可分多次打包分别通过管道机制将处理结果返回给客户端,在减少往返时延的同时减少内存消耗,减轻会话共享服务器的压力。
发送模块700还用于处理完成后,将处理结果按照管道机制的处理数量打包并通过管道机制发送给客户端。
具体的,在处理完成后,会话共享服务器可按照确定的管道机制的处理数量将处理结果打包分批次通过管道机制返回给客户端。
上述实现会话共享的系统,会话共享服务器可根据各个访问请求的处理结果所占的数据尺寸及套接字连接的缓冲区大小确定管道机制的处理数量,当需要打包的处理结果的数量大于该确定的处理数量时,可分多次打包分别通过管道机制将处理结果返回给客户端,在减少往返时延的同时减少内存消耗,减轻会话共享服务器的压力。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种实现会话共享的方法,其特征在于,应用于会话共享服务器,包括以下步骤:
获取用户通过客户端访问网站的某一应用服务器所产生的会话数据;所述网站被分布部署在不同的应用服务器上;
将所述会话数据作为整体以哈希结构存储在redis中;所述redis安装在所述会话共享服务器上;
接收所述用户访问所述网站的另一应用服务器时所述客户端发送的访问请求;
提取所述访问请求中包含的会话标识;
根据所述会话标识在所述redis中查找对应的会话数据;
根据所述访问请求对查找得到的会话数据执行相应的操作;
所述方法还包括:
与客户端建立TCP连接;
建立管道机制;
通过所述管道机制接收所述客户端通过一个套接字连接发送的多个访问请求;
处理所述多个访问请求;
处理完成后,将处理结果打包并通过所述管道机制发送给所述客户端。
2.根据权利要求1所述的实现会话共享的方法,其特征在于,所述根据所述会话标识在所述redis中查找对应的会话数据,具体包括:
将所述会话标识作为关键码,并在所述redis中查找是否有与所述关键码对应的值;
若有与所述关键码对应的值,则根据所述访问请求从所述值中获取所需的会话数据。
3.根据权利要求1所述的实现会话共享的方法,其特征在于,所述处理所述多个访问请求,具体包括:
依次处理所述多个访问请求,并将每次处理访问请求的处理结果进行缓存。
4.根据权利要求3所述的实现会话共享的方法,其特征在于,在所述处理所述多个访问请求的步骤之后,还包括:
根据各个访问请求的处理结果所占的数据尺寸及所述套接字连接的缓冲区大小确定所述管道机制的处理数量;
所述处理完成后,将处理结果打包并通过所述管道机制发送给所述客户端具体为:
处理完成后,将处理结果按照所述管道机制的处理数量打包并通过所述管道机制发送给所述客户端。
5.一种实现会话共享的系统,其特征在于,应用于会话共享服务器,包括:
获取模块,用于获取用户通过客户端访问网站的某一应用服务器所产生的会话数据;所述网站被分布部署在不同的应用服务器上;
存储模块,用于将所述会话数据作为整体以哈希结构存储在redis中;所述redis安装在所述会话共享服务器上;
接收模块,用于接收所述用户访问所述网站的另一应用服务器时所述客户端发送的访问请求;
提取模块,用于提取所述访问请求中包含的会话标识;
查找模块,用于根据所述会话标识在所述redis中查找对应的会话数据;
操作模块,用于根据所述访问请求对查找得到的会话数据执行相应的操作;
连接模块,用于与客户端建立TCP连接;
管道模块,用于建立管道机制;
所述接收模块还用于通过所述管道机制接收所述客户端通过一个套接字连接发送的多个访问请求;
处理模块,用于处理所述多个访问请求;
发送模块,用于处理完成后,将处理结果打包并通过所述管道机制发送给所述客户端。
6.根据权利要求5所述的实现会话共享的系统,其特征在于,所述查找模块包括:
查找单元,用于将所述会话标识作为关键码,并在所述redis中查找是否有与所述关键码对应的值;
获取单元,用于若有与所述关键码对应的值,则根据所述访问请求从所述值中获取所需的会话数据。
7.根据权利要求5所述的实现会话共享的系统,其特征在于,所述处理模块还用于依次处理所述多个访问请求,并将每次处理访问请求的处理结果进行缓存。
8.根据权利要求7所述的实现会话共享的系统,其特征在于,所述系统还包括:
确定模块,用于根据各个访问请求的处理结果所占的数据尺寸及所述套接字连接的缓冲区大小确定所述管道机制的处理数量;
所述发送模块还用于处理完成后,将处理结果按照所述管道机制的处理数量打包并通过所述管道机制发送给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610098654.1A CN105812351B (zh) | 2016-02-23 | 2016-02-23 | 实现会话共享的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610098654.1A CN105812351B (zh) | 2016-02-23 | 2016-02-23 | 实现会话共享的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105812351A CN105812351A (zh) | 2016-07-27 |
CN105812351B true CN105812351B (zh) | 2019-04-09 |
Family
ID=56466412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610098654.1A Active CN105812351B (zh) | 2016-02-23 | 2016-02-23 | 实现会话共享的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105812351B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569929A (zh) * | 2016-10-26 | 2017-04-19 | 珠海许继芝电网自动化有限公司 | 一种应用于监控系统的实时数据存取方法及系统 |
CN106534372A (zh) * | 2016-12-26 | 2017-03-22 | 浪潮通信信息系统有限公司 | 一种终端设备与终端管理系统远程通信交互和管理的方法 |
CN109150936A (zh) * | 2017-06-19 | 2019-01-04 | 北京宝兰德软件股份有限公司 | 一种分布式集群中会话对象Session的共享方法及装置 |
CN107623714B (zh) * | 2017-07-28 | 2018-08-03 | 平安科技(深圳)有限公司 | 数据共享方法、装置及计算机可读存储介质 |
CN107370818A (zh) * | 2017-07-31 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种分布式会话对象管理方法及系统 |
CN107943597A (zh) * | 2017-08-11 | 2018-04-20 | 成都萌想科技有限责任公司 | 一种基于memcache的线程安全消息队列 |
CN107682397B (zh) * | 2017-08-28 | 2019-02-26 | 平安科技(深圳)有限公司 | 客户资源获取方法、装置、终端设备及存储介质 |
EP3785398B1 (de) * | 2018-04-26 | 2022-04-20 | SECLOUS GmbH | Multi-faktor zugriffskontrollverfahren in anonymen systemen |
CN108710661B (zh) * | 2018-05-11 | 2020-10-27 | 武汉轻工大学 | 一种基于内存顺序表实现文本文件的数据管理方法和装置 |
CN109547481A (zh) * | 2018-12-28 | 2019-03-29 | 深圳竹云科技有限公司 | 一种基于Redis有序集合和令牌方式的网站用户会话管理方法 |
CN110839084B (zh) * | 2019-11-19 | 2022-04-05 | 中国建设银行股份有限公司 | 会话管理方法、装置、设备和介质 |
CN111385358B (zh) * | 2020-03-04 | 2023-04-18 | 海南金盘智能科技股份有限公司 | 会话控制对象的同步方法、装置和服务器 |
CN111698299B (zh) * | 2020-05-28 | 2023-08-01 | 平安银行股份有限公司 | Session对象复制方法、装置、分布式微服务架构及介质 |
CN111711621A (zh) * | 2020-06-05 | 2020-09-25 | 平安科技(深圳)有限公司 | 基于集群环境的电话会话管理方法、装置及计算机设备 |
CN114363397B (zh) * | 2021-12-14 | 2024-08-06 | 阿里巴巴(中国)有限公司 | 会话处理方法、装置、电子设备和存储介质 |
CN114338689A (zh) * | 2021-12-30 | 2022-04-12 | 中国工商银行股份有限公司 | 会话保持方法、装置、设备、介质和程序产品 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399743C (zh) * | 2003-12-22 | 2008-07-02 | 国际商业机器公司 | 会话共享的方法与系统 |
CN101753592B (zh) * | 2008-11-28 | 2013-04-17 | 国际商业机器公司 | 用于数据处理的方法和系统 |
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
CN103595618A (zh) * | 2013-11-08 | 2014-02-19 | 北京奇虎科技有限公司 | 一种用于保持即时通信会话连续性的方法、服务器及系统 |
CN104580226A (zh) * | 2015-01-15 | 2015-04-29 | 上海瀚之友信息技术服务有限公司 | 一种共享会话数据的系统和方法 |
CN104679884A (zh) * | 2015-03-16 | 2015-06-03 | 北京奇虎科技有限公司 | 数据库的数据分析方法、装置以及系统 |
CN105338063A (zh) * | 2015-09-30 | 2016-02-17 | 北京奇虎科技有限公司 | 多个服务器共享用户会话的方法及装置 |
-
2016
- 2016-02-23 CN CN201610098654.1A patent/CN105812351B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399743C (zh) * | 2003-12-22 | 2008-07-02 | 国际商业机器公司 | 会话共享的方法与系统 |
CN101753592B (zh) * | 2008-11-28 | 2013-04-17 | 国际商业机器公司 | 用于数据处理的方法和系统 |
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
CN103595618A (zh) * | 2013-11-08 | 2014-02-19 | 北京奇虎科技有限公司 | 一种用于保持即时通信会话连续性的方法、服务器及系统 |
CN104580226A (zh) * | 2015-01-15 | 2015-04-29 | 上海瀚之友信息技术服务有限公司 | 一种共享会话数据的系统和方法 |
CN104679884A (zh) * | 2015-03-16 | 2015-06-03 | 北京奇虎科技有限公司 | 数据库的数据分析方法、装置以及系统 |
CN105338063A (zh) * | 2015-09-30 | 2016-02-17 | 北京奇虎科技有限公司 | 多个服务器共享用户会话的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105812351A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105812351B (zh) | 实现会话共享的方法和系统 | |
KR102133951B1 (ko) | 짧은 링크 처리 방법, 디바이스, 및 서버 | |
KR101662685B1 (ko) | 심층 패킷 검사 방법 및 기기, 그리고 코프로세서 | |
KR101153138B1 (ko) | 클라이언트 기반 웹 크롤링 시스템 및 방법 | |
KR102097881B1 (ko) | 단축 링크를 처리하는 방법 및 장치, 및 단축 링크 서버 | |
CN107025234B (zh) | 一种信息推送方法及缓存服务器 | |
US9516091B2 (en) | Web page script management | |
US20080222244A1 (en) | Method and apparatus for acceleration by prefetching associated objects | |
US10630758B2 (en) | Method and system for fulfilling server push directives on an edge proxy | |
CN104184832B (zh) | 网络应用中的数据提交方法及装置 | |
US6848000B1 (en) | System and method for improved handling of client state objects | |
JP2004094805A (ja) | ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム | |
CN105550338A (zh) | 一种基于HTML5应用缓存的移动Web缓存优化方法 | |
CN101132420A (zh) | 一种基于ssl vpn的链接改写方法和设备 | |
CN105191171B (zh) | 用于设备通信的有效的用户、服务或内容表述 | |
CN102882974A (zh) | 一种通过网站识别版本号节省网站访问资源的方法 | |
WO2014161261A1 (zh) | 数据的存储方法及装置 | |
US8352442B2 (en) | Determination of an updated data source from disparate data sources | |
WO2013153694A1 (ja) | クライアントとサーバ間の通信を中継する通信装置、システム、及び方法 | |
WO2020224241A1 (zh) | 一种云通信方法及装置、用户设备、网络设备 | |
CN104615597A (zh) | 浏览器中清除缓存文件的方法、装置和系统 | |
US8112495B2 (en) | Transmitting information about distributed group memberships | |
JP5479710B2 (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
WO2017000540A1 (zh) | 数据查询方法及装置 | |
CN110417860A (zh) | 文件传输管理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |