CN106453661A - 一种http服务器集群的会话管理方法 - Google Patents
一种http服务器集群的会话管理方法 Download PDFInfo
- Publication number
- CN106453661A CN106453661A CN201611129255.3A CN201611129255A CN106453661A CN 106453661 A CN106453661 A CN 106453661A CN 201611129255 A CN201611129255 A CN 201611129255A CN 106453661 A CN106453661 A CN 106453661A
- Authority
- CN
- China
- Prior art keywords
- session
- redis
- user
- http
- server cluster
- 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.)
- Pending
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]
-
- 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
-
- 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)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种HTTP服务器集群的会话管理方法,包括如下步骤:步骤1:用默认配置设立一个Redis数据库;步骤2:当用户首次访问Redis数据库时,为该用户生成一个随机数作为会话ID,将会话ID转换为字符串后,设为KEY1;步骤3:获取步骤2所述用户的ip地址,将ip地址与KEY1做字符串连接后,设为KEY2,然后用Redis的existsKEY2命令检验会话是否己存在,如果存在则从步骤2重新开始;步骤4:将KEY1作为Cookie写在http响应头中,并对上述Redis数据库执行相应操作。本发明,可以管理大量会话,而且会话中保存的信息,可以被处于HTTP服务器集群中的任何HTTP服务程序使用。
Description
技术领域
本发明涉及服务器集群技术领域,具体说是一种HTTP服务器集群的会话管理方法。
背景技术
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。例如:web服务器集群、HTTP服务器集群(Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的)。
现有技术中,web站点(web服务器)经常需要为用户(客户端)的登陆状态保存一个会话信息,会话用于保存用户登录过程中的一些行为,例如:在客户端第一次请求web服务器的时候,web服务器生成一种称为“会话标识符”的ID,然后伴随响应发送给客户端,之后的通信中客户端发来的请求只需要带着这个特定的ID,web服务器就可以知道这是哪个客户端了。常见web会话管理的方式有三种:
1)基于server端session的管理方式;
2)cookie-base的管理方式;
3)token-base的管理方式。
传统的http服务程序的会话只对这个服务程序自身有效,但复杂的站点通常是多http服务程序的组合,所以传统的http会话技术己经越来越难以适应发展的需要了。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种HTTP服务器集群的会话管理方法,不但可以管理大量会话,而且处于HTTP服务器集群中的任何http服务程序都可以用。
为达到以上目的,本发明采取的技术方案是:
一种HTTP服务器集群的会话管理方法,其特征在于,包括如下步骤:
步骤1:用默认配置设立一个Redis数据库;
步骤2:当用户首次访问Redis数据库时,为该用户生成一个随机数作为会话ID,将会话ID转换为字符串后,设为KEY1;
步骤3:获取步骤2所述用户的ip地址,将ip地址与KEY1做字符串连接后,设为KEY2,然后用Redis的exists KEY2命令检验会话是否己存在,如果存在则从步骤2重新开始;
步骤4:将KEY1作为Cookie写在http响应头中,并对上述Redis数据库执行以下操作:
为该会话建立一个hashmap容器以存储其数据;
为hashmap容器设置生命周期,使其在一段时间内不访问自动失效。
在上述技术方案的基础上,以会话ID为键在Redis中关联到一个Redis哈希表,用这个Redis哈希表保存用户的会话数据。
在上述技术方案的基础上,步骤4中,所述一段时间默认为1200秒。
在上述技术方案的基础上,根据http协议的约定,当用户再次访问HTTP服务器集群中的任意http服务程序的时候,会在请求头的Cookie字段中携带KEY1,为用户提供服务的具体http服务程序将用户的ip地址与KEY1做字符串连接,得到KEY2,然后再次为hashmap容器设置生命周期,使其在一段时间内不访问自动失效。
在上述技术方案的基础上,当所述为用户提供服务的具体http服务程序想要向会话中写入数据键a值b时,
通过Redis命令hset KEY2a b写入数据,
通过Redis命令hget KEY2a读取该数据。
本发明所述的HTTP服务器集群的会话管理方法,可以管理大量会话,而且会话中保存的信息,可以被处于HTTP服务器集群中的任何http服务程序使用。
本发明所述的HTTP服务器集群的会话管理方法,具有以下优点:
1、能够很好地支持负载均衡。
2、服务之间的会话数据共享更自然,会话信息可以为多个同一集群内的服务程序所用。
3、性能高。
4、用户的会话数据不会随着服务的崩溃而丢失。
当服务崩溃时,因为会话数据存在于Redis数据库中,而会话ID在浏览器端(客户端)有记录,故只要服务器重新启动,用户的会话数据是不会丢失的。
例如:当用户登录网站,写好一篇文章准备发布,此时服务因为故障而遭遇了崩溃重启。那么重新启动的服务依然可以在收到用户的文章和会话ID而从Redis数据库中读取到用户的身份信息继续发布该文章。而如果传统的http服务中的会话,会在服务重启后丢失状态,就会将该用户视为未登录用户而阻止其发布文章,导致用户受到损失。
附图说明
本发明有如下附图:
图1本发明的数据传递示意图。
图2本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图2所示,本发明所述的HTTP服务器集群的会话管理方法,包括如下步骤:
步骤1:用默认配置设立一个Redis数据库;
Redis是一个开源的、使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API;设立Redis数据库的具体步骤按现有技术实施即可,本发明不再详述;
步骤2:当用户首次访问Redis数据库时,为该用户生成一个随机数作为会话ID,将会话ID转换为字符串后,设为KEY1;
步骤3:获取步骤2所述用户的ip地址,将ip地址与KEY1做字符串连接后,设为KEY2,然后用Redis的exists KEY2命令检验会话是否己存在,如果存在则从步骤2重新开始;
Redis exists命令被用来检查键是否存在于Redis;
步骤4:将KEY1作为Cookie写在http响应头中,并对上述Redis数据库执行以下操作:
为该会话建立一个hashmap容器以存储其数据,例如:hset KEY2KEY1 1;
为hashmap容器设置生命周期,使其在一段时间内不访问自动失效,例如:expireKEY2 1200;
hset命令用于为哈希表中的字段赋值,如果哈希表不存在,一个新的哈希表被创建并进行HSET操作,如果字段已经存在于哈希表中,旧值将被覆盖;
expire命令用于设定键有效期,到期时间后键不会在Redis中使用。
如图1所示,用一个Cookie(KEY1)作为会话ID,这个会话ID会被包含在http请求中。以这个会话ID为键可以在Redis中关联到一个Redis哈希表,用这个Redis哈希表则可以保存用户的会话数据。
在上述技术方案的基础上,根据http协议的约定,当用户再次访问HTTP服务器集群中的任意http服务程序的时候,会在请求头的Cookie字段中携带KEY1,为用户提供服务的具体http服务程序将用户的ip地址与KEY1做字符串连接,得到KEY2,然后再次为hashmap容器设置生命周期,使其在一段时间内不访问自动失效,例如:再次执行expire KEY2 1200更新会话的生命周期。
在上述技术方案的基础上,当所述为用户提供服务的具体http服务程序想要向会话中写入数据键a值b时,
通过Redis命令hset KEY2a b写入数据,
通过Redis命令hget KEY2a读取该数据。
以下通过一个具体的应用场景举例进一步说明本申请所述技术方案。
假设有一个web站点由多台php服务器组成,使用nginx做负载均衡。网站需要做用户登录状态的管理,当用户凭借用户名和密码登录后,在一定时间内用户进行操作不需要重新登录。当用户输入用户名和密码后,用户的登录信息记录在会话中。
按现有技术实施,用户的访问请求会根据nginx的负载均衡被转发到随机php服务器上,而新php服务器没有用户的登录状态,故会话中断。
按本发明所述方法实施,具体步骤如下:只需要用本技术提供的方法替代原有的php会话操作即可。
显然本发明所述方法优于现有技术,解决了会话丢失的问题,实现会话在服务间的共享,因此本发明所述方法更适合于在集群情况下采用,可以避免会话丢失,并具对原有编程习惯改变极少。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (5)
1.一种HTTP服务器集群的会话管理方法,其特征在于,包括如下步骤:
步骤1:用默认配置设立一个Redis数据库;
步骤2:当用户首次访问Redis数据库时,为该用户生成一个随机数作为会话ID,将会话ID转换为字符串后,设为KEY1;
步骤3:获取步骤2所述用户的ip地址,将ip地址与KEY1做字符串连接后,设为KEY2,然后用Redis的exists KEY2命令检验会话是否己存在,如果存在则从步骤2重新开始;
步骤4:将KEY1作为Cookie写在http响应头中,并对上述Redis数据库执行以下操作:
为该会话建立一个hashmap容器以存储其数据;
为hashmap容器设置生命周期,使其在一段时间内不访问自动失效。
2.如权利要求1所述的HTTP服务器集群的会话管理方法,其特征在于:以会话ID为键在Redis中关联到一个Redis哈希表,用这个Redis哈希表保存用户的会话数据。
3.如权利要求1所述的HTTP服务器集群的会话管理方法,其特征在于:步骤4中,所述一段时间默认为1200秒。
4.如权利要求1所述的HTTP服务器集群的会话管理方法,其特征在于:根据http协议的约定,当用户再次访问HTTP服务器集群中的任意http服务程序的时候,会在请求头的Cookie字段中携带KEY1,为用户提供服务的具体http服务程序将用户的ip地址与KEY1做字符串连接,得到KEY2,然后再次为hashmap容器设置生命周期,使其在一段时间内不访问自动失效。
5.如权利要求4所述的HTTP服务器集群的会话管理方法,其特征在于:当所述为用户提供服务的具体http服务程序想要向会话中写入数据键a值b时,
通过Redis命令hset KEY2 a b写入数据,
通过Redis命令hget KEY2 a读取该数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611129255.3A CN106453661A (zh) | 2016-12-09 | 2016-12-09 | 一种http服务器集群的会话管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611129255.3A CN106453661A (zh) | 2016-12-09 | 2016-12-09 | 一种http服务器集群的会话管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106453661A true CN106453661A (zh) | 2017-02-22 |
Family
ID=58217093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611129255.3A Pending CN106453661A (zh) | 2016-12-09 | 2016-12-09 | 一种http服务器集群的会话管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106453661A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107196950A (zh) * | 2017-06-12 | 2017-09-22 | 武汉斗鱼网络科技有限公司 | 校验方法、装置及服务端 |
CN107370818A (zh) * | 2017-07-31 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种分布式会话对象管理方法及系统 |
CN108306928A (zh) * | 2017-12-22 | 2018-07-20 | 努比亚技术有限公司 | session管理方法、web服务器及计算机可读存储介质 |
CN108737541A (zh) * | 2018-05-18 | 2018-11-02 | 成都九洲迪飞科技有限责任公司 | 一种web会话管理系统及管理方法 |
CN109547481A (zh) * | 2018-12-28 | 2019-03-29 | 深圳竹云科技有限公司 | 一种基于Redis有序集合和令牌方式的网站用户会话管理方法 |
CN109981811A (zh) * | 2019-03-12 | 2019-07-05 | 众安信息技术服务有限公司 | 一种终端应用程序的会话id生成方法及系统 |
CN111711621A (zh) * | 2020-06-05 | 2020-09-25 | 平安科技(深圳)有限公司 | 基于集群环境的电话会话管理方法、装置及计算机设备 |
CN112153103A (zh) * | 2020-08-10 | 2020-12-29 | 招联消费金融有限公司 | 会话管理方法、装置、计算机设备和存储介质 |
CN112486699A (zh) * | 2020-11-20 | 2021-03-12 | 湖南麒麟信安科技股份有限公司 | 一种基于国产数据库的session管理中间件、系统及运行方法 |
CN112839016A (zh) * | 2019-11-25 | 2021-05-25 | 上海哔哩哔哩科技有限公司 | 会话控制方法及装置 |
CN113329062A (zh) * | 2021-05-10 | 2021-08-31 | 灵羲科技(北京)有限公司 | 数据共享方法、装置、电子设备和存储介质 |
CN114666315A (zh) * | 2022-03-24 | 2022-06-24 | 杭州迪普科技股份有限公司 | 负载均衡设备的http请求处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179134A (zh) * | 2013-04-19 | 2013-06-26 | 中国建设银行股份有限公司 | 基于Cookie的单点登录方法、系统及其应用服务器 |
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
CN103491057A (zh) * | 2012-06-12 | 2014-01-01 | 深圳中兴网信科技有限公司 | 一种共享会话数据的方法、系统及装置 |
CN103685304A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种共享session信息的方法和系统 |
CN104580226A (zh) * | 2015-01-15 | 2015-04-29 | 上海瀚之友信息技术服务有限公司 | 一种共享会话数据的系统和方法 |
CN105138395A (zh) * | 2015-06-24 | 2015-12-09 | 江苏南亿迪纳数字科技发展有限公司 | session管理方法 |
-
2016
- 2016-12-09 CN CN201611129255.3A patent/CN106453661A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
CN103491057A (zh) * | 2012-06-12 | 2014-01-01 | 深圳中兴网信科技有限公司 | 一种共享会话数据的方法、系统及装置 |
CN103179134A (zh) * | 2013-04-19 | 2013-06-26 | 中国建设银行股份有限公司 | 基于Cookie的单点登录方法、系统及其应用服务器 |
CN103685304A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种共享session信息的方法和系统 |
CN104580226A (zh) * | 2015-01-15 | 2015-04-29 | 上海瀚之友信息技术服务有限公司 | 一种共享会话数据的系统和方法 |
CN105138395A (zh) * | 2015-06-24 | 2015-12-09 | 江苏南亿迪纳数字科技发展有限公司 | session管理方法 |
Non-Patent Citations (1)
Title |
---|
彭国军,付建明,梁玉: "《软件安全》", 30 September 2015 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107196950A (zh) * | 2017-06-12 | 2017-09-22 | 武汉斗鱼网络科技有限公司 | 校验方法、装置及服务端 |
WO2018228036A1 (zh) * | 2017-06-12 | 2018-12-20 | 武汉斗鱼网络科技有限公司 | 校验方法、装置、服务端及可读存储介质 |
CN107370818A (zh) * | 2017-07-31 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种分布式会话对象管理方法及系统 |
CN108306928A (zh) * | 2017-12-22 | 2018-07-20 | 努比亚技术有限公司 | session管理方法、web服务器及计算机可读存储介质 |
CN108737541A (zh) * | 2018-05-18 | 2018-11-02 | 成都九洲迪飞科技有限责任公司 | 一种web会话管理系统及管理方法 |
CN109547481A (zh) * | 2018-12-28 | 2019-03-29 | 深圳竹云科技有限公司 | 一种基于Redis有序集合和令牌方式的网站用户会话管理方法 |
CN109981811B (zh) * | 2019-03-12 | 2022-05-31 | 众安信息技术服务有限公司 | 一种终端应用程序的会话id生成方法及系统 |
CN109981811A (zh) * | 2019-03-12 | 2019-07-05 | 众安信息技术服务有限公司 | 一种终端应用程序的会话id生成方法及系统 |
CN112839016A (zh) * | 2019-11-25 | 2021-05-25 | 上海哔哩哔哩科技有限公司 | 会话控制方法及装置 |
CN112839016B (zh) * | 2019-11-25 | 2023-03-21 | 上海哔哩哔哩科技有限公司 | 会话控制方法及装置 |
CN111711621A (zh) * | 2020-06-05 | 2020-09-25 | 平安科技(深圳)有限公司 | 基于集群环境的电话会话管理方法、装置及计算机设备 |
CN112153103A (zh) * | 2020-08-10 | 2020-12-29 | 招联消费金融有限公司 | 会话管理方法、装置、计算机设备和存储介质 |
CN112153103B (zh) * | 2020-08-10 | 2022-12-23 | 招联消费金融有限公司 | 会话管理方法、装置、计算机设备和存储介质 |
CN112486699A (zh) * | 2020-11-20 | 2021-03-12 | 湖南麒麟信安科技股份有限公司 | 一种基于国产数据库的session管理中间件、系统及运行方法 |
CN112486699B (zh) * | 2020-11-20 | 2023-10-24 | 湖南麒麟信安科技股份有限公司 | 一种基于国产数据库的session管理中间件、系统及运行方法 |
CN113329062A (zh) * | 2021-05-10 | 2021-08-31 | 灵羲科技(北京)有限公司 | 数据共享方法、装置、电子设备和存储介质 |
CN114666315A (zh) * | 2022-03-24 | 2022-06-24 | 杭州迪普科技股份有限公司 | 负载均衡设备的http请求处理方法及装置 |
CN114666315B (zh) * | 2022-03-24 | 2023-09-12 | 杭州迪普科技股份有限公司 | 负载均衡设备的http请求处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106453661A (zh) | 一种http服务器集群的会话管理方法 | |
CN108306877B (zh) | 基于node js的用户身份信息的验证方法、装置和存储介质 | |
CN104580226B (zh) | 一种共享会话数据的系统和方法 | |
CN103765851B (zh) | 用于到任何服务的透明的层2重定向的系统和方法 | |
CN104054316B (zh) | 用于对sms中心进行负载平衡和建立虚拟专用网络的系统和方法 | |
US20170185678A1 (en) | Crawler system and method | |
US20190073430A1 (en) | Systems and methods for dynamic c# serialization | |
CN103716333B (zh) | 用于管理应用账号的方法、终端、服务器和系统 | |
CN104410674B (zh) | 一种单点登录系统的web会话同步方法 | |
CN108632241B (zh) | 一种多应用系统统一登录方法和装置 | |
CN106302490A (zh) | 一种基于Token的Web会话构建和服务调用方法 | |
WO2017084348A1 (zh) | Ip硬盘的管理方法和装置 | |
CN110147240A (zh) | 基于云存储的应用程序安装方法、系统及存储介质 | |
CN102624695A (zh) | 第三方发起远程方之间的通信 | |
CN105812321B (zh) | 一种基于用户信息管理文件资源的网络文件系统和处理方法 | |
WO2018024176A1 (zh) | 一种防止同一用户重复登录的装置和方法 | |
CN103490896B (zh) | 多用户网站自动登录器及其实现方法 | |
CN106104550A (zh) | 网站信息提取装置、系统、网站信息提取方法以及网站信息提取程序 | |
CN106648838B (zh) | 一种资源池管理的配置方法及装置 | |
JP2020530734A (ja) | ネットワークノードによる情報の伝搬 | |
CA2845932C (en) | Method and system for registering software systems in data-sharing sessions | |
JP2021039585A (ja) | クライアント又はサーバとの接続を制御する方法 | |
CN111585786A (zh) | 一种大数据集群免密搭建方法的实现 | |
US20070214165A1 (en) | Computer product, session management method, and session management apparatus | |
CN109547481A (zh) | 一种基于Redis有序集合和令牌方式的网站用户会话管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170222 |
|
RJ01 | Rejection of invention patent application after publication |