一种管理会话的方法及终端与流程

文档序号:16900784发布日期:2019-02-19 17:58阅读:200来源:国知局
一种管理会话的方法及终端与流程

本发明属于数据处理领域,尤其涉及一种管理会话的方法及终端。



背景技术:

申请号为201110450857.x的专利文献提供一种应用服务器集群实现方法及系统,用于满足集群中的应用服务器数目较多时的性能要求。本发明实施例方法包括:负载均衡器接收用户发送的任务请求;所述负载均衡器将所述任务请求分发到应用服务器集群中的一个应用服务器上;所述应用服务器根据所述任务请求生成会话信息;所述应用服务器将所述会话信息保存在分布式内存缓存系统memcached,所述分布式内存缓存系统部署在所述应用服务器集群的后端。

但是,上述专利文献的分布式内存缓存系统memcached中,一缓存节点宕机,会导致部分会话信息丢失,须重新做数据分片,切换缓存节点等处理,十分复杂,系统可靠性低。



技术实现要素:

本发明所要解决的技术问题是:如何提高用户在同一网站访问不同页面的效率。

为了解决上述技术问题,本发明采用的技术方案为:

本发明提供一种管理会话的方法,包括:

s1、当一应用服务器从负载均衡器接收到会话请求时,获取与所述会话请求对应的sessionid;

s2、根据预设的哈希算法计算与所述sessionid对应的哈希值,得到第一哈希值;

s3、与所述第一哈希值对应的两个以上memcached缓存服务器同步管理与所述sessionid对应的会话信息;

其中,所述哈希值与所述memcached缓存服务器之间是一对多关系。

优选地,所述s2具体为:

根据所述sessionid生成循环冗余校验码;

获取memcached缓存服务器的组数;其中,一组memcached缓存服务器包括两个以上memcached缓存服务器;属于同一组的两个以上memcached缓存服务器与同一哈希值相对应;

所述循环冗余校验码对所述组数进行取模运算,得到所述第一哈希值。

优选地,还包括:

当与所述第一哈希值对应的一memcached缓存服务器宕机时,从与所述第一哈希值对应的其它memcached缓存服务器中获取与所述sessionid对应的会话信息。

优选地,所述s3具体为:

若所述会话请求为写入请求,则同时保存与所述sessionid对应的会话请求至与所述第一哈希值对应的两个以上memcached缓存服务器。

优选地,所述s3具体为:

若所述会话请求为调用请求,则从与所述第一哈希值对应的任意一memcached缓存服务器中调用与所述sessionid对应的会话信息;

若所述会话请求为退出登录请求,则从与所述第一哈希值对应的两个以上memcached缓存服务器中删除与所述sessionid对应的会话信息。

本发明还提供一种管理会话的终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:

s1、当一应用服务器从负载均衡器接收到会话请求时,获取与所述会话请求对应的sessionid;

s2、根据预设的哈希算法计算与所述sessionid对应的哈希值,得到第一哈希值;

s3、与所述第一哈希值对应的两个以上memcached缓存服务器同步管理与所述sessionid对应的会话信息;

其中,所述哈希值与所述memcached缓存服务器之间是一对多关系。

优选地,所述s2具体为:

根据所述sessionid生成循环冗余校验码;

获取memcached缓存服务器的组数;其中,一组memcached缓存服务器包括两个以上memcached缓存服务器;属于同一组的两个以上memcached缓存服务器与同一哈希值相对应;

所述循环冗余校验码对所述组数进行取模运算,得到所述第一哈希值。

优选地,还包括:

当与所述第一哈希值对应的一memcached缓存服务器宕机时,从与所述第一哈希值对应的其它memcached缓存服务器中获取与所述sessionid对应的会话信息。

优选地,所述s3具体为:

若所述会话请求为写入请求,则同时保存与所述sessionid对应的会话请求至与所述第一哈希值对应的两个以上memcached缓存服务器。

优选地,所述s3具体为:

若所述会话请求为调用请求,则从与所述第一哈希值对应的任意一memcached缓存服务器中调用与所述sessionid对应的会话信息;

若所述会话请求为退出登录请求,则从与所述第一哈希值对应的两个以上memcached缓存服务器中删除与所述sessionid对应的会话信息。

本发明具有如下有益效果:

1、本发明提供一种管理会话的方法及终端,当应用服务器集群中的一应用服务器从负载均衡器接收到会话请求时,根据与会话请求对应的sessionid自动选择两个以上memcached缓存服务器同步管理同一会话信息,使得即使一个memcached缓存服务器宕机,应用服务器也能从其它memcached缓存服务器中实时获取所需的会话信息,用户在访问网站的过程中,不会因一个memcached服务器宕机而被迫退出网站,重新登录,提高了用户在同一网站访问不同页面的效率和整个网站系统的可靠性。

2、进一步地,每一用户在访问网站时具有唯一的sessionid,通过本发明提供的哈希算法实现了将不同用户的会话信息分片保存至不同的memcached缓存服务器组中,当用户量激增时,可通过扩展memcached缓存服务器组数的方式快速便捷地解决缓存不足的问题。同时,在用户访问量大时,通过多组memcached缓存服务器管理不同用户的会话信息,将缓存压力由多组缓存服务器分摊,有效减少在每台缓存服务器上的数据操作量,有利于增加网站系统整体的服务能力。

3、进一步地,用户在访问网站的过程中,由于同时有两台以上的memcached缓存服务器管理同一用户的所有会话信息,当其中一台memcached缓存服务器宕机时,应用服务器可快速从同组的其它memcached缓存服务器中调取该用户所需的会话信息,用户即可在当前跳转的页面顺畅操作,用户对于存储有其会话信息的memcached缓存服务器故障无感知,极大程度上提高了用户访问网站的体验。

4、进一步地,本发明将同一用户的会话信息同时保存至两个以上memcached缓存服务器中,降低了该用户的会话信息丢失的可能性,极大程度上保证了用户在同一网站上访问不同页面的过程中及时获取所需的会话信息,顺畅访问不同网页。

5、进一步地,当需要调用一用户的会话信息时,应用服务器可从对应memcached缓存服务器组中的任意一个memcached缓存服务器中调取相关会话信息。因此,当该组memcached缓存服务器中一memcached缓存服务器故障时,无需进行缓存服务器节点切换或数据重新分片等复杂处理,极大地提高了当memcached缓存服务器存在故障时,获取会话信息的效率。当一用户退出网站登录时,管理该用户的会话信息的memcached缓存服务器组中的每一缓存服务器均将该用户对应的会话信息删除,避免同一sessionid后续分配给其它用户使用时造成数据冲突。

附图说明

图1为本发明提供的一种管理会话的方法的具体实施方式的流程框图;

图2为本发明的实施例提供的应用服务器和memcached缓存服务器部署示意图;

图3为本发明提供的一种管理会话的终端的具体实施方式的结构框图;

标号说明:

1、处理器;2、存储器。

具体实施方式

下面结合附图和具体实施例来对本发明进行详细的说明。

请参照图1至图3,

本发明的实施例一为:

如图1所示,本实施例提供一种管理会话的方法,包括:

s1、当一应用服务器从负载均衡器接收到会话请求时,获取与所述会话请求对应的sessionid。

其中,本实施例提供的应用服务器和memcached缓存服务器部署示意图如图2所示。用户通过浏览器发送会话请求,负载均衡器将会话请求通过预设的轮询机制分配给应用服务器集群中的一应用服务器。

用户一旦登录网站后,所有由该用户发起的请求都会带上对应的sessionid,每个用户的sessionid是不同的,本实施例使用sessionid作为会话标识。

s2、根据预设的哈希算法计算与所述sessionid对应的哈希值,得到第一哈希值。具体为:

s21、根据所述sessionid生成循环冗余校验码;

s22、获取memcached缓存服务器的组数;其中,一组memcached缓存服务器包括两个以上memcached缓存服务器;所述哈希值与所述memcached缓存服务器之间是一对多关系;属于同一组的两个以上memcached缓存服务器与同一哈希值相对应;

s23、所述循环冗余校验码对所述组数进行取模运算,得到所述第一哈希值。

其中,memcached是一个高性能的分布式内存对象缓存系统,基于一个存储键/值对的hashmap。其守护进程(daemon)是用c语言描述的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。memcached客户端会部署到每一个应用服务器中,应用服务器在保存和读取会话的时候,需要通过本机的memcached客户端选择与哪个memcached缓存服务器进行通讯。memcached缓存服务器之间是不做任何通讯,集群和数据分布式负载都需要由客户端来处理。应用服务器在选择memcached缓存服务器的时候,会先通过保存的键值(即用户的sessionid)先计算出一个哈希值,然后根据这个哈希值选择一个对应的memcached缓存服务器。memcached客户端通过哈希算法将不同用户的会话信息分散到多台memcached缓存服务器上,通过分布式的方式可以支持大量的会话。

例如,应用服务器集群中的每一应用服务器均与三组memcached缓存服务器连接,每组包含两台memcached缓存服务器,则根据sessionid计算出的哈希值的取值范围为[1,3],第一组memcacheda和memcacheda’对应的哈希值为1,第二组memcachedb和memcachedb’对应的哈希值为2,第三组memcachedc和memcachedc’对应的哈希值为3。

其中,由于本实施例将用户会话独立保存至memcached缓存服务器中,应用服务器集群中的每一应用服务器均可以访问各个memcached缓存服务器,因此,负载均衡器不需要支持粘性,可以大大提升负载均衡器的性能。例如,用户a第一次访问网站时的请求通过负载均衡器分配至应用服务器1,那么对话就创建在服务器1上了,通过本实施例提供的架构,负载均衡器无需要保证接下来的用户a的请求每次都落在服务器1上。

其中,每一用户在访问网站时具有唯一的sessionid,通过本实施例提供的哈希算法实现了将不同用户的会话信息分片保存至不同的memcached缓存服务器组中,当用户量激增时,可通过扩展memcached缓存服务器组数的方式快速便捷地解决缓存不足的问题。同时,在用户访问量大时,通过多组memcached缓存服务器管理不同用户的会话信息,将缓存压力由多组缓存服务器分摊,有效减少在每台缓存服务器上的数据操作量,有利于增加网站系统整体的服务能力。

s3、与所述第一哈希值对应的两个以上memcached缓存服务器同步管理与所述sessionid对应的会话信息。

例如,根据用户a的sessionid计算得到的第一哈希值为2,每一组包含两个memcached缓存服务器,则由第二组的两台memcached缓存服务器memcachedb和memcachedb’同步管理用户a的所有会话信息。

应用服务器集群中的每一应用服务器均与三组memcached缓存服务器连接,即使是处理用户a会话请求的应用服务器出故障,其它应用服务器也可从第二组memcahced缓存服务器中调用、写入或删除用户a的会话信息。

所述s3具体为:

若所述会话请求为写入请求,则同时保存与所述sessionid对应的会话请求至与所述第一哈希值对应的两个以上memcached缓存服务器。

例如,当用户首次登陆网站时,将用户a的sessionid作为会话标识保存到memcachedb和memcachedb’中,将用户a的会话信息作为sessionid的值保存到两缓存服务器中。

其中,本实施例将同一用户的会话信息同时保存至两个以上memcached缓存服务器中,降低了该用户的会话信息丢失的可能性,极大程度上保证了用户在同一网站上访问不同页面的过程中及时获取所需的会话信息,顺畅访问不同网页。

若所述会话请求为调用请求,则从与所述第一哈希值对应的任意一memcached缓存服务器中调用与所述sessionid对应的会话信息。

例如,用户a登陆网站后,欲从当前页面a跳转至另一页面b,浏览器发送页面跳转请求至一应用服务器,该应用服务器通过页面跳转请求中携带的sessionid获知管理用户a的会话信息的缓存服务器为memcachedb和memcachedb’,并从memcachedb或memcachedb’中调取用户a的会话信息,应用服务器根据调取到的会话信息确认了用户a属于登录状态,则用户a可直接已登录状态访问页面b而无需再次登录。

其中,当需要调用一用户的会话信息时,应用服务器可从对应memcached缓存服务器组中的任意一个memcached缓存服务器中调取相关会话信息。因此,当该组memcached缓存服务器中一memcached缓存服务器故障时,无需进行缓存服务器节点切换或数据重新分片等复杂处理,极大地提高了当memcached缓存服务器存在故障时,获取会话信息的效率。

优选地,当与所述第一哈希值对应的一memcached缓存服务器宕机时,从与所述第一哈希值对应的其它memcached缓存服务器中获取与所述sessionid对应的会话信息。

例如,memcachedb缓存服务器故障,应用服务器可从memcachedb’中调取用户a的会话信息。

其中,当需要调用一用户的会话信息时,应用服务器可从对应memcached缓存服务器组中的任意一个memcached缓存服务器中调取相关会话信息。因此,当该组memcached缓存服务器中一memcached缓存服务器故障时,无需进行缓存服务器节点切换或数据重新分片等复杂处理,极大地提高了当memcached缓存服务器存在故障时,获取会话信息的效率。

若所述会话请求为退出登录请求,则从与所述第一哈希值对应的两个以上memcached缓存服务器中删除与所述sessionid对应的会话信息。

例如,当用户a退出登录网站时,删除memcachedb和memcachedb’中与用户a相关的所有会话信息。

其中,当一用户退出网站登录时,管理该用户的会话信息的memcached缓存服务器组中的每一缓存服务器均将该用户对应的会话信息删除,避免同一sessionid后续分配给其它用户使用时造成数据冲突。

综上所述,本实施例提供一种管理会话的方法,当应用服务器集群中的一应用服务器从负载均衡器接收到会话请求时,根据与会话请求对应的sessionid自动选择两个以上memcached缓存服务器同步管理同一会话信息,使得即使一个memcached缓存服务器宕机,应用服务器也能从其它memcached缓存服务器中实时获取所需的会话信息,用户在访问网站的过程中,不会因一个memcached服务器宕机而被迫退出网站,重新登录,提高了用户在同一网站访问不同页面的效率和整个网站系统的可靠性。

本发明提供的实施例二为:

如图3所示,本实施例提供一种管理会话的终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:

s1、当一应用服务器从负载均衡器接收到会话请求时,获取与所述会话请求对应的sessionid。

其中,本实施例提供的应用服务器和memcached缓存服务器部署示意图如图2所示。用户通过浏览器发送会话请求,负载均衡器将会话请求通过预设的轮询机制分配给应用服务器集群中的一应用服务器。

用户一旦登录网站后,所有由该用户发起的请求都会带上对应的sessionid,每个用户的sessionid是不同的,本实施例使用sessionid作为会话标识。

s2、根据预设的哈希算法计算与所述sessionid对应的哈希值,得到第一哈希值。具体为:

s21、根据所述sessionid生成循环冗余校验码;

s22、获取memcached缓存服务器的组数;其中,一组memcached缓存服务器包括两个以上memcached缓存服务器;所述哈希值与所述memcached缓存服务器之间是一对多关系;属于同一组的两个以上memcached缓存服务器与同一哈希值相对应;

s23、所述循环冗余校验码对所述组数进行取模运算,得到所述第一哈希值。

其中,memcached是一个高性能的分布式内存对象缓存系统,基于一个存储键/值对的hashmap。其守护进程(daemon)是用c语言描述的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。memcached客户端会部署到每一个应用服务器中,应用服务器在保存和读取会话的时候,需要通过本机的memcached客户端选择与哪个memcached缓存服务器进行通讯。memcached缓存服务器之间是不做任何通讯,集群和数据分布式负载都需要由客户端来处理。应用服务器在选择memcached缓存服务器的时候,会先通过保存的键值(即用户的sessionid)先计算出一个哈希值,然后根据这个哈希值选择一个对应的memcached缓存服务器。memcached客户端通过哈希算法将不同用户的会话信息分散到多台memcached缓存服务器上,通过分布式的方式可以支持大量的会话。

例如,应用服务器集群中的每一应用服务器均与三组memcached缓存服务器连接,每组包含两台memcached缓存服务器,则根据sessionid计算出的哈希值的取值范围为[1,3],第一组memcacheda和memcacheda’对应的哈希值为1,第二组memcachedb和memcachedb’对应的哈希值为2,第三组memcachedc和memcachedc’对应的哈希值为3。

其中,由于本实施例将用户会话独立保存至memcached缓存服务器中,应用服务器集群中的每一应用服务器均可以访问各个memcached缓存服务器,因此,负载均衡器不需要支持粘性,可以大大提升负载均衡器的性能。例如,用户a第一次访问网站时的请求通过负载均衡器分配至应用服务器1,那么对话就创建在服务器1上了,通过本实施例提供的架构,负载均衡器无需要保证接下来的用户a的请求每次都落在服务器1上。

其中,每一用户在访问网站时具有唯一的sessionid,通过本实施例提供的哈希算法实现了将不同用户的会话信息分片保存至不同的memcached缓存服务器组中,当用户量激增时,可通过扩展memcached缓存服务器组数的方式快速便捷地解决缓存不足的问题。同时,在用户访问量大时,通过多组memcached缓存服务器管理不同用户的会话信息,将缓存压力由多组缓存服务器分摊,有效减少在每台缓存服务器上的数据操作量,有利于增加网站系统整体的服务能力。

s3、与所述第一哈希值对应的两个以上memcached缓存服务器同步管理与所述sessionid对应的会话信息。

例如,根据用户a的sessionid计算得到的第一哈希值为2,每一组包含两个memcached缓存服务器,则由第二组的两台memcached缓存服务器memcachedb和memcachedb’同步管理用户a的所有会话信息。

应用服务器集群中的每一应用服务器均与三组memcached缓存服务器连接,即使是处理用户a会话请求的应用服务器出故障,其它应用服务器也可从第二组memcahced缓存服务器中调用、写入或删除用户a的会话信息。

所述s3具体为:

若所述会话请求为写入请求,则同时保存与所述sessionid对应的会话请求至与所述第一哈希值对应的两个以上memcached缓存服务器。

例如,当用户首次登陆网站时,将用户a的sessionid作为会话标识保存到memcachedb和memcachedb’中,将用户a的会话信息作为sessionid的值保存到两缓存服务器中。

其中,本实施例将同一用户的会话信息同时保存至两个以上memcached缓存服务器中,降低了该用户的会话信息丢失的可能性,极大程度上保证了用户在同一网站上访问不同页面的过程中及时获取所需的会话信息,顺畅访问不同网页。

若所述会话请求为调用请求,则从与所述第一哈希值对应的任意一memcached缓存服务器中调用与所述sessionid对应的会话信息。

例如,用户a登陆网站后,欲从当前页面a跳转至另一页面b,浏览器发送页面跳转请求至一应用服务器,该应用服务器通过页面跳转请求中携带的sessionid获知管理用户a的会话信息的缓存服务器为memcachedb和memcachedb’,并从memcachedb或memcachedb’中调取用户a的会话信息,应用服务器根据调取到的会话信息确认了用户a属于登录状态,则用户a可直接已登录状态访问页面b而无需再次登录。

其中,当需要调用一用户的会话信息时,应用服务器可从对应memcached缓存服务器组中的任意一个memcached缓存服务器中调取相关会话信息。因此,当该组memcached缓存服务器中一memcached缓存服务器故障时,无需进行缓存服务器节点切换或数据重新分片等复杂处理,极大地提高了当memcached缓存服务器存在故障时,获取会话信息的效率。

优选地,当与所述第一哈希值对应的一memcached缓存服务器宕机时,从与所述第一哈希值对应的其它memcached缓存服务器中获取与所述sessionid对应的会话信息。

例如,memcachedb缓存服务器故障,应用服务器可从memcachedb’中调取用户a的会话信息。

其中,当需要调用一用户的会话信息时,应用服务器可从对应memcached缓存服务器组中的任意一个memcached缓存服务器中调取相关会话信息。因此,当该组memcached缓存服务器中一memcached缓存服务器故障时,无需进行缓存服务器节点切换或数据重新分片等复杂处理,极大地提高了当memcached缓存服务器存在故障时,获取会话信息的效率。

若所述会话请求为退出登录请求,则从与所述第一哈希值对应的两个以上memcached缓存服务器中删除与所述sessionid对应的会话信息。

例如,当用户a退出登录网站时,删除memcachedb和memcachedb’中与用户a相关的所有会话信息。

其中,当一用户退出网站登录时,管理该用户的会话信息的memcached缓存服务器组中的每一缓存服务器均将该用户对应的会话信息删除,避免同一sessionid后续分配给其它用户使用时造成数据冲突。

综上所述,本实施例提供一种管理会话的终端,当应用服务器集群中的一应用服务器从负载均衡器接收到会话请求时,根据与会话请求对应的sessionid自动选择两个以上memcached缓存服务器同步管理同一会话信息,使得即使一个memcached缓存服务器宕机,应用服务器也能从其它memcached缓存服务器中实时获取所需的会话信息,用户在访问网站的过程中,不会因一个memcached服务器宕机而被迫退出网站,重新登录,提高了用户在同一网站访问不同页面的效率和整个网站系统的可靠性。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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