CN113127923A - 管理权限的方法和装置 - Google Patents
管理权限的方法和装置 Download PDFInfo
- Publication number
- CN113127923A CN113127923A CN202010043195.3A CN202010043195A CN113127923A CN 113127923 A CN113127923 A CN 113127923A CN 202010043195 A CN202010043195 A CN 202010043195A CN 113127923 A CN113127923 A CN 113127923A
- Authority
- CN
- China
- Prior art keywords
- user
- local cache
- information
- instance
- permission
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000008859 change Effects 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 238000010926 purge Methods 0.000 claims 1
- 230000004044 response Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了管理权限的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:由集群中的实例响应于用户的请求,确定所述实例的本地缓存中是否存在所述用户的权限信息;在所述本地缓存中存在所述用户的权限信息的情况下:从所述本地缓存中获得所述用户的所述权限信息;在所述本地缓存中不存在所述用户的所述权限信息的情况下:从权限数据库获得所述用户的所述权限信息,以及利用所述权限信息更新所述本地缓存。该实施方式降低了远程缓存中心的资源消耗,提高了本地资源利用率和加快了响应时间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种管理的方法和装置。
背景技术
现有集群系统,例如内容管理系统(Content Management System,CMS)将用户数据存储在数据库中,利用Redis或者Memcached等缓存来建立对应的远程缓存中心。具体而言,利用诸如MySQL的数据库建立用户表、菜单表、角色表、用户角色关系表、菜单角色关系表等。在用户需要登陆系统时,根据用户的登陆信息,在数据库中查询对应的角色和菜单信息,建立Redis或者Memcached缓存。在用户每次请求权限时,去Redis等缓存中心拉取该用户的权限数据。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
针对用户的每次权限请求都要查询缓存中心,权限鉴定性能依赖于网络质量,增加网络消耗;同时未能充分利用集群中实例的本机性能,大量的用户权限信息缓存浪费了宝贵的Redis资源。在Redis等远程缓存中心出现故障时,用户的权限请求无法得到处理,系统性能急剧下降。
发明内容
有鉴于此,本发明实施例提供一种管理权限的方法,能够利用本地缓存,在用户每次请求权限鉴定时访问本地缓存而不是从远程分布式缓存中心读取数据,从而更加高效和节约网络资源。解决了网络延迟高,缓存空间占用过多等问题。此外,权限鉴定不强依赖于网络质量,在保证本机性能的前提下,充分利用本机性能及内存,降低Redis资源消耗。在Redis等缓存中心出现故障时,能够利用本地缓存为用户实现权限鉴定,不会大幅拉低系统性能。
为实现上述目的,根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,包括:
由集群中的实例响应于用户的请求,确定所述实例的本地缓存中是否存在所述用户的权限信息;
在所述本地缓存中存在所述用户的权限信息的情况下:
从所述本地缓存中获得所述用户的所述权限信息;
在所述本地缓存中不存在所述用户的所述权限信息的情况下:
从权限数据库获得所述用户的所述权限信息,以及
利用所述权限信息更新所述本地缓存;
其中,所述用户、所述本地缓存、所述权限数据库与所述实例相关联。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,在所述本地缓存中不存在所述用户的所述权限信息的情况下,所述方法还包括:
在从权限数据库获得所述用户的所述权限信息之前,确定权限过滤器中存在所述用户。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,所述方法还包括:
在所述用户的权限信息改变时:
由所述实例更新所述本地缓存;
由所述实例更新所述权限数据库;
由所述实例向其他实例发送权限变更消息;以及
由所述其他实例在接收到所述权限变更消息后,更新相应的本地缓存。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,所述实例和所述其他实例属于同一集群。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,还包括:
在由所述实例向其他实例发送权限变更消息之前,从注册中心获得所述其他实例的信息。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,还包括:
在由所述实例向其他实例发送权限变更消息之前,从所述本地缓存获得所述其他实例的信息。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,还包括:
所述实例以预定时间间隔从注册中心获得集群中所有实例的信息;以及
利用所获得的所有实例的信息更新所述本地缓存。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,所述其他实例的信息包括所述其他实例的IP信息。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,所述更新相应的本地缓存包括清除所述相应的本地缓存。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,所述权限过滤器包括布隆过滤器。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,所述布隆过滤器是用Redis实现的。
根据本发明实施例的一个方面,提供了一种管理权限的方法,其特征在于,所述注册中心是用Redis实现的。
根据本发明实施例的一个方面,提供了一种管理权限的装置,其特征在于,包括:
确定模块:用于响应于用户的请求,确定所述实例的本地缓存中是否存在所述用户的权限信息;
获得模块:用于在所述本地缓存中存在所述用户的权限信息的情况下,从所述本地缓存中获得所述用户的所述权限信息;以及在所述本地缓存中不存在所述用户的所述权限信息的情况下,从权限数据库获得所述用户的所述权限信息;以及
更新模块:用于利用所述权限信息更新所述本地缓存;
其中,所述用户、所述本地缓存、所述权限数据库与所述实例相关联。
根据本发明实施例的一个方面,提供了一种管理权限的装置,其特征在于,还包括:
发送模块:用于向其他实例发送权限变更消息;以及
接收模块:用于接收到其他实例发送的权限变更消息;以及其中
所述获得模块还用于从注册中心拉取集群中其他实例的信息;
所述更新模块还用于在所述用户的权限信息改变时,更新所述本地缓存以及更新所述权限数据库,以及在接收到其他实例发送的权限变更消息后更新相应的本地缓存。
上述发明中的一个实施例具有如下优点或有益效果:因为采用本地缓存的技术手段,在用户每次请求权限鉴定时访问本地缓存而不是远程缓存中心所以克服了远程缓存中心资源消耗大、负担重且依赖于网络质量的技术问题,进而达到高效使用网络资源且加快响应的技术效果。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的管理权限的方法的主要流程的示意图;
图2是根据本发明实施例的获得用户权限信息的方法的主要流程的示意图;
图3A是根据本发明实施例的实例启动时的同步方法的主要流程的示意图;
图3B是根据本发明实施例的用户权限变更的同步方法的主要流程的示意图;
图4是根据本发明实施例的管理权限的装置的主要模块的示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的实例设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的权限鉴定的方法流程示意图,如图1所示,权限鉴定的方法包括步骤S101、S102、S103。
步骤S101:由实例响应于用户的请求,确定所述实例的本地缓存中是否存在所述用户的权限信息。
现有的集群系统,往往为集群中的多个实例建立分布式远程缓存中心。实例是集群中的机器,例如可以是服务器,也可以是虚拟机。在用户请求登陆分布式系统(例如CMS系统)的时候,处理用户请求的实例可以是集群中的任何一个实例。该实例需要访问远程缓存中心,查询该用户的权限。如果该用户具有相应的权限,才能够登陆分布式系统。在这种实施方式中,随着集群中的实例数目增加,登陆用户的数目增多,远程缓存中心需要存储大量用户的权限信息,并且处理大量实例的查询请求,远程缓存中心负担很重。
在本发明的实施例中,用于处理用户请求的实例在接收到用户提出登陆请求、查询请求或支付请求等需要进行权限鉴定的请求后,首先查询自己的本地缓存。确定本地缓存中是否存在该用户的权限信息。
在一种实施方式中,本地缓存是用散列表实现的。在散列表中以特定条目表示特定用户的信息。该条目的键(key)用于标识用户,例如可以是该用户的标识符、该用户的用户名等。在一种实施方式中,用Java实现本地缓存。在这种情况下,条目的值(value)可以采用例如软引用(Soft Reference)对象来实现,软引用对象里面封装了需要缓存的具体的用户信息,包括诸如用户权限、用户的密码、用户访问记录等。当Java虚拟机(Java VirtualMachine,JVM)内存充足的时候,与用户对应的缓存条目不会被回收,当内存紧张的时候,与用户对应的缓存条目会被JVM自动回收。当缓存条目被JVM自动回收的时候,该用户的本地缓存条目不存在,即,本地缓存中不存在该用户的权限信息。
步骤S102:在所述本地缓存中存在所述用户的权限信息的情况下:从所述本地缓存中获得所述用户的所述权限信息。
在该步骤中,处理用户请求的实例确定本地缓存中存在用户的权限信息,并读取该用户的权限信息。继续上面的示例,用散列表实现本地缓存。在该示例中,根据用户的标识符等关键字查找缓存散列表中的key,并利用key读取该条目的value,从value里面解析出用户信息。在用Java实现本地缓存的实施方式中,解析出该条目的软引用对象,并获得该软引用对象中的权限信息。
步骤S103:在所述本地缓存中不存在所述用户的所述权限信息的情况下:从权限数据库获得所述用户的所述权限信息。
继续上面的示例,如果解析出用户信息为空,则说明不存在该用户权限信息的本地缓存。在用Java实现本地缓存的实施方式中,如果解析出用户信息为空,则说明在本地缓存中,表示该用户的软引用对象被JVM回收,或者还没有建立过该用户的本地缓存,或者系统中不存在该用户(即,该用户不具有对系统的任何权限)。此时处理用户请求的实例查询权限数据库,如果权限数据库中存在该用户的权项,则在权限数据库中获得该用户的权限信息。
而如果系统中不存在该用户的话,查询数据库也是对资源的浪费,并且延迟了响应时间。为了进一步提高效率,可以在查询权限数据库之前,由过滤器来过滤掉实际上不存在的用户。在一种实施方式中,过滤器可以用布隆过滤器来实现。详见图2所示步骤的详细说明。
步骤S104:利用所述权限信息更新所述本地缓存。
在步骤S103中,处理用户请求的实例查询权限数据库,在权限数据库中获得用户的权限信息存储至本地缓存。在用Java实现散列表的实施方式中,将获取到的用户权限信息封装到软引用对象中,在表示本地缓存的散列表中找到表示该用户的key,将软引用对象存储在该条目相应的value中,以更新本地缓存。权限数据库例如可以用诸如MySQL的数据库实现。
需要注意的是,以上对本地缓存、权限数据库的实现举例仅为示例,本发明的实施例也可以采用任何其他方式实现。
图2是根据本发明实施例的获得用户权限信息的方法的流程示意图,如图2所示,获得用户权限信息的方法包括步骤S201、S202、S203和S204。
步骤S201:在过滤器中查询用户是否存在。
如前文所述,在步骤S101中确定了实例的本地缓存中不存在用户的权限信息后,进入步骤S201。本地缓存中不存在用户的权限信息,体现在本地缓存散列表中,即为散列表中不存在与该用户相对应的条目,或者与该用户相对应的条目中不存在权限value。在Java实现本地缓存的实施方式中,本地缓存散列表中不存在与该用户对应的条目,可能是由于该用户不存在、该用户的缓存过期、缓存条目被JVM自动回收、或者尚未建立过该用户的缓存信息;该用户对应的条目中不存在权限value,则可能是由于尚未在本地缓存中为该用户记录过权限信息。
需要注意的是,在系统中不存在该用户的情况下,查询数据库无法得到该用户的权限信息,直接查询数据库也是一种资源浪费,并且延迟了响应。具体而言,对于不同用户来讲,可能具有仅浏览权限、访问权限、读写权限、支付权限等多种不同的权限。优选地,可以先利用过滤器进行前置过滤,直接过滤掉没有任何权限的用户,而不是直接查询权限数据库。
在一种实施方式中,过滤器可以用布隆过滤器(Bloom Filter)实现,根据需求配置布隆过滤器,一般误差控制在例如0.0001。布隆过滤器例如可以用Redis实现,也可以采用任何其他方式实现。
步骤S202:从权限数据库获得所述用户的所述权限信息。
诸如布隆过滤器的过滤器会过滤掉极大部分数据库中不存在权限的用户,相当于快速失败机制。如果用户没有相应的权限能够利用布隆过滤器快速判断,不需要到数据库中查询。对于有权限但没有本地缓存的用户,可以在一次数据库查询后,为其建立本地缓存,权限校验速度也会大幅提升。权限数据库例如可以用MySQL实现,也可以采用任何其他方式。
经步骤S201过滤后,可以确定用户存在,大大提高查询数据库获得权限信息的成功率。在该步骤中查询权限数据库获得用户的权限信息。
步骤S203:利用所述权限信息更新所述本地缓存。
在步骤S203中,处理用户请求的实例将所获得的用户的权限信息更新至本地缓存。在用Java实现散列表的实施方式中,将获取到的用户权限信息封装到软引用对象中,在表示本地缓存的散列表中找到表示该用户的key,将软引用对象存储在该条目相应的value中,以更新本地缓存。
需要注意的是,以上对本地缓存、权限数据库的实现举例仅为示例,本发明的实施例也可以采用任何其他方式实现。
图3A和图3B是根据本发明实施例的实例同步的方法的流程示意图,如图3所示,实例同步的方法包括步骤S301、S302、S303和S204。
图3A是实例启动时的同步方法流程示意图。
如图3A所示,集群中各个实例启动时,向注册中心注册自己的信息,并同时拉取已经注册过的其他实例的信息缓存到本地。实例的信息可以包括IP地址、MAC地址、实例类型、注册时间信息等。优选地,实例可以仅向注册中心注册自己的IP地址信息,同时也仅拉取其他实例的IP地址信息,作为本集群的IP列表存储在本地中。在一种实施方式中,可以将集群的IP列表存储在本地缓存中。在注册中心不可用时,实例可以从本地IP列表获取集群中其他实例的IP信息,避免通信失败的问题。
在一种实施方式中,实例在本地维护整个集群的IP列表,以预定时间间隔更新列表。预定时间间隔例如可以是1分钟、5分钟、10分钟等。
在一种实施方式中,注册中心可以使用zookeeper或者Redis等实现。以Redis举例说明:Redis设置用于记录IP信息的共有key,类型为例如集合类型。集群中每个实例启动都去拉取该集合里面的所有IP信息;或者在启动后以预定时间间隔拉取该集合里面的所有IP信息。如果实例发现集合中没有自己的IP信息,就将自己的IP地址写入到集合。同时实例在本地缓存中保持与该集合对应的IP信息列表,以防Redis不可用时,获取不到集群中其他实例的IP信息,也能够节约资源。
图3B是用户权限变更的同步方法流程示意图。
步骤S301:用户的权限信息发生改变。
前文讨论了在用户需要登陆系统时,获得用户对系统访问权限的步骤。不同的用户可以具有对系统不同的访问权限,例如仅浏览的权限、能够读写系统中文档的权限、管理员权限等。
在一个实施例中,集群中的用户A的权限发生了改变。用户A的权限改变可以是由系统管理员触发的,也可以是用户A触发的。用户A和管理员可能分别通过不同的终端登陆了系统,而在后台随机接入了不同的实例。因此处理用户A登陆的实例可能与处理管理员登陆的实例不一样。在管理员触发用户A权限改变的情况下,管理员接入的实例1作为权限变更实例来发起权限同步过程。在用户A触发用户A权限改变的情况下,用户A接入的实例2作为权限变更实例来发起权限同步过程。
步骤S302:实例更新本地缓存和权限数据库
发起权限同步过程的实例接收到用户A的权限改变的指令后,首先更新自己的本地缓存。例如通过将与用户A对应的缓存条目删除重建、修改与用户A对应的缓存条目中的权限信息等,来更新本地缓存中用户A的权限。
随后,发起权限同步过程的实例触发修改权限数据库,将数据库中用户A的权限信息更新为最新权限。
需要注意的是,更新本地缓存和更新权限数据库的顺序可以互换,并不限于本实施例所述顺序。
步骤S303:向集群中的其他实例发送权限变更消息
优选地,发起权限同步过程的实例从注册中心拉取集群中其他实例的信息,例如可以采用IP地址信息。替选地,如果注册中心不可用,或者为了获得更快的响应时间,该实例可以直接使用本地缓存中缓存的集群实例IP列表。获取到集群中其他实例的IP信息后,实例A利用其他实例的IP地址向其他实例发送用户A权限变更的消息。
在一种实施方式中,发起权限同步过程的实例可以发起一个线程,向集群中的每一个实例的IP地址发送权限变更消息。消息的发送例如可以使用HTTP请求、或者TCP请求来实现。在另一种实施方式中,消息同步机制也可以通过消息队列(Message Queue,MQ)的广播功能实现。发起权限同步过程的实例向集群中所有实例发送权限变更广播,所有实例收听到权限变更消息后,主动更新本地缓存,达到缓存及时更新的效果。
步骤S304:集群中的其他实例更新自己的本地缓存。
集群中的其他实例在接收到用户A的权限变更消息后,利用用户A的新权限信息更新自己的本地缓存。更新自己的本地缓存可以通过清除整个本地缓存来实现,也可以通过仅更新与用户A相对应的条目来实现。在集群中的所有实例的本地缓存都获得更新后,整个集群的权限信息实现了同步。消息同步方案解决了各个实例本地缓存不能及时更新的问题,可以及时有效的通知到各个实例更新本地缓存,保证了用户权限有变动时能及时生效,避免了因为缓存问题导致的生效延迟问题。
图4是根据本发明实施例的管理权限的装置的主要模块示意图,如图4所示,管理权限的装置包括模块401、402、403、404和405。
模块401:确定模块,用于响应于用户的请求,确定集群中的实例的本地缓存中是否存在所述用户的权限信息;
模块402:获得模块,用于在所述本地缓存中存在所述用户的权限信息的情况下,从所述本地缓存中获得所述用户的所述权限信息;以及在所述本地缓存中不存在所述用户的所述权限信息的情况下,从权限数据库获得所述用户的所述权限信息;以及从注册中心拉取集群中其他实例的信息以用于集群中实例之间的通信。
模块403:更新模块,用于利用所述权限信息更新所述本地缓存;以及在所述用户的权限信息改变时,更新所述本地缓存以及更新所述权限数据库。
模块404:发送模块,用于向其他实例发送权限变更消息等集群之间的发送通信消息;以及
模块405:接收模块,用于集群中的实例之间的通信,接收来自其他实例的消息以及来自任何其他实例的消息。例如接收到其他实例发送的权限变更消息,以用于更新相应的本地缓存。
图5示出了可以应用本发明实施例的管理权限的方法或管理权限的装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和集群中的服务器505、506、507。网络504用以在终端设备501、502、503和服务器集群之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的登陆请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。服务器集群例如包括服务器实例505、506、507等。
需要说明的是,本发明实施例所提供的管理权限方法一般由集群中的服务器执行,例如集群中的实例506,相应地,管理权限装置一般设置于集群中的服务器中,例如集群中的实例506中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获得模块、确定模块、更新模块和接收模块。其中,这些单元的名称在某种情况下并不构成对该模块本身的限定,例如,发送模块还可以被描述为“向集群中的其他实例发送权限变更消息的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
由集群中的实例响应于用户的请求,确定所述实例的本地缓存中是否存在所述用户的权限信息;
在所述本地缓存中存在所述用户的权限信息的情况下:
从所述本地缓存中获得所述用户的所述权限信息;
在所述本地缓存中不存在所述用户的所述权限信息的情况下:
从权限数据库获得所述用户的所述权限信息,以及
利用所述权限信息更新所述本地缓存;
其中,所述用户、所述本地缓存、所述权限数据库与所述实例相关联。
在所述本地缓存中不存在所述用户的所述权限信息的情况下,在从权限数据库获得所述用户的所述权限信息之前,确定权限过滤器中存在所述用户。
在所述用户的权限信息改变时:
由所述实例更新所述本地缓存;
由所述实例更新所述权限数据库;
由所述实例向其他实例发送权限变更消息;以及
由所述其他实例在接收到所述权限变更消息后,更新相应的本地缓存。
在由所述实例向其他实例发送权限变更消息之前,从注册中心获得所述其他实例的信息或者从所述本地缓存获得所述其他实例的信息。
所述实例以预定时间间隔从注册中心获得集群中所有实例的信息;以及利用所获得的所有实例的信息更新所述本地缓存。
根据本发明实施例的技术方案,能够利用本地缓存,在用户每次请求权限鉴定时访问本地缓存而不是远程缓存中心,从而更加高效和节约网络资源。此外,权限鉴定不强依赖于网络质量,在保证本机性能的前提下,充分利用本机性能及内存,减低Redis资源消耗。在Redis等缓存中心出现故障时,能够利用本地缓存为用户实现权限鉴定,不会大幅拉低系统性能。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种管理权限的方法,其特征在于,包括:
由集群中的实例响应于用户的请求,确定所述实例的本地缓存中是否存在所述用户的权限信息;
在所述本地缓存中存在所述用户的权限信息的情况下:
从所述本地缓存中获得所述用户的所述权限信息;在所述本地缓存中不存在所述用户的所述权限信息的情况下:
从权限数据库获得所述用户的所述权限信息,以及
利用所述权限信息更新所述本地缓存;其中,所述用户、所述本地缓存、所述权限数据库与所述实例相关联。
2.根据权利要求1所述的方法,其特征在于,在所述本地缓存中不存在所述用户的所述权限信息的情况下,所述方法还包括:
在从权限数据库获得所述用户的所述权限信息之前,确定权限过滤器中存在所述用户。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述用户的权限信息改变时:
由所述实例更新所述本地缓存;
由所述实例更新所述权限数据库;
由所述实例向其他实例发送权限变更消息;以及
由所述其他实例在接收到所述权限变更消息后,更新相应的本地缓存。
4.根据权利要求3所述的方法,其特征在于,所述实例和所述其他实例属于同一集群。
5.根据权利要求3所述的方法,其特征在于,还包括:
在由所述实例向其他实例发送权限变更消息之前,从注册中心或者所述本地缓存获得所述其他实例的信息。
6.根据权利要求1所述的方法,其特征在于,还包括:
所述实例以预定时间间隔从注册中心获得集群中所有实例的信息;以及
利用所获得的所有实例的信息更新所述本地缓存。
7.根据权利要求3所述的方法,其特征在于,所述其他实例的信息包括所述其他实例的IP信息。
8.根据权利要求3所述的方法,其特征在于,所述更新相应的本地缓存包括清除所述相应的本地缓存。
9.一种管理权限的装置,其特征在于,包括:
确定模块:用于响应于用户的请求,确定集群中的实例的本地缓存中是否存在用户的权限信息;
获得模块:用于在所述本地缓存中存在所述用户的权限信息的情况下,从所述本地缓存中获得所述用户的所述权限信息;以及在所述本地缓存中不存在所述用户的所述权限信息的情况下,从权限数据库获得所述用户的所述权限信息;以及
更新模块:用于利用所述权限信息更新所述本地缓存;
其中,所述用户、所述本地缓存、所述权限数据库与所述实例相关联。
10.根据权利要求9所述的装置,其特征在于,还包括:
发送模块:用于向其他实例发送权限变更消息;以及
接收模块:用于接收到其他实例发送的权限变更消息;以及其中所述获得模块还用于从注册中心拉取集群中其他实例的信息;
所述更新模块还用于在所述用户的权限信息改变时,更新所述本地缓存以及更新所述权限数据库,以及在接收到其他实例发送的权限变更消息后更新相应的本地缓存。
11.一种管理权限的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010043195.3A CN113127923A (zh) | 2020-01-15 | 2020-01-15 | 管理权限的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010043195.3A CN113127923A (zh) | 2020-01-15 | 2020-01-15 | 管理权限的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113127923A true CN113127923A (zh) | 2021-07-16 |
Family
ID=76771828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010043195.3A Pending CN113127923A (zh) | 2020-01-15 | 2020-01-15 | 管理权限的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127923A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742667A (zh) * | 2021-08-06 | 2021-12-03 | 杭州群核信息技术有限公司 | 账号信息处理方法和装置、存储介质及电子设备 |
CN114048234A (zh) * | 2021-10-19 | 2022-02-15 | 车主邦(北京)科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN114697074A (zh) * | 2022-02-23 | 2022-07-01 | 深圳爱捷云科技有限公司 | 权限校验方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103490886A (zh) * | 2012-06-12 | 2014-01-01 | 阿里巴巴集团控股有限公司 | 权限数据的验证方法、装置及系统 |
CN105100050A (zh) * | 2015-05-28 | 2015-11-25 | 交通银行股份有限公司 | 用户权限管理方法及系统 |
CN106685902A (zh) * | 2015-11-10 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种用户权限管理方法及客户端、服务器 |
CN109885593A (zh) * | 2019-02-21 | 2019-06-14 | 北京字节跳动网络技术有限公司 | 用于处理信息的方法和装置 |
-
2020
- 2020-01-15 CN CN202010043195.3A patent/CN113127923A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103490886A (zh) * | 2012-06-12 | 2014-01-01 | 阿里巴巴集团控股有限公司 | 权限数据的验证方法、装置及系统 |
CN105100050A (zh) * | 2015-05-28 | 2015-11-25 | 交通银行股份有限公司 | 用户权限管理方法及系统 |
CN106685902A (zh) * | 2015-11-10 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种用户权限管理方法及客户端、服务器 |
CN109885593A (zh) * | 2019-02-21 | 2019-06-14 | 北京字节跳动网络技术有限公司 | 用于处理信息的方法和装置 |
Non-Patent Citations (1)
Title |
---|
杨冬菊;冯凯;: "基于缓存的分布式统一身份认证优化机制研究", 计算机科学, no. 03, 15 March 2018 (2018-03-15) * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742667A (zh) * | 2021-08-06 | 2021-12-03 | 杭州群核信息技术有限公司 | 账号信息处理方法和装置、存储介质及电子设备 |
CN114048234A (zh) * | 2021-10-19 | 2022-02-15 | 车主邦(北京)科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN114697074A (zh) * | 2022-02-23 | 2022-07-01 | 深圳爱捷云科技有限公司 | 权限校验方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9477517B2 (en) | Service broker systems, methods, and apparatus | |
CN111970315A (zh) | 推送消息的方法、装置及系统 | |
WO2017092351A1 (zh) | 缓存数据的更新方法及装置 | |
CN110019211A (zh) | 关联索引的方法、装置和系统 | |
US9544288B2 (en) | Messaging gateway | |
CN107357896A (zh) | 数据库集群的扩容方法、装置、系统和数据库集群系统 | |
CN113127923A (zh) | 管理权限的方法和装置 | |
JP2017509936A (ja) | リソースへの繰返しアクセスについてリソースオーナーから認可を要求する要求のバッチ処理の、サードパーティによる実行の容易化 | |
CN112948498A (zh) | 一种分布式系统全局标识的生成方法和装置 | |
CN112187903B (zh) | 一种消息推送方法、装置及消息服务系统 | |
CN111478781B (zh) | 一种消息广播的方法和装置 | |
CN112751847A (zh) | 接口调用请求的处理方法、装置、电子设备及存储介质 | |
CN110909022A (zh) | 一种数据查询方法和装置 | |
CN116303608A (zh) | 一种应用服务的数据处理方法和装置 | |
CN110855726B (zh) | 通信方法、装置以及网关、计算设备和介质 | |
CN109981546B (zh) | 获取应用模块间的远程调用关系的方法和装置 | |
KR101845195B1 (ko) | M2m 시스템에서 다중 리소스 구독 연관 방법 | |
CN110798495A (zh) | 用于在集群架构模式下端到端的消息推送的方法和服务器 | |
CN113742376A (zh) | 一种同步数据的方法、第一服务器以及同步数据的系统 | |
CN115190125B (zh) | 一种缓存集群的监控方法和装置 | |
CN109213815B (zh) | 控制执行次数的方法、装置、服务器终端以及可读介质 | |
CN107483637B (zh) | 一种基于nfs的客户端链接管理方法及装置 | |
CN113824675B (zh) | 管理登录态的方法和装置 | |
CN114756173A (zh) | 文件合并的方法、系统、设备和计算机可读介质 | |
CN112949326B (zh) | 信息查询方法、装置、设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |