掌桥专利:专业的专利平台
掌桥专利
首页

一种访问控制方法、装置、设备及可读存储介质

文献发布时间:2023-06-19 11:11:32


一种访问控制方法、装置、设备及可读存储介质

技术领域

本发明涉及计算机应用技术领域,特别是涉及一种访问控制方法、装置、设备及可读存储介质。

背景技术

互联网已经发展成为了一种基础资源,越来越多的业务被搬到线上,线上的竞争也越来越激烈。

为了适应业务的快速发展,在技术迭代上一定要快,而服务化是实现快速迭代的一个非常重要的手段。具体的,把大量通用功能下沉为服务,并对服务不断进行拆分,再根据不同的业务形态,快速组装出前端应用,通过服务组装和聚合的方式实现更快的开发速度,前端也能变得更轻。把服务拆得越细,服务的粒度越小,可组装性就越好。

随着服务被拆的越来越小,便出现了微服务。随着业务的发展,平台规模也越来越大,如此,服务数量便向不可控的规模增长。然而,服务数量的爆发式增长,为服务管理以及线上治理带来了极大的挑战。特别地是,当开发不规范,服务间存在错误的依赖关系,便可能会导致发生不可控的连锁反应,使得服务架构不可控。

综上所述,如何有效地解决服务管理等问题,是目前本领域技术人员急需解决的技术问题。

发明内容

本发明的目的是提供一种访问控制方法、装置、设备及可读存储介质,通过RDF配置文件,仅在两个服务之间的依赖关系符合RDF配置文件中的依赖描述的情况下,才允许服务间的访问,如此便可对依赖关系进行约束,避免因服务的依赖关系不符合架构规范设计,从而导致整个服务架构出现不可控问题。

为解决上述技术问题,本发明提供如下技术方案:

一种访问控制方法,包括:

在第一服务向第二服务发出访问请求的情况下,获取所述第一服务与所述第二服务的实际依赖关系;

查询本地的RDF配置文件,得到所述第一服务与所述第二服务的目标依赖描述;

判断所述实际依赖关系与所述目标依赖描述是否匹配;

若是,则对所述访问请求进行放行;若否,则拦截所述访问请求。

优选地,还包括:

接收依赖查询请求;

查询所述RDF配置文件,得到所述依赖查询请求对应的指定依赖描述;

在可视化界面显示所述指定依赖描述。

优选地,在拦截所述访问请求之后,还包括:

向所述第一服务反馈错误代码。

优选地,获取所述RDF配置文件的过程,包括:

接收发送的RDF内容;

对所述RDF内容进行解析,得到所述RDF配置文件;所述RDF配置文件包括本体、依赖关系服务和依赖关系。

优选地,对所述RDF内容进行解析,得到所述RDF配置文件,包括:

解析所述RDF内容,得到本体定义和依赖关系定义;

基于所述本体定义,从所述RDF内容中,解析出所述本体和所述依赖关系服务,并将所述本体和所述依赖关系服务存入本体库中;

基于所述依赖关系定义,从所述RDF内容中,解析出所述依赖关系,并将所述依赖关系以三元组方式存入关系数据库中。

优选地,还包括:

利用与服务治理系统的长连接,获取新RDF内容;

利用所述新RDF内容对所述RDF配置文件进行更新。

优选地,还包括:

定时向服务治理系统发送心跳数据,以上报当前健康状态。

一种访问控制装置,包括:

依赖关系获取模块,用于在第一服务向第二服务发出访问请求的情况下,获取所述第一服务与所述第二服务的实际依赖关系;

依赖描述获取模块,用于查询本地的RDF配置文件,得到所述第一服务与所述第二服务的目标依赖描述;

判断模块,用于判断所述实际依赖关系与所述目标依赖描述是否匹配;

访问请求控制模块,用于若所述实际依赖关系与所述目标依赖描述匹配,则对所述访问请求进行放行;若所述实际依赖关系与所述目标依赖描述未匹配,则拦截所述访问请求。

一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述访问控制方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述访问控制方法的步骤。

应用本发明实施例所提供的方法,在第一服务向第二服务发出访问请求的情况下,获取第一服务与第二服务的实际依赖关系;查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述;判断实际依赖关系与目标依赖描述是否匹配;若是,则对访问请求进行放行;若否,则拦截访问请求。

在本方法中,为了规范服务间的依赖关系,避免出现不符合架构设计规范的依赖关系出现,提出了基于RDF配置文件来保存服务间的依赖描述,来对访问进行规范控制。由于配置的格式为RDF的格式,使得服务与服务之间的依赖关系更具有语义性,通过SPARQL语言能够有进行语义查询,使得服务与服务之间的依赖关系更加的明确。也就是说,在发现第一服务需要访问第二服务的情况下,获取第一服务与第二服务的实际依赖关系,可以通过查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述。然后,在实际依赖关系与目标依赖描述匹配的情况下,才允许第一服务通过访问请求去访问第二服务;在实际依赖关系与目标依赖描述不匹配的情况下,禁止第一服务访问第二服务。如此,即便出现了不符合架构规范,即不符合RDF配置文件所记载的依赖描述的情况下,能够有效拦截相关访问请求,可以避免因不符合依赖规范的服务对整个服务架构造成不可控影响。即,本方法能够使得服务之间的依赖关系更加规范,使得整个服务架构更加稳定可控。

相应地,本发明实施例还提供了与上述访问控制方法相对应的访问控制装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种访问控制方法的实施流程图;

图2为本发明实施例中一种访问控制装置的结构示意图;

图3为本发明实施例中一种电子设备的结构示意图;

图4为本发明实施例中一种电子设备的具体结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例中一种访问控制方法的流程图,该方法包括以下步骤:

S101、在第一服务向第二服务发出访问请求的情况下,获取第一服务与第二服务的实际依赖关系。

需要注意的是,本发明实施例所提供的访问控制方法,可以用于第一服务本地端的组件上,也可以应用于第二服务本地端的组件上,也可以为第一服务与第二服务之间的能够对访问请求进行拦截和放行的组件上。优选地,可以将本发明实施例所提供的访问控制方法可以应用于ribbon中,ribbon为一种负载均衡组件,它在服务体系中起着重要作用,它的负载策略有多种,默认轮询,可配置超时重试等。通过扩展ribbon的方式实现,业务代码没有侵入的方式下,接入服务治理平台,使得实施落地成本降低。

其中,第一服务和第二服务可以具体为微服务。在本发明实施例中,为了便于描述,将发出访问请求的服务称之为第一服务,将第一服务请求访问的服务称之为第二服务。也就是说,第一服务和第二服务所对应的第一和第二仅用于区别存在两个服务,而并非指这两个服务存在先后、主次等区别。服务架构中的任意一个服务均可作为第一服务和第二服务。

具体的,可以对第一服务进行监控,从而发现第一服务向第二服务发出访问请求,当然也可以通过对第一服务发出的访问请求进行转发等中转环节进行监督,从而发现第一服务向第二服务发出访问请求。其中,访问请求可以具体为REST请求,REST(Representational State Transfer,简称REST),表述性状态传递,是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

在软件工程对象模型中,依赖关系描述两个模型元素(类、用例等)之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。例如:一个类使用另一个类的对象作为操作的参数,一个类用另一个类的对象作为它的数据成员,一个类向另一个类发消息等,这样的两个类之间都存在依赖关系。

在UML(Unified Modeling Language,统一建模语言)的类图中,用带箭头的虚线连接有依赖关系的两个类,箭头指向独立的类。在虚线上标注标签,以具体说明依赖的种类。

依赖关系包括数据依赖和函数依赖两种,函数依赖又可细分为多种类型。

在发现第一服务向第二服务发出访问请求的情况下,便可获取第一服务与第二服务的实际依赖关系。具体的,可以通过对第一服务进行分析,从而得到第一服务的依赖设定。当然,也可预先将第一服务与相关服务的依赖关系进行预存储,而直接从预存储的位置直接读取得到实际依赖关系。

S102、查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述。

其中,RDF(Resource Description Framework):即资源描述框架,其本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。简单来说,RDF即表示事物的一种方法和手段。EDF配置文件即采用EDF方式进行标识的配置文件。该配置文件中存储有依赖描述。

由于配置的格式为RDF的格式,使得服务与服务之间的依赖关系更具有语义性,通过SPARQL语言能够有进行语义查询,使得服务与服务之间的依赖关系更加的明确。其中,SPARQL,指一种用于资源描述框架上的查询语言,SPARQL是一个递归缩写,代表SPARQLProtocol and RDF Query Language(SPARQL协议与RDF查询语言)。

也就是说,可以直接使用SPARQL语言来对本地的RDF配置文件进行查询,得到第一服务与第二服务的目标依赖描述。

需要注意的是,该目标依赖描述即描述给第一服务和第二服务配置的依赖情况的描述。该目标依赖描述可以为表明第一服务与第二服务不存在依赖关系,也可以为表明第一服务与第二服务具有依赖关系并标明了依赖类型或情况。目标依赖描述的具体情况,可以根据实际需求进行配置的。

该RDF配置文件可以具体为预先放置在本地的配置文件,也可以为从服务治理系统(服务治理平台)中获取到并保存在本地的配置文件。其中,服务治理(SOA governance):为了确保事情顺利完成而实施的过程,包括最佳实践、架构原则、治理规程、规律以及其他决定性的因素。服务治理指的是用来管理SOA的采用和实现的过程。

具体的,开发人员可以通过对现有服务进行梳理,按照微服务架构方法论梳理出微服务之间的层级和依赖关系,并且对服务和服务之间的关系进行本体建模。得到该RDF配置文件并存储在各个服务对应的本地存储空间中。

当然,也可以通过RDF的文件格式,将依赖对应的建模结果上传到服务治理系统。然后服务治理系统会对上传的RDF文件进行规则的校验,校验RDF文件是否符合RDF规范,并且把RDF解析出来的RDF内容传递给依赖服务。

在本发明的一种具体实施方式中,为方便管理,可以通过服务治理系统的方式向各个服务发送RDF配置文件,从而实现在服务治理系统基于依赖对服务进行规范控制。下面以接收服务治理系统发送的RDF内容为例,对获取RDF配置文件的过程,包括:

步骤一、接收服务治理系统发送的RDF内容。

服务治理系统可以根据依赖配置,向需要进行依赖配置的服务发送RDF内容。该RDF内容即为RDF格式的依赖配置信息。

步骤二、对RDF内容进行解析,得到RDF配置文件;RDF配置文件包括本体、依赖关系服务和依赖关系。

在接收到RDF内容之后,便可对RDF内容进行解析,最终得到RDF配置文件。

特别地,该RDF配置文件包括本体、依赖关系服务和依赖关系。RDF配置文件中的本体、依赖关系服务和依赖关系可以存储在同一个库在,也可以分类分散存入不同的库中,以便查询。

具体的,上述步骤二对RDF内容进行解析,得到RDF配置文件,可具体包括:

步骤1、解析RDF内容,得到本体定义和依赖关系定义;

步骤2、基于本体定义,从RDF内容中,解析出本体和依赖关系服务,并将本体和依赖关系服务存入本体库中;

步骤3、基于依赖关系定义,从RDF内容中,解析出服务的依赖关系,并将依赖关系以三元组方式存入关系数据库中。

为便于描述,下面将上述3个步骤结合起来进行说明。

对RDF内容进行解析,可以得到本体定义和依赖关系定义。然后,基于本体定义便可从RDF内容中解析出本体和依赖关系服务,并将本体和依赖关系服务存入本体库中。基于依赖关系定义,便可从RDF内容中解析出服务的依赖关系,为便于查询,将依赖关系以三元组方式存入关系数据库中。其中,三元组方式的具体定义和内容可参照RDF的格式规范定义与实现,在此不再一一赘述。

优选地,考虑到实际应用中,随着需求更新,或版本迭代,服务间的依赖关系也需随之更新,因而在本发明的一种具体实施方式中,还可对RDF配置文件进行更新。具体的更新过程,包括:

步骤一、利用与服务治理系统的长连接,获取新RDF内容;

步骤二、利用新RDF内容对RDF配置文件进行更新。

也就是说,可以与服务治理系统维持一个长连接,然后基于该长连接可以获取到新RDF内容。然后,便可利用该新RDF内容对RDF配置文件进行更新。具体的,即对新RDF内容进行解析,得到新本体、新依赖关系服务和新依赖关系,然后基于新本体、新依赖关系服务和新依赖关系对已有的本体、依赖关系服务和依赖关系进行更新或补充。

优选地,为了便于服务治理系统了解各个服务的健康状态,还可定时向服务治理系统发送心跳数据,以上报当前健康状态。如此,用户通过服务治理系统便可了解到各个服务的健康状态。

S103、判断实际依赖关系与目标依赖描述是否匹配。

得到实际依赖关系和目标依赖描述之后,便可通过比对实际依赖关系与目标依赖描述是否匹配。具体来说,若目标依赖描述对应描述了实际依赖关系,则确定实际依赖关系与目标依赖描述匹配;反之,则确定实际依赖关系与目标依赖描述不匹配。也就是说,通过APARQL查询本地的RDF配置文件,以及查看第一服务和第二服务之间的实际依赖关系,便可确定第一服务与第二服务之间的实际依赖关系与配置文件中的描述是否匹配。

得到是否匹配的结果之后,便可根据不同的结果对访问请求进行控制处理。具体的,当判断结果为是,则执行步骤S104的操作,当判断结果为否,则执行步骤S105的操作。

S104、对访问请求进行放行。

在第一服务与第二服务之间的实际依赖关系与RDF配置文件中的目标依赖描述匹配时,则确定第一服务和第二服务之间的实际依赖关系符合配置。此时,允许第一服务利用访问请求对第二服务进行访问,即可对访问请求进行放行。

S105、拦截访问请求。

在第一服务与第二服务之间的实际依赖关系与RDF配置文件中的目标依赖描述不匹配时,则确定第一服务和第二服务之间的实际依赖关系不符合配置。此时,禁止第一服务利用访问请求对第二服务进行访问,即可对访问请求进行拦截,以避免因不符合配置的该实际依赖关系而产生的访问导致整个服务架构产生不可控的影响。

优选地,在拦截访问请求之后,还可以向第一服务反馈错误代码。如此,第一服务便可获知访问失败用于,避免长期等待访问结果。当然,第一服务接收到错误代码之后,还可通过直接输出或上报的方式,让相关人员了解到当前第一服务与第二服务的实际依赖关系与配置不符,以便及时调整。

应用本发明实施例所提供的方法,在第一服务向第二服务发出访问请求的情况下,获取第一服务与第二服务的实际依赖关系;查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述;判断实际依赖关系与目标依赖描述是否匹配;若是,则对访问请求进行放行;若否,则拦截访问请求。

在本方法中,为了规范服务间的依赖关系,避免出现不符合架构设计规范的依赖关系出现,提出了基于RDF配置文件来保存服务间的依赖描述,来对访问进行规范控制。由于配置的格式为RDF的格式,使得服务与服务之间的依赖关系更具有语义性,通过SPARQL语言能够有进行语义查询,使得服务与服务之间的依赖关系更加的明确。也就是说,在发现第一服务需要访问第二服务的情况下,获取第一服务与第二服务的实际依赖关系,可以通过查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述。然后,在实际依赖关系与目标依赖描述匹配的情况下,才允许第一服务通过访问请求去访问第二服务;在实际依赖关系与目标依赖描述不匹配的情况下,禁止第一服务访问第二服务。如此,即便出现了不符合架构规范,即不符合RDF配置文件所记载的依赖描述的情况下,能够有效拦截相关访问请求,可以避免因不符合依赖规范的服务对整个服务架构造成不可控影响。即,本方法能够使得服务之间的依赖关系更加规范,使得整个服务架构更加稳定可控。

需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。

在本发明的一种具体实施方式中,为便于开发人员更好的规划服务之间的依赖关系,在上述实施例的基础上,还可增加对现有已配置的依赖进行查看。具体的实现过程,包括:

步骤一、接收依赖查询请求;

步骤二、查询RDF配置文件,得到依赖查询请求对应的指定依赖描述;

步骤三、在可视化界面显示指定依赖描述。

为便于描述,下面将上述三个步骤结合起来进行说明。

在接收到依赖查询请求之后,可首先对依赖查询请求进行解析,得到需要查询哪些服务之间的依赖关系。在确定需查询哪些服务之后,便可对本地的RDF配置文件进行查询,得到与依赖查询请求对应的指定依赖描述。然后,便可在可视化界面对指定依赖描述进行显示。优选地,为了便于用户查看,在得到指定依赖描述之后,还可将其转换为依赖关系,然后再显示该依赖关系。

相应于上面的方法实施例,本发明实施例还提供了一种访问控制装置,下文描述的访问控制装置与上文描述的访问控制方法可相互对应参照。

参见图2所示,该装置包括以下模块:

依赖关系获取模块101,用于在第一服务向第二服务发出访问请求的情况下,获取第一服务与第二服务的实际依赖关系;

依赖描述获取模块102,用于查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述;

判断模块103,用于判断实际依赖关系与目标依赖描述是否匹配;

访问请求控制模块104,用于若实际依赖关系与目标依赖描述匹配,则对访问请求进行放行;若实际依赖关系与目标依赖描述未匹配,则拦截访问请求。

应用本发明实施例所提供的装置,在第一服务向第二服务发出访问请求的情况下,获取第一服务与第二服务的实际依赖关系;查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述;判断实际依赖关系与目标依赖描述是否匹配;若是,则对访问请求进行放行;若否,则拦截访问请求。

在本装置中,为了规范服务间的依赖关系,避免出现不符合架构设计规范的依赖关系出现,提出了基于RDF配置文件来保存服务间的依赖描述,来对访问进行规范控制。由于配置的格式为RDF的格式,使得服务与服务之间的依赖关系更具有语义性,通过SPARQL语言能够有进行语义查询,使得服务与服务之间的依赖关系更加的明确。也就是说,在发现第一服务需要访问第二服务的情况下,获取第一服务与第二服务的实际依赖关系,可以通过查询本地的RDF配置文件,得到第一服务与第二服务的目标依赖描述。然后,在实际依赖关系与目标依赖描述匹配的情况下,才允许第一服务通过访问请求去访问第二服务;在实际依赖关系与目标依赖描述不匹配的情况下,禁止第一服务访问第二服务。如此,即便出现了不符合架构规范,即不符合RDF配置文件所记载的依赖描述的情况下,能够有效拦截相关访问请求,可以避免因不符合依赖规范的服务对整个服务架构造成不可控影响。即,本装置能够使得服务之间的依赖关系更加规范,使得整个服务架构更加稳定可控。

在本发明的一种具体实施方式中,还包括:

查询模块,用于接收依赖查询请求;查询RDF配置文件,得到依赖查询请求对应的指定依赖描述;在可视化界面显示指定依赖描述。

在本发明的一种具体实施方式中,还包括:

错误反馈模块,用于在拦截访问请求之后,向第一服务反馈错误代码。

在本发明的一种具体实施方式中,配置文件获取模块,用于接收RDF内容;对RDF内容进行解析,得到RDF配置文件;RDF配置文件包括本体、依赖关系服务和依赖关系。

在本发明的一种具体实施方式中,配置文件获取模块,具体用于解析RDF内容,得到本体定义和依赖关系定义;基于本体定义,从RDF内容中,解析出本体和依赖关系服务,并存入本体库中;基于依赖关系定义,从RDF内容中,解析出服务的依赖关系,并将依赖关系以三元组方式存入关系数据库中。

在本发明的一种具体实施方式中,还包括:

配置更新模块,用于利用与服务治理系统的长连接,获取新RDF内容;利用新RDF内容对RDF配置文件进行更新。

在本发明的一种具体实施方式中,还包括:

健康情况反馈模块,用于定时向服务治理系统发送心跳数据,以上报当前健康状态。

相应于上面的方法实施例,本发明实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种访问控制方法可相互对应参照。

参见图3所示,该电子设备包括:

存储器332,用于存储计算机程序;

处理器322,用于执行计算机程序时实现上述方法实施例的访问控制方法的步骤。

具体的,请参考图4,图4为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。

电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。

上文所描述的访问控制方法中的步骤可以由电子设备的结构实现。

相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种访问控制方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的访问控制方法的步骤。

该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

相关技术
  • 访问控制器、访问控制方法、计算机设备及可读存储介质
  • 一种访问控制方法、装置、设备及可读存储介质
技术分类

06120112837480