首页> 中国专利> 基于Quorum机制实现权限数据缓存同步的方法及装置

基于Quorum机制实现权限数据缓存同步的方法及装置

摘要

本发明提供基于Quorum机制实现n个缓存服务器权限数据缓存同步的方法,包括:将需要更新的权限数据更新到k个缓存服务器中,整数k大于0且小于或等于n,之后提示更新成功,其中,所述权限数据包括版本号;在提示更新成功之后,当接收到用户发来的权限数据获取请求时,从任意n-k+1个缓存服务器中读取权限数据以获取n-k+1组权限数据,并将其中版本号最新的权限数据返回给用户。

著录项

  • 公开/公告号CN106656904A

    专利类型发明专利

  • 公开/公告日2017-05-10

    原文格式PDF

  • 申请/专利号CN201510711801.3

  • 发明设计人 刘恩英;

    申请日2015-10-28

  • 分类号H04L29/06;H04L29/08;G06F17/30;

  • 代理机构中原信达知识产权代理有限责任公司;

  • 代理人张一军

  • 地址 100080 北京市海淀区杏石口路65号西杉创意园四区11C楼东段1-4层西段1-4层

  • 入库时间 2023-06-19 02:10:49

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-03

    授权

    授权

  • 2019-08-06

    专利申请权的转移 IPC(主分类):H04L29/06 登记生效日:20190717 变更前: 变更后: 申请日:20151028

    专利申请权、专利权的转移

  • 2017-12-15

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20151028

    实质审查的生效

  • 2017-05-10

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,特别地涉及一种基于Quorum机制实现权限数据缓存同步的方法及装置。

背景技术

运营管理中心(Operation Management Center,OMC)作为仓储项目中商品属性管理的统一平台,里面包含有很多的权限管理,管理着商品属性或者商品模块与其管理者或者管理员的权限关系。当OMC系统的管理员对用户(即:商品或模块的管理者)进行授权时,需要保证授权的一致性,即所有访问到OMC系统中的用户(即:商品或模块的管理者)都应该拥有最新的权限,否则就会出现管理上的混乱。

目前常用的权限数据缓存同步的方法,基本上是基于web服务器(web server)中内置的会话(session)管理器,来进行同步管理。比如tomcat的sessionManager等。一般情况下,基于web服务器的权限管理,是将用户的权限数据以加密或者明文的方式存储到web服务器内置的会话信息中,然后通过web服务器的会话管理器,将各自的会话信息进行数据库存储,并将存储的会话数据共享到系统集群中所有的缓存服务器中以实现权限数据缓存同步。例如:假设初次登录时是web服务器1提供服务,用户进行了一些操作(如将商品添加购物车)后刷新了系统,此时根据OMC系统的负载均衡原则可能会更换为web服务器2来提供服务。由于会话中保存了之前的操作信息,会同步更新到其他web服务器的缓存服务器中,因此不会出现购物车中无新添加商品的情况,以此实现缓存同步。

由于OMC系统具有负载均衡功能,因此在分布式系统集群中,可以实现对所有OMC系统的缓存服务器中每个用户(即:商品或模块的管理者)的权限进行缓存同步。但是如果缓存服务器过多,则当OMC系统的管理员在对用户的权限进行设置时就会出现卡顿甚至延时的情况。例如:假设缓存服务器有n个,正常情况下需要将管理员配置的用户的权限数据缓存到所有缓存服务器之后,才会返回给管理员“操作成功”的提示。而在实际情况下,当缓存服务器过多时,一方面,管理员可能无法等待所有缓存服务器都同步完并提示“操作成功”后再进行其他操作;另一方面,大多数的web应用,基本上都设置了超时时间,可能没等同步完就已经超时了。这样带来非常不好的使用体验,同时对系统的健壮性和数据的一致性都会带来一些影响。

并且,在使用过程中发现,现有的权限数据缓存同步的方法对web服务器的依赖性过强,一旦出现web服务器宕机,将无法更新权限数据。例如:当管理员修改了一个用户(即:商品或模块的管理者)的权限数据,但是在更新到第5个web服务器的时候宕机了,故第5个web服务器没有更新成功;在该用户下次登录商品管理系统时,如果是该web服务器提供服务,则会出现权限数据错误的情况,即:该web服务器未获取最新权限数据。尤其对于OMC系统,随时可能有其他系统来读取用户(即:商品或模块的管理者)的权限数据,那么权限数据缓存的同步就显得更为重要。

因此,需要一种机制,既能够保障管理员在同步缓存时,执行最快的写操作,加快更新速度,又能够保证每次读取都能获取到各个用户的最新权限。

发明内容

有鉴于此,本发明提供一种基于Quorum机制实现权限数据缓存同步的方法及装置,通过使用缓存服务器来保存用户权限数据,实现与web服务器的会话管理解耦,能够避免对web服务器的强依赖性;同时采用Quorum机制来实现权限数据缓存同步,能够有效地解决系统延时的问题,提高更新效率。

为实现上述目的,根据本发明的一个方面,提供了一种基于Quorum机制实现权限数据缓存同步的方法。

一种基于Quorum机制实现权限数据缓存同步的方法,其中共有n个缓存服务器,n是正整数,所述方法包括:确定整数k,k大于0且小于或等于n;将需要更新的权限数据更新到k个缓存服务器中,之后提示更新成功,其中,所述权限数据包括版本号;在提示更新成功之后,当接收到用户发来的权限数据获取请求时,从任意n-k+1个缓存服务器中读取权限数据以获取n-k+1组权限数据,并将其中版本号最新的权限数据返回给用户。

可选地,还包括:在提示更新成功之后,在后台将所述权限数据更新到其余n-k个缓存服务器中。

可选地,在后台将所述权限数据更新到其余n-k个缓存服务器中的步骤包括:根据后台的异步处理机制,从任意n-k+1个缓存服务器中读取权限数据以获得n-k+1组权限数据;从所述n-k+1组权限数据中找到版本号最新的权限数据;将所述版本号最新的权限数据更新到其余n-k个缓存服务器中。

根据本发明的另一方面,提供了一种基于Quorum机制实现权限数据缓存同步的装置。

一种基于Quorum机制实现权限数据缓存同步的装置,包括:前台更新模块,用于将需要更新的权限数据更新到k个缓存服务器中,之后提示更新成功,其中,所述权限数据包括版本号,所述缓存服务器有n个,且k是大于0且小于或等于n的确定整数;数据读取模块,用于在提示更新成功之后,当接收到用户发来的权限数据获取请求时,从任意n-k+1个缓存服务器中读取权限数据以获取n-k+1组权限数据,并将其中版本号最新的权限数据返回给用户。

可选地,还包括:后台同步模块,用于在提示更新成功之后,在后台将所述权限数据更新到其余n-k个缓存服务器中。

可选地,所述后台同步模块还用于:根据后台的异步处理机制,从任意n-k+1个缓存服务器中读取权限数据以获得n-k+1组权限数据;从所述n-k+1组权限数据中找到版本号最新的权限数据;将所述版本号最新的权限数据更新到其余n-k个缓存服务器中。

根据本发明的技术方案,通过使用缓存服务器来保存用户的权限数据,实现与web服务器的会话管理解耦,能够避免对web服务器的强依赖性;同时采用Quorum机制来实现权限数据缓存同步,能够有效地解决系统延时的问题,提高更新效率。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的基于Quorum机制实现权限数据缓存同步的方法的主要步骤示意图;

图2是根据本发明实施例的基于Quorum机制实现权限数据缓存同步的方法的实现过程示意图;

图3是根据本发明实施例的基于Quorum机制实现权限数据缓存同步的装置的主要模块示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

本发明的技术方案,是通过采用Quorum机制来实现数据同步。

已知的Quorum机制被用来解决读写模型中读写的负载均衡。假设总共有n个数据副本,其中k个已经更新(k<n),而N-k个未更新,则当任意读取N-k+1个数据副本的时候,其中必定至少有1个是被更新的(鸽巢原理)。我们只需通过比较选择所读取的N-k+1个数据中版本最新的那个数据,就可以得到最新更新的数据了。

根据本发明,在一共需要对n个缓存服务器更新权限数据的情况下,当k个缓存服务器已被更新,则任意读取n-k+1个缓存服务器的权限数据,其中必定有一个是最新的数据。本发明可使用基于Quorum开发的开源框架来解决数据同步的问题。

图1是根据本发明实施例的基于Quorum机制实现权限数据缓存同步的方法的主要步骤示意图。如图1所示,本发明的基于Quorum机制实现权限数据缓存同步的方法主要包括如下的步骤S11和步骤S12。

假定共有n个缓存服务器,n是正整数,并且选择整数k,k大于0且小于或等于n。根据本发明,k的值可根据分布式系统的具体需求中对数据一致性的要求进行设置。

在步骤S11:将需要更新的权限数据更新到k个缓存服务器中,在这k个缓存服务器完成权限数据的更新之后,提示更新成功,其中,所述权限数据包括版本号。版本号反映了权限数据的新旧程度。

在步骤S12:在提示更新成功之后,当接收到用户发来的权限数据获取请求时,从任意n-k+1个缓存服务器分别读取权限数据以获取n-k+1组权限数据,并将其中版本号最新的权限数据返回给用户。

根据以上的步骤S11和步骤S12,即可实现高效率的数据读写同步。另外,在提示更新成功之后,还可以包括步骤S13(图中未示出):在后台将所述权限数据更新到其余n-k个缓存服务器中。然而,步骤S13中在后台执行的操作对用户是透明的,且对于响应用户的权限数据请求并不是必要的。实际上,只要用最新的权限数据更新了k个缓存服务器,就可以通过读取任意n-k+1个缓存服务器中的权限数据来获得最新更新的权限数据。但是,为了保持所有缓存服务器上的权限数据的一致性,以及增强所读取的权限数据的可靠性,需要异步地在后台更新其他缓存服务器上的权限数据。

步骤S13中的在后台将所述权限数据更新到其余n-k个缓存服务器中的方法可以按照以下的顺序来执行:

步骤S131:根据后台的异步处理机制,从任意n-k+1个缓存服务器中读取权限数据以获得n-k+1组权限数据;

步骤S132:从上述n-k+1组权限数据中找到所述版本号最新的权限数据;

步骤S133:将所述版本号最新的权限数据更新到其余n-k个缓存服务器中。

按照上述的步骤S131至步骤S133即可实现后台更新权限数据与用户获取权限数据的异步执行,可等待系统有空闲时再执行后台更新,从而提高了系统的响应效率。

如图2所示,是根据本发明实施例的基于Quorum机制实现权限数据缓存同步的方法的实现过程示意图。如图2,首先,OMC系统的管理员会在OMC平台为用户(即:相关模块的管理者)分配权限。当分配完各个用户可以管理的模块或者相应内容之后,会将所分配的权限数据同步更新到缓存服务器中,从而实现与web服务器的会话管理解耦。与现有技术中的依靠web服务器的会话管理机制及会话复制功能来实现集群环境下的权限同步的方法相比,本发明中采用直接将权限数据保存在OMC服务器的缓存服务器中,不再依赖web服务器进行权限管理,故而不会因为web服务器改变或者迁移而对权限数据更新造成影响,从而减少了对web服务器的依赖。

另外,本发明采用Quorum机制来实现权限数据的同步。在一共需要对n个缓存服务器更新用户(如商品或模块的管理者)权限数据的情况下,当已对k个缓存服务器更新了权限数据,则读取任意n-k+1个缓存服务器的权限数据,其中必定有一个是最新的数据。其中,k为大于0且小于或等于n的整数。

根据本发明,k的值可根据分布式系统的具体需求中对数据一致性的要求进行设置。

更新数据的过程如图2中左上虚线框内所示,管理员更新用户权限后,仅需要更新k个缓存服务器的权限数据RS[1]至RS[k],之后,系统将提示更新成功,管理员可进行其他的操作。

读取数据的过程如图2左下虚线框内所示,当用户请求获取权限数据后,系统将从n-k+1个缓存服务器中读取权限数据RS[1,n-k+1],共n-k+1组数据,并从这些数据中找到版本号最新的权限数据,如RS[i],i∈[1,k],然后,返回给用户。

对于之前未进行权限数据同步的n-k个缓存服务器,将通过后台同步过程来执行权限数据更新,这些对于OMC系统的管理员或者用户来讲是透明的。如图2右虚线框内所示,根据后台异步处理机制,首先读取RS[1,n-k+1],共n-k+1组数据,并从这些数据中找到版本号最新的权限数据,如RS[i],i∈[1,k],然后系统将遍历所有的n个缓存服务器,对于未完成权限数据更新的n-k个缓存服务器执行权限数据更新操作。

由上述可知,读取数据和后台同步的过程均在更新数据过程之后,但是读取数据和后台同步无时序上的先后关系,也可同时进行。当管理员写入权限数据时,采用此种方式可以缓解写繁忙的情况;当用户读取自己的权限数据时,采用Quorum机制的特性,任意取n-k+1个数据,选择版本最新的数据返回给用户,那么这个数据就是正确的数据。采用此种方法进行权限数据更新,在后台进行同步其他缓存服务器时,无论是否可以更新成功,都不会影响获取最新的用户权限。如此,既缓解了写的压力,同时确保了获取数据的准确性。

图3是根据本发明实施例的基于Quorum机制实现权限数据缓存同步的装置的主要模块示意图。如图3所示,本发明的基于Quorum机制实现权限数据缓存同步的装置30主要包括前台更新模块31和数据读取模块32。另外,还可以包括后台同步模块33。

前台更新模块31用于将需要更新的权限数据更新到k个缓存服务器中,之后提示更新成功,其中,所述权限数据包括版本号,所述缓存服务器有n个,且k是大于0且小于或等于n的确定整数。

数据读取模块32用于在提示更新成功之后,当接收到用户发来的权限数据获取请求时,从任意n-k+1个缓存服务器中读取权限数据以获取n-k+1组权限数据,并将其中版本号最新的权限数据返回给用户。

后台同步模块33用于用于在提示更新成功之后,在后台将所述权限数据更新到其余n-k个缓存服务器中。

后台同步模块33还可以用于根据后台的异步处理机制,从任意n-k+1个缓存服务器中读取权限数据以获得n-k+1组权限数据;从所述n-k+1组权限数据中找到版本号最新的权限数据;将所述版本号最新的权限数据更新到其余n-k个缓存服务器中。

根据本发明实施例的技术方案,通过使用缓存服务器来保存权限数据,实现与web服务器的会话管理解耦,能够避免对web服务器的强依赖性;同时采用Quorum机制来实现权限数据缓存同步,能够有效地解决系统延时的问题,提高更新效率。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号