CN106713391A - 一种session信息的共享方法和共享系统 - Google Patents
一种session信息的共享方法和共享系统 Download PDFInfo
- Publication number
- CN106713391A CN106713391A CN201510780728.5A CN201510780728A CN106713391A CN 106713391 A CN106713391 A CN 106713391A CN 201510780728 A CN201510780728 A CN 201510780728A CN 106713391 A CN106713391 A CN 106713391A
- Authority
- CN
- China
- Prior art keywords
- session
- caching server
- server group
- information
- caching
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种session信息的共享方法和共享系统。所述方法包括:在集群应用服务器与缓存服务器组间架设session中心控制器,缓存服务器组中存储有session信息;配置每个集群应用服务器,使得集群应用服务器在接收到客户端发送的http请求时,将该http请求中转给session中心控制器;配置session中心控制器,使其根据集群应用服务器中转的http请求管理缓存服务器组中存储的session信息,以及管理session信息的传递,实现集群应用服务器与缓存服务器组间的session信息的共享。本发明的技术方案通过架设session中心控制器对存储在缓存服务器组中的session信息做统一管理,保证session信息共享过程中session信息的一致性和安全性。
Description
技术领域
本发明涉及互联网通信技术领域,特别涉及一种session信息的共享方法和共享系统。
背景技术
随着网络的普及,B/S(Browser/Server,浏览器/服务器)系统的盛行及B2C(Buisness to Custmoer,企业对消费者)模式带来的大用户量,单服务器单应用的设计是无法满足所需性能与功能的要求,为了满足上述要求,应用服务器集群模式成了行之有效的解决办法。
由于用户使用到的浏览器与服务器的通信协议普遍是HTTP协议,HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要用到前面的信息,则必须重传,由此可能导致每次连接传送的数据量增大。
现有技术利用浏览器端的cookies(cookies是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据)和服务器端的会话session相辅相成地解决了无状态问。但在集群环境下,用户的请求会在特定的算法下分配到不同机器的应用服务器上,此时session信息在不同应用服务器上的同步显得尤为重要。
现有session同步的四种方式如下:
方式一:客户端cookies本地存储;
基本原理是:将服务器端的session信息存储在浏览器客户端cookies中,每次请求将cookies传给服务器。
缺点是:存储的数据不能太多,安全系数低。
方式二:使用tomat和jboss服务器实现session复制功能;
基于原理是:集群中的应用服务器通过诸如多点传送(IP multicast)和IP sockets技术和其他服务器共享信息。
缺点是:性能随着服务器的增加急剧下降,容易引起广播风暴,而且session数据需要序列化,会影响性能;此外,当某台应用的本地多点传送缓存存满时,就无法写入新的多点传送消息,从而无法完成session同步。
方式三:使用数据库存储session;
基本原理是:将session实例对应到数据库表上,通过对表的读写操作完成session的读写操作。
缺点是:程序需要定制完成业务层与持久层操作的开发,由于每次请求都需要进行数据库读写,系统开销较大。
方式四:使用缓存存储session;
基于原理是:与方式三的方法类似,但由于是内存存取的,性能比数据库高。
缺点是:程序需要定制,增加了工作量,存入缓存中的对象数据都需要序列化,效率较低;而且缓存服务器宕机时,所有session会丢失。
因而现有技术还有待改进和提高。
发明内容
鉴于上述问题,本发明提供了一种session信息的共享方法和共享系统,以实现集群环境下session信息的高效同步共享。
为达到上述目的,本发明的技术方案是这样实现的:
一方面,本发明实施例提供了一种session信息的共享方法,所述方法包括:
在集群应用服务器与缓存服务器组间架设session中心控制器,所述缓存服务器组中存储有session信息;
配置每个集群应用服务器,使得集群应用服务器在接收到客户端发送的http请求时,将该http请求中转给session中心控制器;
配置session中心控制器,使其根据任一集群应用服务器中转的http请求管理缓存服务器组中存储的session信息,以及管理session信息的传递,实现集群应用服务器与缓存服务器组间的session信息的共享。
优选地,配置session中心控制器,使其根据任一集群应用服务器中转的http请求管理缓存服务器组存储的session信息包括:
当所述http请求为session创建请求时,session中心控制器根据接收到的集群应用服务器中转的session创建请求在本地生成session ID,并将生成的session ID添加到所述session创建请求中;
将添加有session ID的所述session创建请求序列化到缓存服务器组,使缓存服务器组根据所述session ID存储session创建请求中的session信息;
接收缓存服务器组返回的session创建成功信号,并向集群应用服务器发送带有session ID信息的session信息。
进一步优选地,在根据session创建请求创建的session信息有效时,配置session中心控制器,使其根据任一集群应用服务器中转的http请求管理缓存服务器组存储的session信息还包括:
当任一集群应用服务器中转的另一http请求为session获取请求时,session中心控制器从该session获取请求中提取session ID,并与其本地存储的session ID对比匹配;
对比匹配成功后,将session获取请求发送给所述缓存服务器组,使缓存服务器组查找session获取请求中的session ID对应的session信息;
接收缓存服务器组发送的session获取成功信号,并将session获取成功信号中的session ID及其对应的session信息发送给集群应用服务器。
优选地,在根据session创建请求创建的session信息有效时,配置session中心控制器,使其根据任一集群应用服务器中转的http请求管理缓存服务器组存储的session信息还包括:
当任一集群应用服务器中转的另一http请求为session更新请求时,session中心控制器从该session更新请求中提取session ID,并与其本地存储的session ID对比匹配;
对比匹配成功后,将session ID的版本号加1,并将加1后的版本号添加到session更新请求中,发送给缓存服务器组,使缓存服务器组根据session ID及其版本号存储session更新请求中的session信息;
接收缓存服务器组发送的session更新成功信号,并将述session更新成功信号中的session ID与其版本号对应的session信息发送给集群应用服务器。
优选地,所述方法还包括:
设置备份数据库;
配置session中心控制器,使session中心控制器以异步的方式实时更新所述备份数据库中的session信息;
以及配置session中心控制器,使其在启动时创建线程监听缓存服务器组,在判断缓存服务器组宕机时,从备份数据库中获得所需的session信息;同时发起报警通知,在缓存服务器组恢复后,将备份数据库中的数据复制到缓存服务器组。
优选地,所述方法还包括:
配置session中心控制器,使其在根据任一集群应用服务器中转的http请求管理session信息的传递时,拦截不同步的session信息,实现集群环境中session信息的同步。
优选地,缓存服务器组包括一主缓存服务器和至少一从缓存服务器,主缓存服务器和从缓存服务器均为Redis服务器;
主缓存服务器用于与session中心控制器的通信,实现数据的写入,从缓存服务器实现数据的读取;
采用Redis服务器的内部机制实现主缓存服务器与从缓存服务器之间的数据同步。
另一方面,本发明实施例提供了一种session信息的共享系统,包括集群应用服务器、session中心控制器和缓存服务器组;
集群应用服务器,用于在接收客户端发送的http请求时,将所述http请求中转给session中心控制器;
缓存服务器组,用于存储session信息;
session中心控制器,用于接收任一集群应用服务器中转的http请求,并根据所述http请求管理缓存服务器组存储的session信息,以及管理session信息的传递,实现集群应用服务器与缓存服务器组间的session信息的共享。
优选地,当任一集群应用服务器中转的http请求为session创建请求时,
session中心控制器,具体用于根据session创建请求在本地生成sessionID,将生成的session ID添加到session创建请求中,并将添加有session ID的session创建请求序列化到缓存服务器组;以及用于接收缓存服务器组发送的session创建成功信号,并向集群应用服务器发送带有session ID的session信息;
缓存服务器组,用于根据session ID存储session创建请求中的session信息,并向session中心控制器发送session创建成功信号;
在根据session创建请求创建的session信息有效时,
session中心控制器,进一步用于接收并从任一集群应用服务器中转的session获取请求中提取session ID,与其本地存储的session ID对比匹配,对比匹配成功后,将session获取请求发送给所述缓存服务器组;以及用于接收缓存服务器组发送的session获取成功信号,并将session获取成功信号中的session ID及其对应的session信息发送给所述集群应用服务器;
缓存服务器组,用于查找session获取请求中的session ID对应的session信息,并将session获取成功信号发送给所述session中心控制器;
或者,在根据所述session创建请求创建的session信息有效时,
session中心控制器,进一步用于接收并从集群应用服务器中转的session更新请求中提取session ID,与其本地存储的session ID对比匹配,对比匹配成功后,将session ID的版本号加1,并将加1后的版本号添加到session更新请求中,发送给所述缓存服务器组;以及用于接收所述缓存服务器组发送的session更新成功信号,并将所述session更新成功信号中的session ID与其版本号对应的session信息发送给所述集群应用服务器;
缓存服务器组,用于根据所述session ID及其版本号存储所述session更新请求中的session信息,并将session更新成功信号发送给session中心控制器。
优选地,所述系统还包括备份数据库;所述session中心控制器,进一步用于以异步的方式实时更新所述备份数据库中的session信息;并且session中心控制器在启动时创建线程监听缓存服务器组,在判断缓存服务器组宕机时,从备份数据库中获得所需的session信息;同时发起报警通知,在缓存服务器组恢复后,将备份数据库中的数据复制到缓存服务器组;
其中,缓存服务器组包括一主缓存服务器和至少一从缓存服务器,主缓存服务器和从缓存服务器均为Redis服务器;
主缓存服务器用于与session中心控制器的通信,实现数据的写入,从缓存服务器实现数据的读取;
主缓存服务器与从缓存服务器之间采用Redis服务器的内部机制实现他们之间的数据同步。
本发明实施例的有益效果是:本发明将session信息的存储转移到缓存服务器中,利用缓存快速读写的能力来存储session信息,通过在集群应用服务器和缓存服务器间架设session中心控制器,使得用户发起的每次http请求在涉及到集群应用服务器需要从缓存服务器组获取session信息时,都能够在session中心控制器的管理下从缓存服务器组中获取,从而实现了集群环境下session信息的高效同步共享。由于本发明利用session中心控制器对存储在缓存服务器组中的session信息做统一管理,因此能够保证session信息共享过程中session的一致性。
在优选方案中,本发明通过建立备份数据库和session中心控制器的监听机制实现了共享过程中的备份容灾,保障在缓存服务器组宕机时,能够及时切换数据来源,维持正常工作状态;以及通过建立主Redis缓存服务器和从Redis缓存服务器,利用主Redis缓存服务器实现数据的写入,利用从Redis缓存服务器实现数据的读取,提升数据处理速度、数据交互速度和链接数量,从而实现session信息共享的高效性。
附图说明
图1为本发明实施例一提供的session信息的共享方法的流程图;
图2为本发明实施例二提供的session信息的共享系统组成结构示意图;
图3为本发明实施例三提供的session信息的共享系统中服务端的工作流程图;
图4为本发明实施例三提供的session信息的共享系统中服务端的备份容灾工作流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在网络负载配置没有使用一致性算法的情况下,用户与集群应用服务器的每一次http请求会被映射到不同的集群应用服务器上,这样的结果会导致之前在其他应用服务器上创建并保存的session信息的丢失,其中session信息通常是指用户的账号、登录状态等用户信息,也可以保存其他的特殊信息。
为了避免上述状况,本发明的整体设计思路为:本发明提供了一种可复用的整体打包解决方案,将session信息的存储转移到缓存服务器中,利用缓存快速读写的能力来存储session信息,通过在集群应用服务器和缓存服务器间架设session中心控制器,使得用户发起的每次http请求在涉及到集群应用服务器需要从缓存服务器组获取session信息时,都能够在session中心控制器的管理下从缓存服务器组中获取,同步地对缓存服务器中的session信息进行创建、获取和修改,从而实现了session信息的同步共享;并且本发明还通过session中心控制器对session信息的安全性和系统的容灾性做了实现。
实施例一:
图1为本实施例提供的session信息的共享方法的流程图,如图1所示,图1中的方法包括:
S110,在集群应用服务器与缓存服务器组间架设session中心控制器,所述缓存服务器组中存储有session信息。
S120,配置每个集群应用服务器,使得集群应用服务器在接收到客户端发送的http请求时,将该http请求中转给所述session中心控制器。例如配置每个集群应用服务器的session信息存储地址,使该session信息存储地址指向session中心控制器,集群应用服务器在接收到客户端发送的http请求时,能够根据session信息存储地址将该http请求中转给session中心控制器。
本步骤中,集群应用服务器优选为tomcat服务器。tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发用户不是很多的情况下被普遍使用,是开发和调试JSP程序的首选。
S130,配置session中心控制器,使其根据任一集群应用服务器中转的http请求管理缓存服务器组中存储的session信息,以及管理session信息的传递,实现集群应用服务器与缓存服务器组间的session信息的共享。
本实施例中,session代表服务器与浏览器的一次会话过程,这个过程可以是连续的,也可以时断时续的。当客户端第一次请求session信息时,session中心控制器会通过特殊算法算出一个用于标识session信息的session ID,并控制缓存服务器组保存session ID对应的session信息,当客户端浏览器(session信息继续有效时)请求别的资源时,客户端浏览器会将session ID放置到http请求的请求头中,session中心控制器接收到集群应用服务器中转的http请求后,就能够得到该http请求的session ID,session中心控制器在缓存服务器组中查找到该session ID的session信息返还给请求者使用。
若有必要,session中心控制器将对存储在缓存服务器组中的session信息做一些常规的操作,如读取、修改、删除或销毁等,相关操作的操作结果将保存在缓存服务器组中,这样就实现了利用session中心控制器统一管理session信息的目的。当多个集群应用服务同时提供服务响应时,由于响应前已将各个客户端的session信息集中存储在缓存服务器组中,并通过session中心控制器进行管理,因此对于客户端而言,无论客户端发出的http请求被那一台集群应用服务器响应处理,每个客户端只有一份session信息,相当于所有应用服务器都共享了这份session信息,从而解决了集群应用服务器间session信息不能共享的问题。
具体的,对于步骤S130中配置session中心控制器,使其根据任一集群应用服务器中转的http请求管理缓存服务器组存储的session信息包括:
当http请求为session创建请求时,session中心控制器根据接收到的集群应用服务器中转的session创建请求在本地生成session ID,并将生成的session ID添加到所述session创建请求中;
将添加有session ID的session创建请求序列化到缓存服务器组,使缓存服务器组根据所述session ID存储session创建请求中的session信息;
接收所述缓存服务器组返回的session创建成功信号,并向集群应用服务器发送带有session ID信息的session信息。
在根据session创建请求创建的session信息有效时,此时session中心控制器通过下述方法管理缓存服务器组中存储的session信息:
当所述集群应用服务器中转的另一http请求为session获取请求时,session中心控制器从该session获取请求中提取session ID,并与其本地存储的session ID对比匹配;
对比匹配成功后,将所述session获取请求发送给所述缓存服务器组,使所述缓存服务器组查找所述session获取请求中的session ID对应的session信息;
接收所述缓存服务器组发送的session获取成功信号,并将所述session获取成功信号中的session ID及其对应的session信息发送给所述集群应用服务器。
或者,此时session中心控制器通过下述方法管理缓存服务器组中存储的session信息:
当集群应用服务器中转的另一http请求为session更新请求时,session中心控制器从该session更新请求中提取session ID,并与其本地存储的sessionID对比匹配;
对比匹配成功后,将所述session ID的版本号加1,并将加1后的版本号添加到所述session更新请求中,发送给所述缓存服务器组,使所述缓存服务器组根据所述session ID及其版本号存储所述session更新请求中的session信息;
接收所述缓存服务器组发送的session更新成功信号,并将所述session更新成功信号中的session ID与其版本号对应的session信息发送给所述集群应用服务器。
本实施例将session信息存储在缓存服务器组中,通过在集群应用服务器和缓存服务器组之间架设session中心控制器,利用session中心控制器管理存在缓存服务器组中的session信息,以及管理集群应用服务器和缓存服务器组之间session信息的传递,实现了集群环境下session信息的高效同步共享。
需要说明的是,本实施例进一步配置session中心控制器,使其在根据某台集群应用服务器中转的http请求管理session信息的传递时,拦截不同步的session信息,实现集群环境中session信息的同步。在实际应用中,可以通过session ID的版本号拦截不同步的session信息,实现集群环境中session信息的同步。例如假设有多个集群应用服务器同时向session中心控制器请求更新存储在缓存服务器中的同一个session信息,每个集群应用服务器向session中心控制器发送的session更新请求中的session ID都对应唯一的版本号,session中心控制器根据接收到的每个session更新请求对缓存服务器中的session信息进行更新,每次session信息的更新都覆盖前一session信息,session中心控制器根据多个集群应用服务器同时发送的session更新请求对存储在缓存服务器中的同一session信息进行更新后,再向该多个集群应用服务器发送最终的session信息,从而实现了集群环境中session信息的同步。
进一步需要说明的是,本实施例中的缓存服务器所包括的缓存服务器的数量需要根据实际的项目需求确定,小型项目使用单一的缓存服务器即可。
本实施例的缓存服务器组优选地包括一主缓存服务器和至少一从缓存服务器,主缓存服务器和从缓存服务器均为Redis服务器,Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
主缓存服务器用于与session中心控制器的通信,实现数据的写入,至少一从缓存服务器实现数据的读取,提升数据处理速度、数据交互速度和链接数量,从而实现session信息共享的高效性;其中,采用Redis服务器的内部机制实现主缓存服务器与从缓存服务器之间的数据同步。
在本实施例的优选方案中,图1中的方法还包括:
设置备份数据库;
配置session中心控制器,使session中心控制器以异步的方式,采用与管理缓存服务器组存储的session信息相同的方式实时更新备份数据库中的session信息;
在实际应用中,配置session中心控制器,使其在启动时创建线程监听缓存服务器组,在判断缓存服务器组宕机时,从备份数据库中获得所需的session信息;同时发起报警通知,在缓存服务器组恢复后,将备份数据库中的数据复制到缓存服务器组。
本优选方案通过设置备份数据库和session中心控制器的监听机制,保障在缓存服务器组宕机时,能够及时切换数据来源,维持系统的正常工作状态。
实施例二:
基于与实施例一相同的技术方案,本实施例提供了一种session信息的共享系统。
图2为本实施例提供的session信息的共享系统的组成结构示意图,如图2所示,图2中的系统包括集群应用服务器、session中心控制器和缓存服务器组。
集群应用服务器,用于在接收客户端发送的http请求时,将http请求中转给session中心控制器;
缓存服务器组,用于存储session信息;
session中心控制器,用于接收任一集群应用服务器中转的http请求,并根据所述http请求管理所述缓存服务器组存储的session信息,以及管理session信息的传递,实现集群应用服务器与缓存服务器组间的session信息的共享。
其中,当任一集群应用服务器中转的http请求为session创建请求时,
session中心控制器,具体用于根据session创建请求在本地生成sessionID,将生成的session ID添加到所述session创建请求中,并将添加有sessionID的所述session创建请求序列化到缓存服务器组;以及用于接收缓存服务器组发送的session创建成功信号,并向集群应用服务器发送带有session ID信息的session信息;
缓存服务器组,用于根据session ID存储session创建请求中的session信息,并向session中心控制器发送session创建成功信号。
在根据session创建请求创建的session信息有效时,
session中心控制器,进一步用于接收并从任一集群应用服务器中转的session获取请求中提取session ID,并与其本地存储的session ID对比匹配,对比匹配成功后,将session获取请求发送给所述缓存服务器组;以及用于接收缓存服务器组发送的session获取成功信号,并将session获取成功信号中的session ID及其对应的session信息发送给集群应用服务器。
缓存服务器组,用于查找session获取请求中的session ID对应的session信息,并将session获取成功信号发送给session中心控制器。
或者,在根据session创建请求创建的session信息有效时,
session中心控制器,进一步用于接收并从任一集群应用服务器中转的session更新请求中提取session ID,并与其本地存储的session ID对比匹配,对比匹配成功后,将session ID的版本号加1,并将加1后的版本号添加到session更新请求中,发送给所述缓存服务器组;以及用于接收所述缓存服务器组发送的session更新成功信号,并将所述session更新成功信号中的sessionID与其版本号对应的session信息发送给集群应用服务器;
缓存服务器组,用于根据所述session ID及其版本号存储所述session更新请求中的session信息,并将session更新成功信号发送给session中心控制器。
其中,本实施例中的缓存服务器所包括的缓存服务器的数量需要根据实际的项目需求确定,小型项目可以使用单一的缓存服务器即可。
本实施例的缓存服务器组优选地包括一主缓存服务器和至少一从缓存服务器,主缓存服务器和从缓存服务器均为Redis服务器,Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
主缓存服务器用于与session中心控制器的通信,实现数据的写入,至少一从缓存服务器实现数据的读取;其中,采用Redis服务器的内部机制实现主缓存服务器与从缓存服务器之间的数据同步。
在本实施例的一个优选方案中,如图2所示,本实施例中的系统还包括备份数据库。
本优选方案中的session中心控制器,进一步用于以异步的方式实时更新所述备份数据库中的session信息;以及用于在启动时创建线程监听所述缓存服务器组,在判断所述缓存服务器组宕机时,从所述备份数据库中获得所需的session信息;同时发起报警通知,在所述缓存服务器组恢复后,将所述备份数据库中的数据复制到所述缓存服务器组。
在本实施例的另一优选方案中,session中心控制器,还用于在根据某台集群应用服务器中转的http请求管理session信息的传递时,拦截不同步的session信息,实现集群环境中session信息的同步。
实施例三:
本实施用于具体说明实施例二的session信息共享系统的具体工作流程。
图3为session信息的共享系统中服务端的工作流程图,如图3所示,该共享系统包括集群应用服务器、session中心控制器、缓存服务器组和数据库,其中集群应用服务器、session中心控制器、缓存服务器组和数据库的功能参见实施例二,本发明在此不再赘述。
本实施例通过图3说明在客户端与集群环境中的某台集群应用服务器首次建立http连接时,session中心控制器对session信息的管理:
步骤1,集群应用服务器根据客户端发送的http请求向session中心控制器发送session创建请求。
步骤2,session中心控制器根据接收到的session创建请求在本地生成session ID,并将该session ID添加到session创建请求中;
步骤3,session中心控制器将添加有session ID的session创建请求发送给缓存服务器组。
步骤4,缓存服务器组执行新增操作,即根据session ID存储session创建请求中的session信息。
步骤5,缓存服务器组向session中心控制器发送session创建成功信号。
步骤6,session中心控制器接收该session创建成功信号,并以异步的方式控制备份数据库存储该session信息。
步骤7,session中心控制器将带有session ID的session信息发送给集群应用服务器。
步骤8,在该session信息继续有效时,集群应用服务器根据客户端发送的另一http请求向session中心控制器发送session获取请求。
步骤9,session中心控制器接收并从该session获取请求提取session ID,并与其本地存储的session ID对比匹配。
步骤10,session中心控制器在对比匹配成功后,将session获取请求发送给缓存服务器组。
步骤11,缓存服务器组执行查询操作,即查找该session获取请求中的session ID对应的session信息。
步骤12,缓存服务器组将session获取成功信号发送给session中心控制。
步骤13,session中心控制器接收该session获取成功信号。
步骤14,session中心控制器将session获取成功信号中的session ID及其对应的session信息发送给集群应用服务器。
步骤15,在该session信息继续有效时,集群应用服务器根据客户端发送的另一http请求向session中心控制器发送session更新请求。
步骤16,session中心控制器接收并从该session更新请求提取session ID,并与其本地存储的session ID对比匹配。
步骤17,session中心控制器在session ID对比匹配成功后,将session ID的版本号加1,并将加1后的版本号添加到该session更新请求中,发送给缓存服务器组。
步骤18,缓存服务器组执行更新操作,即根据session ID及其版本号存储session更新请求中的session信息。
步骤19,缓存服务器组将session更新成功信号发送给session中心控制器。
步骤20,session中心控制器接收该session更新成功信号,并以异步的方式更新备份数据库该session ID对于的session信息。
步骤21,session中心控制器将该session更新成功信号中的session ID与其版本号对应的session信息发送给集群应用服务器。
图4为session信息的共享系统中服务端的备份容灾工作流程图,如图4所示,该共享系统包括集群应用服务器、session中心控制器、缓存服务器组和数据库,其中集群应用服务器、session中心控制器、缓存服务器组和数据库的功能参见实施例二,本发明在此不再赘述。
本实施例通过图4说明共享系统的容灾性能:
步骤1,session中心控制器在启动时创建用于监听缓存服务器组的线程。
步骤2,集群应用服务器根据客户端发送的http请求向session中心控制器发送session操作请求。
本步骤中的session操作请求可以是图3中的session创建请求、session获取请求或session更新请求。
步骤3,session中心控制器接收该session操作请求,并根据该session操作请求的类型在本地执行相应的操作。
步骤4,session中心控制器将执行相应操作后的session操作请求发送给缓存服务器组。
步骤5,session中心控制器在接收到错误信号时,向备份数据库发送session操作请求,同时发起报警通知。
步骤6,备份数据库接收session操作请求,并根据该session操作请求执行相应的操作,向session中心控制器发送相应的session信息。
步骤7,session中心控制器将接收到的session信息发送给集群应用服务器。
步骤8,session中心控制器继续监听缓存服务器组。
步骤9,session中心控制器在缓存服务器组恢复后,将备份数据库中的数据复制到缓存服务器组,完成该系统的备份容灾。
综上所述,本发明提供了一种session信息的共享方法和共享系统,将session信息的存储转移到缓存服务器中,利用缓存快速读写的能力来存储session信息,通过在集群应用服务器和缓存服务器间架设session中心控制器,使得用户发起的每次http请求在涉及到集群应用服务器需要从缓存服务器组获取session信息时,都能够在session中心控制器的管理下从缓存服务器组中获取,从而实现了集群环境下session信息的高效同步共享。由于本发明利用session中心控制器对存储在缓存服务器组中的session信息做统一管理,因此能够保证session信息共享过程中session的一致性。在优选方案中,本发明通过建立备份数据库和session中心控制器的监听机制实现了共享过程中的备份容灾,保障在缓存服务器组宕机时,能够及时切换数据来源,维持正常工作状态;以及通过建立主Redis缓存服务器和从Redis缓存服务器,利用主Redis缓存服务器实现数据的写入,利用从Redis缓存服务器实现数据的读取,提升数据处理速度、数据交互速度和链接数量,从而实现session信息共享的高效性。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种session信息的共享方法,其特征在于,所述方法包括:
在集群应用服务器与缓存服务器组间架设session中心控制器,所述缓存服务器组中存储有session信息;
配置每个集群应用服务器,使得所述集群应用服务器在接收到客户端发送的http请求时,将该http请求中转给所述session中心控制器;
配置所述session中心控制器,使其根据任一集群应用服务器中转的http请求管理所述缓存服务器组中存储的session信息,以及管理session信息的传递,实现所述集群应用服务器与所述缓存服务器组间的session信息的共享。
2.根据权利要求1所述的共享方法,其特征在于,所述配置所述session中心控制器,使其根据任一集群应用服务器中转的http请求管理所述缓存服务器组存储的session信息包括:
当所述http请求为session创建请求时,所述session中心控制器根据接收到的所述集群应用服务器中转的session创建请求在本地生成session ID,并将生成的session ID添加到所述session创建请求中;
将添加有session ID的所述session创建请求序列化到所述缓存服务器组,使所述缓存服务器组根据所述session ID存储所述session创建请求中的session信息;
接收所述缓存服务器组返回的session创建成功信号,并向所述集群应用服务器发送带有session ID信息的session信息。
3.根据权利要求2所述的共享方法,其特征在于,在根据所述session创建请求创建的session信息有效时,所述配置所述session中心控制器,使其根据任一集群应用服务器中转的http请求管理所述缓存服务器组存储的session信息还包括:
当任一集群应用服务器中转的另一http请求为session获取请求时,所述session中心控制器从该session获取请求中提取session ID,并与其本地存储的session ID对比匹配;
对比匹配成功后,将所述session获取请求发送给所述缓存服务器组,使所述缓存服务器组查找所述session获取请求中的session ID对应的session信息;
接收所述缓存服务器组发送的session获取成功信号,并将所述session获取成功信号中的session ID及其对应的session信息发送给所述集群应用服务器。
4.根据权利要求2所述的共享方法,其特征在于,在根据所述session创建请求创建的session信息有效时,所述配置所述session中心控制器,使其根据任一集群应用服务器中转的http请求管理所述缓存服务器组存储的session信息还包括:
当任一某台集群应用服务器中转的另一http请求为session更新请求时,所述session中心控制器从该session更新请求中提取session ID,并与其本地存储的session ID对比匹配;
对比匹配成功后,将所述session ID的版本号加1,并将加1后的版本号添加到所述session更新请求中,发送给所述缓存服务器组,使所述缓存服务器组根据所述session ID及其版本号存储所述session更新请求中的session信息;
接收所述缓存服务器组发送的session更新成功信号,并将所述session更新成功信号中的session ID与其版本号对应的session信息发送给所述集群应用服务器。
5.根据权利要求1所述的共享方法,其特征在于,所述方法还包括:
设置备份数据库;
配置所述session中心控制器,使所述session中心控制器以异步的方式实时更新所述备份数据库中的session信息;
以及配置所述session中心控制器,使其在启动时创建线程监听所述缓存服务器组,在判断所述缓存服务器组宕机时,从所述备份数据库中获得所需的session信息;同时发起报警通知,在所述缓存服务器组恢复后,将所述备份数据库中的数据复制到所述缓存服务器组。
6.根据权利要求1所述的共享方法,其特征在于,所述方法还包括:
配置所述session中心控制器,使其在根据所述任一集群应用服务器中转的http请求管理session信息的传递时,拦截不同步的session信息,实现所述集群环境中session信息的同步。
7.根据权利要求1至6任一项所述的共享方法,其特征在于,所述缓存服务器组包括一主缓存服务器和至少一从缓存服务器,所述主缓存服务器和所述从缓存服务器均为Redis服务器;
所述主缓存服务器用于与所述session中心控制器的通信,实现数据的写入,所述从缓存服务器实现数据的读取;
采用Redis服务器的内部机制实现所述主缓存服务器与所述从缓存服务器之间的数据同步。
8.一种session信息的共享系统,其特征在于,包括集群应用服务器、session中心控制器和缓存服务器组;
所述集群应用服务器,用于在接收客户端发送的http请求时,将所述http请求中转给所述session中心控制器;
所述缓存服务器组,用于存储session信息;
所述session中心控制器,用于接收任一集群应用服务器中转的http请求,并根据所述http请求管理所述缓存服务器组存储的session信息,以及管理session信息的传递,实现集群应用服务器与缓存服务器组间的session信息的共享。
9.根据权利要求8所述的共享系统,其特征在于,当任一集群应用服务器中转的http请求为session创建请求时,
所述session中心控制器,具体用于根据所述session创建请求在本地生成session ID,将生成的session ID添加到所述session创建请求中,并将添加有session ID的session创建请求序列化到缓存服务器组;以及用于接收缓存服务器组发送的session创建成功信号,并向所述集群应用服务器发送带有session ID的session信息;
所述缓存服务器组,用于根据session ID存储session创建请求中的session信息,并向所述session中心控制器发送session创建成功信号;
在根据所述session创建请求创建的session信息有效时,
所述session中心控制器,进一步用于接收并从所述任一集群应用服务器中转的session获取请求中提取session ID,与其本地存储的session ID对比匹配,对比匹配成功后,将session获取请求发送给所述缓存服务器组;以及用于接收缓存服务器组发送的session获取成功信号,并将session获取成功信号中的session ID及其对应的session信息发送给所述集群应用服务器;
所述缓存服务器组,用于查找session获取请求中的session ID对应的session信息,并将session获取成功信号发送给所述session中心控制器;
或者,在根据所述session创建请求创建的session信息有效时,
所述session中心控制器,进一步用于接收并从所述任一集群应用服务器中转的session更新请求中提取session ID,与其本地存储的session ID对比匹配,对比匹配成功后,将session ID的版本号加1,并将加1后的版本号添加到session更新请求中,发送给所述缓存服务器组;以及用于接收所述缓存服务器组发送的session更新成功信号,并将所述session更新成功信号中的session ID与其版本号对应的session信息发送给所述集群应用服务器;
所述缓存服务器组,用于根据所述session ID及其版本号存储所述session更新请求中的session信息,并将session更新成功信号发送给session中心控制器。
10.根据权利要求8所述的共享系统,其特征在于,所述系统还包括备份数据库;所述session中心控制器,进一步用于以异步的方式实时更新所述备份数据库中的session信息;并且所述session中心控制器在启动时创建线程监听所述缓存服务器组,在判断所述缓存服务器组宕机时,从所述备份数据库中获得所需的session信息;同时发起报警通知,在所述缓存服务器组恢复后,将所述备份数据库中的数据复制到所述缓存服务器组;
其中,所述缓存服务器组包括一主缓存服务器和至少一从缓存服务器,所述主缓存服务器和所述从缓存服务器均为Redis服务器;
所述主缓存服务器用于与所述session中心控制器的通信,实现数据的写入,所述从缓存服务器实现数据的读取;
所述主缓存服务器与所述从缓存服务器之间采用Redis服务器的内部机制实现他们之间的数据同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510780728.5A CN106713391B (zh) | 2015-11-13 | 2015-11-13 | 一种session信息的共享方法和共享系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510780728.5A CN106713391B (zh) | 2015-11-13 | 2015-11-13 | 一种session信息的共享方法和共享系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106713391A true CN106713391A (zh) | 2017-05-24 |
CN106713391B CN106713391B (zh) | 2019-12-27 |
Family
ID=58930432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510780728.5A Active CN106713391B (zh) | 2015-11-13 | 2015-11-13 | 一种session信息的共享方法和共享系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106713391B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107769961A (zh) * | 2017-09-14 | 2018-03-06 | 广州西麦科技股份有限公司 | 一种sdn控制器集群及网络系统 |
CN108121559A (zh) * | 2017-12-29 | 2018-06-05 | 重庆金融资产交易所有限责任公司 | 配置文件推送方法、服务器及存储介质 |
CN108377247A (zh) * | 2018-03-08 | 2018-08-07 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN109151061A (zh) * | 2018-09-28 | 2019-01-04 | 视联动力信息技术股份有限公司 | 一种数据存储方法和装置 |
CN109150936A (zh) * | 2017-06-19 | 2019-01-04 | 北京宝兰德软件股份有限公司 | 一种分布式集群中会话对象Session的共享方法及装置 |
CN110134372A (zh) * | 2019-07-10 | 2019-08-16 | 启迪云计算有限公司 | 一种基于规则的zookeeper session外部管理系统 |
CN110300154A (zh) * | 2019-05-30 | 2019-10-01 | 上海派拉软件股份有限公司 | 基于插件实现多浏览器session共享方法 |
CN111565209A (zh) * | 2019-08-29 | 2020-08-21 | 杭州天宽科技有限公司 | 客户端即时通信方法、装置、设备及介质 |
CN113590414A (zh) * | 2021-06-30 | 2021-11-02 | 济南浪潮数据技术有限公司 | 一种服务器集群信息采集缓存方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1471713A1 (fr) * | 2003-03-31 | 2004-10-27 | France Telecom | Procédé et système de contrôle d'accès à des sites internet au moyen d'un serveur cache |
CN201682522U (zh) * | 2010-02-08 | 2010-12-22 | 阿里巴巴集团控股有限公司 | 会话信息存储系统及应用服务器 |
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
CN103428171A (zh) * | 2012-05-17 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种session的处理方法、应用服务器及系统 |
CN103888499A (zh) * | 2012-12-21 | 2014-06-25 | 中国科学院深圳先进技术研究院 | 一种分布式对象处理的方法及系统 |
-
2015
- 2015-11-13 CN CN201510780728.5A patent/CN106713391B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1471713A1 (fr) * | 2003-03-31 | 2004-10-27 | France Telecom | Procédé et système de contrôle d'accès à des sites internet au moyen d'un serveur cache |
CN201682522U (zh) * | 2010-02-08 | 2010-12-22 | 阿里巴巴集团控股有限公司 | 会话信息存储系统及应用服务器 |
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
CN103428171A (zh) * | 2012-05-17 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种session的处理方法、应用服务器及系统 |
CN103888499A (zh) * | 2012-12-21 | 2014-06-25 | 中国科学院深圳先进技术研究院 | 一种分布式对象处理的方法及系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150936A (zh) * | 2017-06-19 | 2019-01-04 | 北京宝兰德软件股份有限公司 | 一种分布式集群中会话对象Session的共享方法及装置 |
CN107769961A (zh) * | 2017-09-14 | 2018-03-06 | 广州西麦科技股份有限公司 | 一种sdn控制器集群及网络系统 |
CN108121559A (zh) * | 2017-12-29 | 2018-06-05 | 重庆金融资产交易所有限责任公司 | 配置文件推送方法、服务器及存储介质 |
CN108377247A (zh) * | 2018-03-08 | 2018-08-07 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN108377247B (zh) * | 2018-03-08 | 2021-02-26 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN109151061A (zh) * | 2018-09-28 | 2019-01-04 | 视联动力信息技术股份有限公司 | 一种数据存储方法和装置 |
CN110300154A (zh) * | 2019-05-30 | 2019-10-01 | 上海派拉软件股份有限公司 | 基于插件实现多浏览器session共享方法 |
CN110134372A (zh) * | 2019-07-10 | 2019-08-16 | 启迪云计算有限公司 | 一种基于规则的zookeeper session外部管理系统 |
CN111565209A (zh) * | 2019-08-29 | 2020-08-21 | 杭州天宽科技有限公司 | 客户端即时通信方法、装置、设备及介质 |
CN113590414A (zh) * | 2021-06-30 | 2021-11-02 | 济南浪潮数据技术有限公司 | 一种服务器集群信息采集缓存方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106713391B (zh) | 2019-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106713391A (zh) | 一种session信息的共享方法和共享系统 | |
US9053167B1 (en) | Storage device selection for database partition replicas | |
CN103812849B (zh) | 一种本地缓存更新方法、系统、客户端及服务器 | |
CN105393220B (zh) | 用于在集群系统中部署点状虚拟服务器的系统和方法 | |
CN105245373B (zh) | 一种容器云平台系统的搭建及运行方法 | |
CN104823170B (zh) | 分布式缓存群集管理 | |
US20200241613A1 (en) | Persistent reservations for virtual disk using multiple targets | |
CN104735098B (zh) | 会话信息的控制方法和控制系统 | |
US20090144338A1 (en) | Asynchronously replicated database system using dynamic mastership | |
US10922303B1 (en) | Early detection of corrupt data partition exports | |
CN109547512B (zh) | 一种基于NoSQL的分布式Session管理的方法及装置 | |
US20090144220A1 (en) | System for storing distributed hashtables | |
CN110351246A (zh) | 服务器集群系统Socket管理方法及装置 | |
CN101442558B (zh) | 一种为p2sp网络提供索引服务的方法和系统 | |
CN105868231A (zh) | 缓存数据的更新方法及装置 | |
CN106657314A (zh) | 跨数据中心数据同步系统及方法 | |
CN106294870B (zh) | 基于对象的分布式云存储方法 | |
CN112121413B (zh) | 功能服务的响应方法、系统、装置、终端及介质 | |
CN103793485A (zh) | 客户端基于缓存数据实现查询网络数据的方法 | |
CN111158949A (zh) | 容灾架构的配置方法、切换方法及装置、设备和存储介质 | |
CN106921721A (zh) | 一种服务器、会话管理方法和系统 | |
CN103327116A (zh) | 一种网络文件的动态副本存储方法 | |
CN107404509A (zh) | 分布式服务配置系统及信息管理方法 | |
CN104539982A (zh) | 一种视频点对点资源共享调度方法、系统及节点终端 | |
CN107682460A (zh) | 一种分布式存储集群数据通信方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |