CN104580226A - 一种共享会话数据的系统和方法 - Google Patents
一种共享会话数据的系统和方法 Download PDFInfo
- Publication number
- CN104580226A CN104580226A CN201510020027.1A CN201510020027A CN104580226A CN 104580226 A CN104580226 A CN 104580226A CN 201510020027 A CN201510020027 A CN 201510020027A CN 104580226 A CN104580226 A CN 104580226A
- Authority
- CN
- China
- Prior art keywords
- session data
- session
- request
- data
- caching server
- 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.)
- Granted
Links
Classifications
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明属于计算机应用技术领域,具体为一种共享会话数据的系统和方法。本发明系统至少一个Web应用服务器、一个缓存服务器;Web应用服务器用于处理客户端的HTTP请求、完成所请求业务逻辑的服务器,该服务器是基于Java的Servlet容器,由共享会话处理请求过滤器、会话数据处理单元、会话数据临时存储单元,以及业务逻辑处理单元组成;缓存服务器用于存放会话数据。本发明将会话数据存储至缓存服务器中,可以被多个Web应用服务器所共享,从而减少Web应用服务器的内存占用。本发明可避免在Web应用服务器上的会话数据丢失的问题,避免集群节点间进行会话数据复制带来的网络性能损耗和会话数据不一致性问题,加快了访问会话数据的速度,提高了会话数据处理的性能。
Description
技术领域
本发明属于计算机应用技术领域,特别涉及一种共享会话数据的系统和方法。
背景技术
网络应用都是无状态的,对于这些应用而言,无法对客户端进行标识,因而无法得知使用该应用的客户端访问状态。为了保证应用客户端在访问是可标识、有状态的,目前,大多数的网络应用都会使用到会话。
在网络应用中会话指的是,用户通过互联网应用的客户端(比如:浏览器)打开一个应用开始直至关闭这个客户端的这段时间内,网络应用使用会话标识来标记客户端,而网络应用则使用会话标识对应的会话数据来记录客户端的状态数据。通过会话数据,网络应用可以保持客户端的状态数据(常见的状态数据有登录数据、购物车数据等)。
就目前常用的技术,会话标识是打开客户端访问应用时,由应用产生一个全局的唯一串,这个唯一串通过网格协议写入客户端的存储区域中(比如:浏览器的Cookie、手机客户端存放数据的目录)。与此同时,应用在服务器的内存为这个会话标识创建一块独立的空间,用于存放客户端的特定的数据。当客户端产生状态变化(比如进行了登录操作)后,应用在服务器这个客户端会话标识的内存空间中,将该客户端登录后的数据(如:用户名、登录时间等)放入该空间。等下一次客户端访问应用时,通过客户端会话标识应用可以知道当前客户端登录的数据。
为了能支持更大的访问量,应用服务器一般会采用服务器集群,由多台服务器一起提供服务,以分散每台服务器的访问压力。由于客户端的会话数据是存放在服务器内存中的,如果当前存储客户端会话数据在一台服务器上,该用户下次访问到另外一台服务器上时就无法获取该客户端的会话数据。目前常用技术而言,解决集群环境中会话数据各节点之间共享的方式,主要有以下几种:
1、黏性会话,即在客户端会话标识上添加上服务器集群的节点编号、或者根据客户端的源IP地址通过哈希算法算出一个数值,再通过该数值计算应该访问哪个服务器集群的节点,使得同一客户端的访问均由同一台服务器进行处理,这样可以避免同一客户端的不同请求由不同的服务器进行处理,而带来的会话数据不一致的情况。但这种方式使得会话数据占用的内存在各台服务器分布不均匀。对于用户而言,只有一个节点为其提供服务,若该节点宕机,将导致被分配到该节点的会话数据会部丢失,存在单点故障风险。
2、会话复制,在服务器集群节点间同步客户端的会话数据,使用客户端的会话数据在服务器集群节点的内存中保持一致,这样无论是客户端访问到哪一台服务器,均可以获取自己的会话数据。该方式需要使用内存数据同步等技术手段对各节点内存中的会话数据进行同步,来保证每个服务器节点内存中的会话数据是一致的,但同步需要耗费一定的网络资源,势必会造成数据同步的延迟,使用时效率和性能较差。另外,若会话数据很多,会占用大量的节点内存资源,如果会话数据量超出节点内存的大小,将会导致节点宕机,甚至整个服务器集群宕机。
3、利用于Web应用服务器自带的功能,将会话数据存放至Memcached之类的缓存服务器中,从而实现会话数据的共享,但是该方式只能应用在某一Web应用服务器中,对于应用服务器升级或者替换存在一定的风险。
从上述几种处理共享会话数据的方式来看,都存在着不足,因而现有技术是有待改进和提高的。
发明内容
本发明的目的在于提供一种高扩展性和高性能的共享会话数据的系统和方法。
本发明提供的共享会话数据的系统,其结构框图如图1所示。该共享会话数据系统包括:
至少一个Web应用服务器;
一个缓存服务器A14。
所述Web应用服务器,用于处理客户端的HTTP请求并完成所述HTTP请求业务逻辑;本发明中,Web应用服务器是基于Java的Servlet容器,所述Web应用服务器包括:共享会话处理请求过滤器A11、会话数据处理单元A12、会话数据临时存储单元A13和以及业务逻辑处理单元A15;
所述缓存服务器A14,用于存放会话数据;会话数据一般是有过期时间的,因此,本发明中的缓存服务器需要具备以下这些特性:以键值为存储结构,缓存数据的读写性能高,缓存数据有过期时间,过期数据的能自动清理;
所述Web应用服务器接收到由客户端发送的HTTP请求后,把请求的HTTP数据转换成为请求对象,并将该请求对象交由共享会话处理请求过滤器A11进行处理;
所述Web应用服务器程序中通过请求对象获取会话数据,所述共享会话处理请求过滤器A11在拦截到请求对象后,从请求对象中获取会话数据的逻辑进行改写,所述共享会话处理请求过滤器A11将会话数据在所述Web应用服务器内存中进行读写操作的默认行为,更改为在独立的缓存服务器中进行,并将请求会话数据存放至缓存服务器A14中;
所述会话数据处理单元A12,用于与所述缓存服务器A14针对会话数据进行交互操作,并向A11提供会话数据操作指令;
所述会话数据临时存取单元A13,用于临时存储当前HTTP请求中所述会话数据处理单元A12向所述缓存服务器A14获取的会话数据;
所述业务逻辑处理单元A15是用于处理所述Web应用服务器接收到的http请求所表示的业务逻辑,接收共享会话处理请求过滤器A11输出的包含会话数据的请求对象。
本发明中,所述会话数据处理单元A12,用于处理会话数据如何在缓存服务器A14进行读出、写入、更新和删除等操作。该处理单元主要包括缓存服务器读写模块A121和会话数据序列化模块A122。
所述缓存服务器读写模块A121,用于Web应用服务器与缓存服务器14进行数据通信,管理Web应用服务器与缓存服务器14之间的数据通信连接。
所述缓存服务器读写模块A121还包括对缓存服务器14的操作,即对缓存服务器14进行会话数据的读出、写入、更新和删除操作。
所述缓存服务器读写模块A121的读出操作,用于通过会话标识读取存放于缓存服务器中的会话数据。
所述缓存服务器读写模块A121的写入操作,用于在缓存服务器中写入新创建的会话数据。
所述缓存服务器读写模块A121的更新操作,用于将更新后的会话数据更新至当前会话标识的会话数据中。
所述缓存服务器读写模块A121的删除操作,用于当客户端退出登录或者注销会话时,从缓存服务器中删除会话数据。
为了避免频繁地对缓存服务器进行读、写操作,在缓存服务器读写模块A121进行读出操作后,若能读取到会话数据时,将会话数据保存至会话数据临时存取单元A13中临时存放。
所述会话数据临时存取单元A13,用于临时存储当前请求中的数据,Web应用服务器使用一个线程处理一个客户端的HTTP请求,该临时存储单元的内存空间是与请求线程相关的,因此,不同的访问请求这块内存空间是各自独立、互不影响的。
使用临时存储单元A13的数据写入操作将数据存放至会话数据临时存取单元A13的内存容器中,通过get方法将会话数据临时存取单元A13的内存容器中当前请求的会话数据读取出来使用。会话数据在该单元中多次读取和多次更新。
当前请求需要再次读取会话数据时,缓存服务器读写模块A121首先检查会话数据临时存取单元A13中是否存放有当前请求的会话数据,即通过临时存储单元A13的数据读取操作获取的数据是否是空来判断当前请求的会话数据临时存取单元是否已经存放有会话数据。若已经存在,则不再对缓存服务器进行读取操作,而是直接将存放于会话数据临时存取单元A13中的会话数据返回。若不存在,则对缓存服务器14进行会话数据的读取操作,并将读取到的会话数据保存至会话数据临时存取单元A13以便于之后的再次使用。
所述业务逻辑处理单元A15是用于处理所述Web应用服务器接收到的http请求所表示的业务逻辑,接收共享会话处理请求过滤器A11输出的包含会话数据的请求对象;业务逻辑处理单元A15用于处理一个Web请求,以完成该请求所表示的业务逻辑的单元。业务逻辑处理单元A15主要包括一些涉及业务逻辑的数据库操作,以及与其他业务系统进行数据通信及交换操作。
但在本实例中,业务逻辑处理单元A15作为本发明所述共享会话数的使用单元,该单元通过在共享会话处理请求过滤器A11中所改写的HttpServletRequest对象,通过该对象的getSession方法从共享会话中获取会话数据,以完成Web请求中涉及用户的状态数据。比如:业务逻辑处理单元A15从共享会话中获取当前登录的用户名,用以确定该业务逻辑是在哪个用户上进行操作的。
在当前请求完成业务逻辑处理单元A15中的业务逻辑后,会再次经过共享会话处理请求过滤器A11,这时共享会话处理请求过滤器A11将从会话数据临时存取单元A13中临时存放的会话数据取出;会话数据通过会话数据处理单元A12(其中的缓存服务器读写模块A121)的更新操作将会话数据更新至缓存服务器中,以便于客户端的下一次请求使用。在更新完成后,共享会话处理请求过滤器A11将会话数据临时存取单元A13中临时存放的会话数据清除,以便于Web服务器的该请求线程为其他客户端提供服务。
会话数据在写入或者更新时,缓存服务器读写模块A121根据所配置的默认会话失效时间重置当前会话数据的生存时间。这一功能主要用于用户在一定的时间内未操作客户端时,存放于缓存服务器中的会话数据就会失效。当会话数据尚未失效前,若用户在客户端上进行操作时,存放于缓存服务器中的该会话数据可用的生存时间将重置为所配置的默认会话失效时间。
所述会话数据序列化模块A122,用于将以对象形式表现的会话数据序列化成为在缓存服务器14中存储的字节数据,同时也能将缓存服务器14中存储的字节数据反序列化成为应用程序中的对象。因此,被会话数据序列化模块A122处理过的数据是可逆的,能完整地将序列化后的字节再反序列化成为数据对象。
会话数据是以键值对(Key-Value)的方式存放在缓存服务器14中。一个会话数据在缓存服务器14中的键为这个会话的会话标识,值为这个会话数据本身。
会话数据序列化模块A122将会话标识按ASCII编码的方式序列化成为一串字节作为会话数据缓存的键。
会话数据本身是一个复杂的对象,其本身包括了诸多会话元信息和会话数据信息。会话元信息用于描述会话数据本身,比如:会话标识、会话过期时间、会话的最后一次访问时间、会话是否已过期等数据。而会话数据是应用需要存储的数据,主要是以键值方式存放的,比如在用户登录后,会话数据将会以一个固定的名称作为键,而将用户登录后的用户信息作为值在会话数据中保存,一个会话数据可以包含多个这样的键值数据。
在需要写入缓存服务器A14之前,会话数据序列化模块A122将会话数据对象序列化成为一串字节后再由缓存服务器读写模块A121将这串字节存放至缓存服务器中。
在需要从缓存服务器A14通过会话标识读取会话数据时,先由会话数据序列化模块A122将会话标识转换成为字节,通过这串字节由缓存服务器读写模块A121从缓存服务器14中查找所对应的会话数据。如果可以在缓存服务器14找到所对应的会话数据,则通过缓存服务器读写模块A121将存于缓存服务器14中的字节数据读出,再由会话数据序列化模块A122将这些字节数据反序列化为应用中可以直接使用的会话数据对象。
上述共享会话数据系统,由于会话标识是在存储于客户端中的,因此,在本发明中,Web应用服务器可以是多台服务器组成的集群,客户端每次的请求都会将会话标识通过HTTP协议发送给Web应用服务器集群,集群中的一个Web应用服务器会处理客户端发送的HTTP请求,处理请求的Web应用服务器在收到请求后获取会话标识,通过其中的会话数据处理单A12进行会话数据的读写操作。
本发明还提供共享会话数据方法,该方法包括HTTP客户端与HTTP服务端的Web应用服务器之间的交互。HTTP客户端可以是Web浏览器、手机应用APP等基于HTTP协议的客户端。对于Web浏览器,需要开启浏览器客户端的Cookie存储,以便于将会话标识存储于Cookie当中;对于手机应用APP等非Web浏览器的客户端,需要有存放应用数据的空间,以便于存储会话标识。图2为该方法的流程图,包括以下步骤S201~S208:
S201、HTTP客户端(Web浏览器客户端或手机应用APP客户端)通过HTTP协议向Web应用服务器发送基于HTTP的请求,以使得Web应用服务器处理业务逻辑给客户端数据响应;
S202、HTTP客户端发送的HTTP请求通过在Web应用服务器的共享会话处理HTTP请求过滤器。该过滤器将从HTTP协议名为Cookie的HTTP请求头中获取会话标识(基于Web浏览器的客户端),或者从HTTP请求参数或者自定义的HTTP请求头中获取会话标识(基于手机应用的客户端)。通过是否可以从请求数据中获取会话标识,由以下步骤S203、S204进行处理;
S203、若共享会话处理HTTP请求过滤器能从HTTP请求中获取会话标识,通过该会话标识从缓存服务器中查找与该会话标识所对应的会话数据;
S204、若共享会话处理HTTP请求过滤器无法从HTTP请求中获取会话标识,将生成新的会话标识,待HTTP请求处理完成后将该会话标识通过HTTP响应写入或者告知客户端。基于Web浏览器的客户端,将该会话标识存储于指定名称、域名和路径下的Cookie中;基于手机应用的客户端,将会话标识存储于当前手机应用的存储空间中,以便于下一次的HTTP请求时能获取该会话标识并发送请求。
上述步骤S203通过会话标识是否能在缓存服务器中查找到会话数据,需要有S205和S206两个步骤处理:
S205、通过会话标识能从缓存服务器中获取会话数据时,则将从缓存中读取该数据,并将其反序列化成为应用中所能识别的数据对象。为了避免在一个请求中频繁地从缓存服务器中读取会话数据,将该会话数据存放于与当前请求线程相关的内存空间中,仅有当前请求可以访问该内存空间中的会话数据。
当同一个请求需要再次获取会话数据时,将优先从当前请求线程相关的内存空间中获取会话数据,而不需要再次从缓存服务器中通过会话标识去读取会话数据。
S206、若通过会话标识无法从缓存服务器获取会话数据时,则将在当前请求线程相关的内存空间中新创建一个空的会话数据对象,以便于该请求的后续操作对该会话数据进行读写。
上述步骤S204在产生新的会话标识后,进行步骤S206处理,通过这个新的会话标识在当前请求的内存空间中新创建一个空的会话数据对象。
S207、上述步骤S205、S206处理完成后,当前请求需要使用会话数据或者修改会话数据内容时,将直接从当前请求的内存空间中获取会话数据进行读写。该步骤的目的是为了避免一个请求中多次、频繁地对会话数据进行读写操作。
在该步骤中,从请求内存中每读取一次会话数据,都会更新该会话数据的最后访问时间,该时间用于判断会话数据是否在一定的时间段内没有被访问时,能将该会话数据进行失效处理。
S208、在HTTP请求的业务逻辑处理完成,在HTTP响应给客户端之前,共享会话处理HTTP请求过滤器会从当前请求的内存空间中获取会话数据。在获取会话数据后,将该会话数据对象序列化成为可以在缓存服务器中存储的字节数据,之后通过该会话数据的会话标识将序列化后的会话数据对象写入缓存服务器当中。在写入缓存服务器时,需要设置写入会话数据在缓存服务器中的过期时间,设置过期时间的目的是为了让该会话数据在指定的时间段内没有被访问时,该会话数据将自动失效。所设置的过期时间由Web应用服务器在服务启动时,在配置文件中读取,并作为全局的配置项保存在Web应用服务器的内存中。
共享会话处理HTTP请求过滤器在会话数据写入缓存服务器完成之后,将当前请求内存空间中的会话数据清除,以便于该请求线程可以为其他的HTTP请求服务。
本发明有益效果:
本发明将会话数据存储至缓存服务器中,这些会话数据可以被多个Web应用服务器所共享,因此在Web应用服务器内存中不再需要存储这些会话数据,从而减少了Web应用服务器的内存占用。本发明也避免了在使用黏性会话的集群方案中,某一节点的Web应用服务器宕机,导致在该Web应用服务器上的会话数据丢失的问题。
本发明所述的共享会话数据的系统和方法,也避免了在集群环境中会话数据被存储在不同的集群节点上,进而避免了集群节点间进行会话数据复制带来的网络性能损耗和会话数据不一致性。
本发明为了减少缓存服务器的读写次数,在当前请求内存空间中存储了会话数据,以使得同一请求的多次访问会话数据,能在请求内存中进行,从而加快了访问会话数据的速度,提高了会话数据处理的性能。
附图说明
图1为共享会话数据系统的实施例结构框图。
图2为共享会话数据方法流程框图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
根据图1所示,本实施例的共享会话数据系统包括:
至少一个Web应用服务器;
一个缓存服务器A14。
所述Web应用服务器,是用于处理客户端的HTTP请求,完成所请求业务逻辑的服务器。本实施例中的Web应用服务器是基于Java的Servlet容器,在本发明中,其中有以下部分组成:共享会话处理请求过滤器A11、会话数据处理单元A12、会话数据临时存储单元A13,以及业务逻辑处理单元A15。
所述缓存服务器A14,用于存放会话数据,在本发明中,存放于缓存服务器中的数据是会话数据,会话数据一般是有过期时间的,因此本发明中的缓存服务器需要具备以下这些特性:以键值为存储结构、缓存数据的读写性能高、缓存数据有过期时间、过期数据的自动清理功能。本实施例的缓存服务器采用开源的Redis,但本发明的并不局限于使用Redis,能满足以上特性的缓存服务器均可以作为本发明中的缓存服务器A14。
在本发明的实施例中,当Web应用服务器接收到由客户端发送的HTTP请求后,交由共享会话处理请求过滤器A11进行处理。
所述共享会话处理请求过滤器A11。首先该过滤器会拦截客户端的HTTP请求,由于会话数据是在应用程序中是通过请求对象获取的,因此,通过该过滤器拦截到客户端的HTTP请求后,将请求对象HttpServletRequest中获取会话数据的逻辑进行改写,将应用服务器在服务器内存中进行会话数据读写操作的默认行为,更改为在独立的缓存服务器中进行。
本实施例的共享会话处理请求过滤器A11是基于Apache Shiro框架中的ShiroFilter过滤器的基础上扩展实现的。
当共享会话处理请求过滤器A11收到HTTP请求后,通过ShiroFilter的实现,将请求对象重新包装。其通过改写了HttpServletRequest中的getSession方法,将默认从当前服务应用内存中获取会话数据的方式,改为通过其他方式去获取当前会话数据。
Apache Shiro框架ShiroFilter中会使用到DefaultWebSessionManager类,该类用于处理getSession方法从何种途径去获取当前请求会话数据的管理器,在该框架的AbstractSessionDAO类中可以自定义从何种途径去对请求会话数据进行读出、写入、更新、删除等操作。在本实施例中,通过扩展了DefaultWebSessionManager类和AbstractSessionDAO类,将请求会话数据存放至缓存服务器A14当中。
在DefaultWebSessionManager中本实施例扩展了默认的会话失效时间、会话标识在Web浏览器客户端Cookie的默认名称、会话标识在Web浏览器客户端Cookie存放的默认域和默认路径。这些扩展可用于不同应用的各种场景,不同的应用通过配置文件可以再将改写这些默认值。
本实施例通过扩展Apache Shiro的AbstractSessionDAO类,在扩展后的类作为本实施例系统中的会话数据处理单元A12。
所述会话数据处理单元A12,用于处理会话数据如何在缓存服务器A14进行读出、写入、更新和删除等操作。在该处理单元中主要包括缓存服务器读写模块A121和会话数据序列化模块A122。
所述缓存服务器读写模块A121,该模块用于Web应用服务器与缓存服务器14进行数据通信,这个模块管理着Web应用服务器与缓存服务器14之间的数据通信连接。
Web应用服务器与缓存服务器14之间的数据通信连接,为了减少创建数据通信链路而带来的性能损耗,本实施例采用连接池的方式实现,通过Web应用服务器并发请求访问量的的大小具体配置连接池中连接的数量。
所述缓存服务器读写模块A121还包括了对缓存服务器14的操作。一个缓存服务器读写模块A121至少包括有对缓存服务器进行会话数据的读出、写入、更新和删除操作。
所述缓存服务器读写模块A121的读出操作。该操作用于通过会话标识读取存放于缓存服务器中的会话数据。本实施例中的读出操作是基于Redis缓存服务器的GET命令,以会话标识作为GET命令的参数从Redis缓存服务器读取会话数据。
所述缓存服务器读写模块A121的写入操作。该操作用于在缓存服务器中写入新创建的会话数据。本实施例中的写入操作是基于Redis缓存服务器的SETEX命令,以会话标识、会话数据和会话数据的过期时间(秒)作为SETEX的命令参数将会话数据写入Redis缓存服务器中。
所述缓存服务器读写模块A121的更新操作。该操作用于将更新后的会话数据更新至当前会话标识的会话数据中。由于会话数据的更新是针对于整个会话数据的,因此本实施例中的更新操作与写入操作是一致的。
所述缓存服务器读写模块A121的删除操作。该操作用于当客户端退出登录或者注销会话时,从缓存服务器中删除会话数据。本实施例中的写入操作是基于Redis缓存服务器的DEL命令,以会话标识作为DEL命令的参数,将该会话标识的会话数据从Redis缓存服务器中删除。
为了避免频繁地对缓存服务器进行读、写操作,在缓存服务器读写模块A121进行读出操作后,若能读取到会话数据时,将会话数据保存至会话数据临时存取单元A13中临时存放。
所述会话数据临时存取单元A13用于临时存储当前请求中的数据,Web应用服务器使用一个线程处理一个客户端的HTTP请求,该临时存储单元的内存空间是与请求线程相关的,因此,不同的访问请求这块内存空间是各自独立、互不影响的。本实施例中使用Java自带的ThreadLocal作为会话数据临时存取单元A13的内存容器。
使用ThreadLocal的set方法将数据存放至会话数据临时存取单元A13的内存容器中,通过get方法将会话数据临时存取单元A13的内存容器中当前请求的会话数据读取出来使用。会话数据在该单元中多次读取和多次更新。
当前请求需要再次读取会话数据时,缓存服务器读写模块A121首先会检查会话数据临时存取单元A13中是否存放有当前请求的会话数据,即通过ThreadLocal的get方法获取的数据是否是空来判断当前请求的会话数据临时存取单元是否已经存放有会话数据。若已经存在,则不再对缓存服务器进行读取操作,而是直接将存放于会话数据临时存取单元A13中的会话数据返回。若不存在,则对缓存服务器14进行会话数据的读取操作,并将读取到的会话数据保存至会话数据临时存取单元A13以便于之后的再次使用。
在当前请求在完成业务逻辑处理单元A15中的业务逻辑后,会再次经过共享会话处理请求过滤器A11,这时共享会话处理请求过滤器A11将从会话数据临时存取单元A13中临时存放的会话数据取出,会话数据通过缓存服务器读写模块A121的更新操作将会话数据更新至缓存服务器中,以便于客户端的下一次请求使用。在更新完成后,共享会话处理请求过滤器A11将会话数据临时存取单元A13中临时存放的会话数据清除,以便于Web服务器的该请求线程为其他客户端提供服务。
会话数据在写入或者更新时,缓存服务器读写模块A121根据所配置的默认会话失效时间重置当前会话数据的生存时间。这一功能主要用于用户在一定的时间内未操作客户端时,存放于缓存服务器中的会话数据就会失效。当会话数据尚未失效前,若用户在客户端上进行操作时,存放于缓存服务器中的该会话数据可用的生存时间将重置为所配置的默认会话失效时间。
所述会话数据序列化模块A122,用于将以对象形式表现的会话数据序列化成为用于在缓存服务器14中存储的字节数据,同时也能将缓存服务器14中存储的字节数据反序列化成为应用程序中的对象。因此,被会话数据序列化模块A122处理过的数据是可逆的,能完整地将序列化后的字节再反序列化成为数据对象。
由于会话数据是以键值对(Key-Value)的方式在缓存服务器14中存放的。一个会话数据在缓存服务器14中的键为这个会话的会话标识,值为这个会话数据本身。
在会话数据序列化模块A122将会话标识按ASCII编码的方式序列化成为一串字节作为会话数据缓存的键。
会话数据本身是一个复杂的对象,其本身包括了诸多会话元信息和会话数据信息。会话元信息用于描述会话数据本身,比如:会话标识、会话过期时间、会话的最后一次访问时间、会话是否已过期等数据。而会话数据是应用需要存储的数据,主要是以键值方式存放的,比如在用户登录后,会话数据将会以一个固定的名称作为键,而将用户登录后的用户信息作为值在会话数据中保存,一个会话数据可以包含多个这样的键值数据。
在需要写入缓存服务器A14之前,会话数据序列化模块A122需要将会话数据对象序列化成为一串字节后再由缓存服务器读写模块A121将这串字节存放至缓存服务器中。
在需要从缓存服务器A14通过会话标识读取会话数据时,先由会话数据序列化模块A122将会话标识转换成为字节,通过这串字节由缓存服务器读写模块A121从缓存服务器14中查找所对应的会话数据。如果可以在缓存服务器14找到所对应的会话数据,则通过缓存服务器读写模块A121将存于缓存服务器14中的字节数据读出,再由会话数据序列化模块A122将这些字节数据反序列化为应用中可以直接使用的会话数据对象。
通过以上共享会话数据系统的实施例,以及会话标识是在存储于客户端中的,因此,在本发明中,Web应用服务器可以是多台服务器组成的集群,客户端每次的请求都会将会话标识通过HTTP协议发送给Web应用服务器集群,集群中的一个Web应用服务器会处理客户端发送的HTTP请求,处理请求的Web应用服务器在收到请求后获取会话标识,通过其中的会话数据处理单A12进行会话数据的读写操作。
在当前请求完成业务逻辑处理单元A15中的业务逻辑后,再次经过共享会话处理请求过滤器A11,这时共享会话处理请求过滤器A11将从会话数据临时存取单元A13中临时存放的会话数据取出,通过会话数据处理单元A12的更新操作,将会话数据更新至缓存服务器中,以便于客户端的下一次请求使用;在更新完成后,共享会话处理请求过滤器A11将会话数据临时存取单元A13中临时存放的会话数据清除,以便于Web服务器的该请求线程为其他客户端提供服务。
本发明还包括共享会话数据方法,该方法由HTTP客户端与HTTP服务端的Web应用服务器所组成。HTTP客户端可以是Web浏览器、手机应用等基于HTTP协议的客户端。针对于Web浏览器需要开启浏览器客户端的Cookie存储,以便于将会话标识存储于Cookie当中。针对于手机应用APP等非Web浏览器的客户端,需要能有存放应用数据的空间,以便于存储会话标识。图2为该方法的实施例流程图,如图所示,本实施例的共享会话数据方法,包括以下步骤S201~S208:
S201、Web浏览器客户端或手机应用APP客户端通过HTTP协议向Web应用服务器发送基于HTTP的请求,以使得Web应用服务器处理业务逻辑给客户端数据响应;
S202、客户端发送的HTTP请求将通过在Web应用服务器的共享会话处理HTTP请求过滤器。该过滤器将从HTTP协议名为Cookie的HTTP请求头中获取会话标识(基于Web浏览器的客户端),或者从HTTP请求参数或者自定义的HTTP请求头中获取会话标识(基于手机应用的客户端)。通过是否可以从请求数据中获取会话标识,本实施例方法提供以下步骤S203、S204进行处理;
S203、当共享会话处理HTTP请求过滤器能从HTTP请求中获取会话标识时,通过该会话标识从缓存服务器中查找与该会话标识所对应的会话数据;
S204、若共享会话处理HTTP请求过滤器无法从HTTP请求中获取会话标识时,本方法将生成新的会话标识,待HTTP请求处理完成后将该会话标识通过HTTP响应写入或者告知客户端。基于Web浏览器的客户端应将该会话标识存储于指定名称、域名和路径下的Cookie中;基于手机应用的客户端,应该将会话标识存储于当前手机应用的存储空间中,以便于下一次的HTTP请求时能获取该会话标识并发送请求。
新创建的会话标识需要保证会话标识的全局唯一性,本实施例采用Java中的强伪随机数产生器java.security.SecureRandom产生,由大小写英文字母和数字随机组合成为32个字符长度的字符串,该字符串用作会话标识。本实施例采用该方法产生会话标识,但本发明的共享会话数据方法并不局限于使用这一方法产生会话标识,凡是能产生全局唯一会话标识的方法均可以在本发明提供的共享会话数据方法中使用。
上述步骤S203通过会话标识是否能在缓存服务器中获取会话数据,本方法有S205和S206两个步骤需要处理:
S205、通过会话标识能从缓存服务器中获取会话数据时,该步骤将从缓存中读取该数据,并将其反序列化成为应用中所能识别的数据对象。为了避免在一个请求中频繁地从缓存服务器中读取会话数据,本方法将该会话数据存放于与当前请求线程相关的内存空间中,仅有当前请求可以访问该内存空间中的会话数据。
当同一个请求需要再次获取会话数据时,将优先从当前请求线程相关的内存空间中获取会话数据,而不需要再次从缓存服务器中通过会话标识去读取会话数据。
本方法的实施例,通过Java中的ThreadLocal实现该内存空间的操作。主要是由于一个HTTP请求在Web应用服务器中是由一个线程进行处理的,而ThreadLocal用于在当前线程的内存空间中存取数据使用,其中的数据只允许当前线程进行操作,其他的线程无法获取其中的数据,更无法对其进行操作。通过ThreadLocal的set方法可以在当前请求内存中存放数据,使用remove方法可以从当前请求内存中清除数据。该方法是实施例所使用的,但并不局限于使用ThreadLocal这一方法,凡是可以在当前请求内存中对其他请求隔离地进行数据读写操作方法均可以用在本发明的该方法中。
S206、若通过会话标识无法从缓存服务器获取会话数据时,该步骤将在当前请求线程相关的内存空间中新创建一个空的会话数据对象,以便于该请求的后续操作对该会话数据进行读写。
上述步骤S204在产生新的会话标识后,进行步骤S206处理,通过这个新的会话标识在当前请求的内存空间中新创建一个空的会话数据对象。
S207、上述步骤S205、S206处理完成后,当前请求需要使用会话数据或者修改会话数据内容时,将直接从当前请求的内存空间中获取会话数据进行读写。该步骤的目的是为了避免一个请求中多次、频繁地对会话数据进行读写操作。
在该步骤中,从请求内存中每读取一次会话数据,都会更新该会话数据的最后访问时间,该时间用于判断会话数据是否在一定的时间段内没有被访问时,能将该会话数据进行失效处理。
S208、在HTTP请求的业务逻辑处理完成,在HTTP响应给客户端之前,共享会话处理HTTP请求过滤器会从当前请求的内存空间中获取会话数据。在获取会话数据后,将该会话数据对象序列化成为可以在缓存服务器中存储的字节数据,之后通过该会话数据的会话标识将序列化后的会话数据对象写入缓存服务器当中。在写入缓存服务器时,需要设置写入会话数据在缓存服务器中的过期时间,设置过期时间的目的是为了让该会话数据在指定的时间段内没有被访问时,该会话数据将自动失效。所设置的过期时间由Web应用服务器在服务启动时,在配置文件中读取,并作为全局的配置项保存在Web应用服务器的内存中。
共享会话处理HTTP请求过滤器在会话数据写入缓存服务器完成之后,将当前请求内存空间中的会话数据清除,以便于该请求线程可以为其他的HTTP请求服务,也不会导致当前请求的会话数据被其他客户端的请求所见。
Claims (5)
1. 一种共享会话数据的系统,其特征在于包括:
至少一个Web应用服务器;
一个缓存服务器A14;
所述Web应用服务器,用于处理客户端的HTTP请求并完成所述HTTP请求业务逻辑;
所述Web应用服务器包括:共享会话处理请求过滤器A11、会话数据处理单元A12、会话数据临时存储单元A13和以及业务逻辑处理单元A15;
所述缓存服务器A14,用于存放会话数据;
所述Web应用服务器接收到由客户端发送的HTTP请求后,把请求的HTTP数据转换成为请求对象,并将该请求对象交由共享会话处理请求过滤器A11进行处理;
所述Web应用服务器程序中通过请求对象获取会话数据,所述共享会话处理请求过滤器A11在拦截到请求对象后,从请求对象中获取会话数据的逻辑进行改写,所述共享会话处理请求过滤器A11将会话数据在所述Web应用服务器内存中进行读写操作的默认行为,更改为在独立的缓存服务器中进行,并将请求会话数据存放至缓存服务器A14中;
所述会话数据处理单元A12,用于与所述缓存服务器A14针对会话数据进行交互操作,并向A11提供会话数据操作指令;
所述会话数据临时存取单元A13,用于临时存储当前HTTP请求中所述会话数据处理单元A12向所述缓存服务器A14获取的会话数据;
所述业务逻辑处理单元A15是用于处理所述Web应用服务器接收到的http请求所表示的业务逻辑,接收共享会话处理请求过滤器A11输出的包含会话数据的请求对象。
2. 根据权利要求1所述的共享会话数据的系统,其特征在于所述会话数据处理单元A12包括缓存服务器读写模块A121和会话数据序列化模块A122;
所述缓存服务器读写模块A121,用于Web应用服务器与缓存服务器14进行数据通信,管理Web应用服务器与缓存服务器14之间的数据通信连接;
所述会话数据序列化模块A122,用于将以对象形式表现的会话数据序列化成为在缓存服务器14中存储的字节数据,同时也能将缓存服务器14中存储的字节数据反序列化成为应用程序中的对象。
3. 根据权利要求1所述的共享会话数据的系统,其特征在于:所述缓存服务器以键值为存储结构,对缓存数据设置有过期时间并对过期数据进行自动清理。
4. 根据权利要求1所述的共享会话数据的系统,其特征在于:所述Web应用服务器使用一个线程处理一个客户端的HTTP请求,所述会话数据临时存取单元A13的内存空间与所述请求线程相关,不同的访问请求在所述内存空间各自独立、互不影响。
5. 一种基于权利要求2所述的共享会话数据系统的共享会话数据的方法,包括HTTP客户端与HTTP服务端的Web应用服务器之间的交互;HTTP客户端是Web浏览器、手机应用APP等基于HTTP协议的客户端;对于Web浏览器,需要开启浏览器客户端的Cookie存储,以便于将会话标识存储于Cookie当中;对于手机应用APP等非Web浏览器的客户端,需要有存放应用数据的空间,以便于存储会话标识;其特征在于包括以下步骤S201~S208:
S201、Web浏览器客户端或手机应用APP客户端通过HTTP协议向Web应用服务器发送基于HTTP的请求,以使得Web应用服务器处理业务逻辑给客户端数据响应;
S202、HTTP客户端发送的HTTP请求通过在Web应用服务器的共享会话处理HTTP请求过滤器,该过滤器将从HTTP协议名为Cookie的HTTP请求头中获取会话标识,或者从HTTP请求参数或者自定义的HTTP请求头中获取会话标识;是否可以从请求数据中获取会话标识,由以下步骤S203、S204进行处理;
S203、若共享会话处理HTTP请求过滤器能从HTTP请求中获取会话标识,通过该会话标识从缓存服务器中查找与该会话标识所对应的会话数据;
S204、若共享会话处理HTTP请求过滤器无法从HTTP请求中获取会话标识,将生成新的会话标识,待HTTP请求处理完成后将该会话标识通过HTTP响应写入或者告知客户端;基于Web浏览器的客户端,将该会话标识存储于指定名称、域名和路径下的Cookie中;基于手机应用的客户端,将会话标识存储于当前手机应用的存储空间中,以便于下一次的HTTP请求时能获取该会话标识并发送请求;
上述步骤S203通过会话标识是否能在缓存服务器中查找到会话数据,需要有S205和S206两个步骤处理:
S205、通过会话标识能从缓存服务器中获取会话数据时,则将从缓存中读取该数据,并将其反序列化成为应用中所能识别的数据对象;
当同一个请求需要再次获取会话数据时,将优先从当前请求线程相关的内存空间中获取会话数据,而不需要再次从缓存服务器中通过会话标识去读取会话数据;
S206、若通过会话标识无法从缓存服务器获取会话数据时,则将在当前请求线程相关的内存空间中新创建一个空的会话数据对象,以便于该请求的后续操作对该会话数据进行读写;
上述步骤S204在产生新的会话标识后,进行步骤S206处理,通过这个新的会话标识在当前请求的内存空间中新创建一个空的会话数据对象;
S207、上述步骤S205、S206处理完成后,当前请求需要使用会话数据或者修改会话数据内容时,将直接从当前请求的内存空间中获取会话数据进行读写;
在本步骤中,从请求内存中每读取一次会话数据,都会更新该会话数据的最后访问时间,该时间用于判断会话数据是否在一定的时间段内没有被访问时,能将该会话数据进行失效处理;
S208、在HTTP请求的业务逻辑处理完成,在HTTP响应给客户端之前,共享会话处理HTTP请求过滤器从当前请求的内存空间中获取会话数据;在获取会话数据后,将该会话数据对象序列化成为可以在缓存服务器中存储的字节数据,之后通过该会话数据的会话标识将序列化后的会话数据对象写入缓存服务器当中;在写入缓存服务器时,需要设置写入会话数据在缓存服务器中的过期时间,设置过期时间的目的是为了让该会话数据在指定的时间段内没有被访问时,该会话数据将自动失效;所设置的过期时间由Web应用服务器在服务启动时,在配置文件中读取,并作为全局的配置项保存在Web应用服务器的内存中;
共享会话处理HTTP请求过滤器在会话数据写入缓存服务器完成之后,将当前请求内存空间中的会话数据清除,以便于该请求线程可以为其他的HTTP请求服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510020027.1A CN104580226B (zh) | 2015-01-15 | 2015-01-15 | 一种共享会话数据的系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510020027.1A CN104580226B (zh) | 2015-01-15 | 2015-01-15 | 一种共享会话数据的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104580226A true CN104580226A (zh) | 2015-04-29 |
CN104580226B CN104580226B (zh) | 2017-07-11 |
Family
ID=53095406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510020027.1A Active CN104580226B (zh) | 2015-01-15 | 2015-01-15 | 一种共享会话数据的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104580226B (zh) |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105338063A (zh) * | 2015-09-30 | 2016-02-17 | 北京奇虎科技有限公司 | 多个服务器共享用户会话的方法及装置 |
CN105701163A (zh) * | 2015-12-31 | 2016-06-22 | 山东中创软件工程股份有限公司 | 基于ThreadLocal连接容器的数据库连接获取方法和装置 |
CN105812351A (zh) * | 2016-02-23 | 2016-07-27 | 平安科技(深圳)有限公司 | 实现会话共享的方法和系统 |
WO2016177130A1 (zh) * | 2015-05-07 | 2016-11-10 | 中兴通讯股份有限公司 | 通讯节点的选择方法及装置 |
CN106126356A (zh) * | 2016-06-24 | 2016-11-16 | 努比亚技术有限公司 | 一种服务器缓存的实现、生成方法及系统 |
CN106130882A (zh) * | 2016-07-13 | 2016-11-16 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN106453661A (zh) * | 2016-12-09 | 2017-02-22 | 北京酷我科技有限公司 | 一种http服务器集群的会话管理方法 |
CN106487744A (zh) * | 2015-08-25 | 2017-03-08 | 北京京东尚科信息技术有限公司 | 一种基于Redis存储的Shiro验证方法 |
CN106658084A (zh) * | 2015-11-02 | 2017-05-10 | 杭州华为数字技术有限公司 | 视频流提供方法及装置 |
CN106790123A (zh) * | 2016-12-27 | 2017-05-31 | 努比亚技术有限公司 | 实现Session共享的系统、方法、服务器和集群设备 |
CN106973106A (zh) * | 2017-03-29 | 2017-07-21 | 中国农业银行股份有限公司 | 一种获取会话信息的方法、装置及系统 |
CN107222473A (zh) * | 2017-05-26 | 2017-09-29 | 四川长虹电器股份有限公司 | 在传输层对api服务数据进行加解密的方法及系统 |
CN107657420A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种基于事件的流程处理方法及系统 |
CN107797859A (zh) * | 2017-11-16 | 2018-03-13 | 山东浪潮云服务信息科技有限公司 | 一种定时任务的调度方法及一种调度服务器 |
CN108243239A (zh) * | 2016-12-27 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 一种提供网页应用服务的方法、装置、电子设备及系统 |
CN108270753A (zh) * | 2016-12-30 | 2018-07-10 | 北京国双科技有限公司 | 注销用户账号的方法及装置 |
CN108446366A (zh) * | 2018-03-14 | 2018-08-24 | 北京思特奇信息技术股份有限公司 | 一种分类存储/快速匹配数据的方法及装置 |
CN108540556A (zh) * | 2018-04-13 | 2018-09-14 | 南京新贝金服科技有限公司 | 一种基于高速缓存的精细化Session集群共享系统及方法 |
CN108989359A (zh) * | 2018-10-12 | 2018-12-11 | 苏州创旅天下信息技术有限公司 | 服务器集群的验证登录方法及系统、可读存储介质和终端 |
CN109361778A (zh) * | 2018-12-18 | 2019-02-19 | 厦门商集网络科技有限责任公司 | 一种管理会话的方法及终端 |
CN109388508A (zh) * | 2018-10-10 | 2019-02-26 | 杭州安恒信息技术股份有限公司 | 一种实现零依赖的嵌入式cache共享系统和方法 |
CN109544195A (zh) * | 2018-12-24 | 2019-03-29 | 联想(北京)有限公司 | 一种信息处理方法和电子设备 |
CN109617953A (zh) * | 2018-11-28 | 2019-04-12 | 亚信科技(南京)有限公司 | 一种会话处理方法和系统 |
CN109635039A (zh) * | 2018-11-23 | 2019-04-16 | 金色熊猫有限公司 | 多数据中心数据同步方法及系统 |
CN109981739A (zh) * | 2019-02-25 | 2019-07-05 | 平安科技(深圳)有限公司 | 基于区块链的会话数据处理方法、装置、设备及介质 |
CN110019263A (zh) * | 2017-10-18 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 信息存储方法和装置 |
CN110557396A (zh) * | 2019-09-09 | 2019-12-10 | 苏宁消费金融有限公司 | 一种h5客户端之间登录会话统一方法和系统 |
CN110633256A (zh) * | 2019-10-10 | 2019-12-31 | 广东电网有限责任公司肇庆供电局 | 一种分布式集群系统中Session会话的共享方法 |
CN110891247A (zh) * | 2019-10-23 | 2020-03-17 | 福建星网智慧软件有限公司 | 一种客户端无状态接入集群的方法、系统、设备和介质 |
CN111310170A (zh) * | 2020-01-16 | 2020-06-19 | 深信服科技股份有限公司 | 应用程序的防泄密方法、装置及计算机可读存储介质 |
CN111464534A (zh) * | 2020-03-31 | 2020-07-28 | 深圳市思迪信息技术股份有限公司 | 分布式系统中会话保持方法及装置 |
CN111711621A (zh) * | 2020-06-05 | 2020-09-25 | 平安科技(深圳)有限公司 | 基于集群环境的电话会话管理方法、装置及计算机设备 |
CN111724262A (zh) * | 2020-06-24 | 2020-09-29 | 上海金仕达软件科技有限公司 | 一种应用服务器后续包查询系统及其工作方法 |
CN112929453A (zh) * | 2021-03-26 | 2021-06-08 | 建信金融科技有限责任公司 | 一种共享session数据的方法和装置 |
CN113645261A (zh) * | 2020-04-27 | 2021-11-12 | 中国移动通信集团江西有限公司 | 一种会话数据处理方法、装置、存储介质和计算机设备 |
CN114629885A (zh) * | 2021-01-05 | 2022-06-14 | 亚信科技(中国)有限公司 | 一种业务请求的处理方法、装置、电子设备及存储介质 |
CN114785878A (zh) * | 2022-04-24 | 2022-07-22 | 北京印象笔记科技有限公司 | 信息提取方法及装置、电子设备、计算机可读存储介质 |
CN115242876A (zh) * | 2022-07-21 | 2022-10-25 | 武汉众邦银行股份有限公司 | 一种基于redis来实现会话共享的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257485A (zh) * | 2007-03-02 | 2008-09-03 | 华为技术有限公司 | web应用系统及方法 |
US20100142516A1 (en) * | 2008-04-02 | 2010-06-10 | Jeffrey Lawson | System and method for processing media requests during a telephony sessions |
CN201813401U (zh) * | 2010-09-16 | 2011-04-27 | 北京开心人信息技术有限公司 | 一种读取缓存数据的系统 |
CN103957239A (zh) * | 2014-04-04 | 2014-07-30 | 上海聚流软件科技有限公司 | Dns缓存信息处理方法、设备及系统 |
CN104219327A (zh) * | 2014-09-27 | 2014-12-17 | 上海瀚之友信息技术服务有限公司 | 一种分布式缓存系统 |
-
2015
- 2015-01-15 CN CN201510020027.1A patent/CN104580226B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257485A (zh) * | 2007-03-02 | 2008-09-03 | 华为技术有限公司 | web应用系统及方法 |
US20100142516A1 (en) * | 2008-04-02 | 2010-06-10 | Jeffrey Lawson | System and method for processing media requests during a telephony sessions |
CN201813401U (zh) * | 2010-09-16 | 2011-04-27 | 北京开心人信息技术有限公司 | 一种读取缓存数据的系统 |
CN103957239A (zh) * | 2014-04-04 | 2014-07-30 | 上海聚流软件科技有限公司 | Dns缓存信息处理方法、设备及系统 |
CN104219327A (zh) * | 2014-09-27 | 2014-12-17 | 上海瀚之友信息技术服务有限公司 | 一种分布式缓存系统 |
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209943A (zh) * | 2015-05-07 | 2016-12-07 | 中兴通讯股份有限公司 | 通讯节点的选择方法及装置 |
WO2016177130A1 (zh) * | 2015-05-07 | 2016-11-10 | 中兴通讯股份有限公司 | 通讯节点的选择方法及装置 |
CN106487744A (zh) * | 2015-08-25 | 2017-03-08 | 北京京东尚科信息技术有限公司 | 一种基于Redis存储的Shiro验证方法 |
CN105338063A (zh) * | 2015-09-30 | 2016-02-17 | 北京奇虎科技有限公司 | 多个服务器共享用户会话的方法及装置 |
CN106658084A (zh) * | 2015-11-02 | 2017-05-10 | 杭州华为数字技术有限公司 | 视频流提供方法及装置 |
CN105701163A (zh) * | 2015-12-31 | 2016-06-22 | 山东中创软件工程股份有限公司 | 基于ThreadLocal连接容器的数据库连接获取方法和装置 |
CN105812351A (zh) * | 2016-02-23 | 2016-07-27 | 平安科技(深圳)有限公司 | 实现会话共享的方法和系统 |
CN105812351B (zh) * | 2016-02-23 | 2019-04-09 | 平安科技(深圳)有限公司 | 实现会话共享的方法和系统 |
CN106126356A (zh) * | 2016-06-24 | 2016-11-16 | 努比亚技术有限公司 | 一种服务器缓存的实现、生成方法及系统 |
CN106130882A (zh) * | 2016-07-13 | 2016-11-16 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN106130882B (zh) * | 2016-07-13 | 2019-04-30 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN107657420A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种基于事件的流程处理方法及系统 |
CN106453661A (zh) * | 2016-12-09 | 2017-02-22 | 北京酷我科技有限公司 | 一种http服务器集群的会话管理方法 |
CN106790123A (zh) * | 2016-12-27 | 2017-05-31 | 努比亚技术有限公司 | 实现Session共享的系统、方法、服务器和集群设备 |
CN108243239A (zh) * | 2016-12-27 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 一种提供网页应用服务的方法、装置、电子设备及系统 |
WO2018121334A1 (zh) * | 2016-12-27 | 2018-07-05 | 阿里巴巴集团控股有限公司 | 一种提供网页应用服务的方法、装置、电子设备及系统 |
CN108270753A (zh) * | 2016-12-30 | 2018-07-10 | 北京国双科技有限公司 | 注销用户账号的方法及装置 |
CN106973106A (zh) * | 2017-03-29 | 2017-07-21 | 中国农业银行股份有限公司 | 一种获取会话信息的方法、装置及系统 |
CN107222473A (zh) * | 2017-05-26 | 2017-09-29 | 四川长虹电器股份有限公司 | 在传输层对api服务数据进行加解密的方法及系统 |
CN107222473B (zh) * | 2017-05-26 | 2020-07-10 | 深圳易嘉恩科技有限公司 | 在传输层对api服务数据进行加解密的方法及系统 |
CN110019263A (zh) * | 2017-10-18 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 信息存储方法和装置 |
CN107797859A (zh) * | 2017-11-16 | 2018-03-13 | 山东浪潮云服务信息科技有限公司 | 一种定时任务的调度方法及一种调度服务器 |
CN107797859B (zh) * | 2017-11-16 | 2021-08-20 | 山东浪潮云服务信息科技有限公司 | 一种定时任务的调度方法及一种调度服务器 |
CN108446366A (zh) * | 2018-03-14 | 2018-08-24 | 北京思特奇信息技术股份有限公司 | 一种分类存储/快速匹配数据的方法及装置 |
CN108540556A (zh) * | 2018-04-13 | 2018-09-14 | 南京新贝金服科技有限公司 | 一种基于高速缓存的精细化Session集群共享系统及方法 |
CN108540556B (zh) * | 2018-04-13 | 2019-09-10 | 南京新贝金服科技有限公司 | 一种基于高速缓存的精细化Session集群共享系统及方法 |
CN109388508A (zh) * | 2018-10-10 | 2019-02-26 | 杭州安恒信息技术股份有限公司 | 一种实现零依赖的嵌入式cache共享系统和方法 |
CN109388508B (zh) * | 2018-10-10 | 2021-02-26 | 杭州安恒信息技术股份有限公司 | 一种实现零依赖的嵌入式cache共享系统和方法 |
CN108989359A (zh) * | 2018-10-12 | 2018-12-11 | 苏州创旅天下信息技术有限公司 | 服务器集群的验证登录方法及系统、可读存储介质和终端 |
CN109635039A (zh) * | 2018-11-23 | 2019-04-16 | 金色熊猫有限公司 | 多数据中心数据同步方法及系统 |
CN109617953A (zh) * | 2018-11-28 | 2019-04-12 | 亚信科技(南京)有限公司 | 一种会话处理方法和系统 |
CN109617953B (zh) * | 2018-11-28 | 2021-08-31 | 亚信科技(南京)有限公司 | 一种会话处理方法和系统 |
CN109361778A (zh) * | 2018-12-18 | 2019-02-19 | 厦门商集网络科技有限责任公司 | 一种管理会话的方法及终端 |
CN109544195A (zh) * | 2018-12-24 | 2019-03-29 | 联想(北京)有限公司 | 一种信息处理方法和电子设备 |
CN109544195B (zh) * | 2018-12-24 | 2024-05-28 | 联想(北京)有限公司 | 一种信息处理方法和电子设备 |
CN109981739A (zh) * | 2019-02-25 | 2019-07-05 | 平安科技(深圳)有限公司 | 基于区块链的会话数据处理方法、装置、设备及介质 |
CN110557396A (zh) * | 2019-09-09 | 2019-12-10 | 苏宁消费金融有限公司 | 一种h5客户端之间登录会话统一方法和系统 |
CN110557396B (zh) * | 2019-09-09 | 2022-03-15 | 苏宁消费金融有限公司 | 一种h5客户端之间登录会话统一方法和系统 |
CN110633256A (zh) * | 2019-10-10 | 2019-12-31 | 广东电网有限责任公司肇庆供电局 | 一种分布式集群系统中Session会话的共享方法 |
CN110891247B (zh) * | 2019-10-23 | 2021-11-23 | 福建星网智慧软件有限公司 | 一种客户端无状态接入集群的方法、系统、设备和介质 |
CN110891247A (zh) * | 2019-10-23 | 2020-03-17 | 福建星网智慧软件有限公司 | 一种客户端无状态接入集群的方法、系统、设备和介质 |
CN111310170A (zh) * | 2020-01-16 | 2020-06-19 | 深信服科技股份有限公司 | 应用程序的防泄密方法、装置及计算机可读存储介质 |
CN111464534A (zh) * | 2020-03-31 | 2020-07-28 | 深圳市思迪信息技术股份有限公司 | 分布式系统中会话保持方法及装置 |
CN113645261A (zh) * | 2020-04-27 | 2021-11-12 | 中国移动通信集团江西有限公司 | 一种会话数据处理方法、装置、存储介质和计算机设备 |
WO2021135114A1 (zh) * | 2020-06-05 | 2021-07-08 | 平安科技(深圳)有限公司 | 基于集群环境的电话会话管理方法、装置及计算机设备 |
CN111711621A (zh) * | 2020-06-05 | 2020-09-25 | 平安科技(深圳)有限公司 | 基于集群环境的电话会话管理方法、装置及计算机设备 |
CN111724262A (zh) * | 2020-06-24 | 2020-09-29 | 上海金仕达软件科技有限公司 | 一种应用服务器后续包查询系统及其工作方法 |
CN111724262B (zh) * | 2020-06-24 | 2024-03-22 | 上海金仕达软件科技股份有限公司 | 一种应用服务器后续包查询系统及其工作方法 |
CN114629885A (zh) * | 2021-01-05 | 2022-06-14 | 亚信科技(中国)有限公司 | 一种业务请求的处理方法、装置、电子设备及存储介质 |
CN112929453A (zh) * | 2021-03-26 | 2021-06-08 | 建信金融科技有限责任公司 | 一种共享session数据的方法和装置 |
CN114785878A (zh) * | 2022-04-24 | 2022-07-22 | 北京印象笔记科技有限公司 | 信息提取方法及装置、电子设备、计算机可读存储介质 |
CN115242876A (zh) * | 2022-07-21 | 2022-10-25 | 武汉众邦银行股份有限公司 | 一种基于redis来实现会话共享的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104580226B (zh) | 2017-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104580226A (zh) | 一种共享会话数据的系统和方法 | |
US10803015B2 (en) | Caching system and method | |
CN106775446B (zh) | 基于固态硬盘加速的分布式文件系统小文件访问方法 | |
EP4202694A1 (en) | Node memory-based data processing method and apparatus, device, and medium | |
CN102333029B (zh) | 一种服务器集群系统中的路由方法 | |
US7783607B2 (en) | Decentralized record expiry | |
CN108011929A (zh) | 数据请求处理方法、装置、计算机设备和存储介质 | |
CN101442558B (zh) | 一种为p2sp网络提供索引服务的方法和系统 | |
CN111274310A (zh) | 一种分布式数据缓存方法及系统 | |
CN103200212A (zh) | 一种在云计算环境下实现分布式会话的方法和系统 | |
CN111131451A (zh) | 业务处理系统及业务处理方法 | |
CN104735098A (zh) | 会话信息的控制方法和控制系统 | |
CN106506703A (zh) | 基于共享内存的服务发现方法、装置及系统、服务器 | |
CN106713391A (zh) | 一种session信息的共享方法和共享系统 | |
WO2023011022A1 (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储系统 | |
CN103607424A (zh) | 一种服务器连接方法及服务器系统 | |
CN109739435A (zh) | 文件存储和更新方法及装置 | |
CN105007193A (zh) | 一种多层信息处理方法、系统及集群管理节点 | |
CN110740155B (zh) | 分布式系统中的请求处理方法及装置 | |
CN111694865A (zh) | 基于分布式系统的四层结构数据获取方法和装置 | |
CN113342746A (zh) | 文件管理系统、文件管理方法、电子设备和存储介质 | |
CN113918857A (zh) | 一种提高分布式web应用系统性能的三级缓存加速方法 | |
CN107180034A (zh) | MySQL数据库的集群系统 | |
CN117061535A (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 |