CN110636093B - 微服务注册和发现方法、设备、存储介质以及微服务系统 - Google Patents

微服务注册和发现方法、设备、存储介质以及微服务系统 Download PDF

Info

Publication number
CN110636093B
CN110636093B CN201810657228.6A CN201810657228A CN110636093B CN 110636093 B CN110636093 B CN 110636093B CN 201810657228 A CN201810657228 A CN 201810657228A CN 110636093 B CN110636093 B CN 110636093B
Authority
CN
China
Prior art keywords
service
information
service information
registration
ontology knowledge
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.)
Active
Application number
CN201810657228.6A
Other languages
English (en)
Other versions
CN110636093A (zh
Inventor
王思霏
简明
徐代刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201810657228.6A priority Critical patent/CN110636093B/zh
Publication of CN110636093A publication Critical patent/CN110636093A/zh
Application granted granted Critical
Publication of CN110636093B publication Critical patent/CN110636093B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种微服务注册方法、微服务发现方法、设备、计算机可读存储介质以及微服务系统,所述方法包括:服务提供者根据所述服务提供者的私有领域本体知识、注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心;所述注册中心接收并处理所述服务提供者发送的服务注册请求。本发明通过公有和私有的领域本体知识描述服务信息,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息,具有良好的可扩展性;服务调用者通过语义查询的方式进行服务发现不再局限于服务名等极少数属性。

Description

微服务注册和发现方法、设备、存储介质以及微服务系统
技术领域
本发明涉及通信技术领域,尤其涉及一种微服务注册方法、微服务发现方法、设备、计算机可读存储介质以及微服务系统。
背景技术
传统的软件系统通常将其所有的功能放在一个单一进程中,这种架构称为单体架构。单体架构在系统规模比较小的情况下工作情况良好,但是随着系统规模的扩大,暴露出来的问题也越来越多,主要包括:开发人员都在同一个项目中修改代码导致开发效率低下、代码量大导致系统难以维护、功能耦合导致软件功能修改困难、部署速度慢、稳定性差、难以按需伸缩等。
微服务架构的出现解决了单体架构中存在的问题。微服务架构使用一套小服务来开发单个应用,每个服务运行在自己的进程中,采用HTTP Resource API这样的轻量级机制进行通信。这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,可以使用不同的编程语言实现,采用不同数据存储技术,并保持最低限度的集中式管理。
在微服务系统中,不同服务之间采用远程通信的方式互相调用,服务调用者在访问其他微服务之前,需要知道服务提供者的地址和端口等信息。在微服务系统构建初期,服务数量不多时,可以对依赖的服务实例清单进行静态配置来实现服务间的调用。但随着业务的发展,服务数量不断增加,服务的命名、位置等信息不断变化,这种静态配置信息会变得越来越难以维护。为了解决微服务架构中服务实例的维护问题,产生了大量服务治理产品,这些产品的实现都围绕着服务注册和发现机制来完成微服务实例的自动化管理。服务注册和发现是微服务架构中最为核心和基础的模块。
目前,微服务注册和发现的典型产品是Netflix Eureka。它提供了一个服务注册中心Eureka Server,每个服务提供者向Eureka Server登记自己的服务,Eureka Server维护当前系统中的服务清单,该过程称为服务注册;每个服务调用者都内嵌一个EurekaClient,在访问服务提供方的接口时,通过Eureka Server查找服务提供方的实例清单,Eureka Client会从该服务清单中通过某种负载均衡策略选择其中的一个服务实例进行访问,该过程称为服务发现。
Netflix Eureka等产品存在的问题是:服务注册、服务发现的接口和数据结构都是私有的,相互之间不能兼容,难以做到服务注册信息之间的传播;服务发现的查询和匹配能力普遍较弱,通常只能根据服务名、服务版本号等极少数属性进行查找,无法实现更复杂的查询语义和更高效的访问控制,例如根据多种条件进行组合查找、根据服务之间的依赖关系进行快速熔断等。
发明内容
有鉴于此,本发明实施例的目的在于提供一种微服务注册方法、微服务发现方法、设备、计算机可读存储介质以及微服务系统,以解决现有产品的服务注册、服务发现的接口和数据结构都是私有的,相互之间不能兼容;服务发现的查询和匹配能力较弱的问题。
本发明实施例解决上述技术问题所采用的技术方案如下:
根据本发明实施例的一个方面,提供的一种微服务注册方法,所述方法包括:
服务提供者根据所述服务提供者的私有领域本体知识、注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心;
所述注册中心接收并处理所述服务提供者发送的服务注册请求。
根据本发明实施例的另一个方面,提供的一种微服务发现方法,所述方法包括:
服务调用者构造语义查询请求,并将所述语义查询请求发送到注册中心;
所述注册中心接收并处理所述服务调用者发送的语义查询请求,将语义查询成功信息发送到所述服务调用者;
所述服务调用者接收所述注册中心发送的语义查询成功信息,并根据所述语义查询成功信息选择服务提供者发起调用。
根据本发明实施例的另一个方面,提供的一种微服务注册设备,所述设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的微服务注册程序,所述微服务注册程序被所述处理器执行时实现上述的微服务注册方法的步骤。
根据本发明实施例的另一个方面,提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有微服务注册程序,所述微服务注册程序被处理器执行时实现上述的微服务注册方法的步骤。
根据本发明实施例的另一个方面,提供的一种微服务发现设备,所述设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的微服务发现程序,所述微服务发现程序被所述处理器执行时实现上述的微服务发现方法的步骤。
根据本发明实施例的另一个方面,提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有微服务发现程序,所述微服务发现程序被处理器执行时实现上述的微服务发现方法的步骤。
根据本发明实施例的另一个方面,提供的一种微服务系统,所述微服务系统包括服务提供者、服务调用者和注册中心;
所述服务提供者,用于根据所述服务提供者的私有领域本体知识、所述注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心;对所述服务调用者提供服务信息访问服务;
所述服务调用者,用于构造语义查询请求;将所述语义查询请求发送到所述注册中心;接收所述注册中心发送的语义查询成功信息,并根据所述语义查询成功信息选择所述服务提供者发起调用;
所述注册中心,用于接收并处理所述服务提供者发送的服务注册请求和所述服务调用者发送的语义查询请求,将语义查询成功信息发送到所述服务调用者。
本发明实施例的微服务注册方法、微服务发现方法、设备、计算机可读存储介质以及微服务系统,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
附图说明
图1为本发明第一实施例的微服务系统结构示意图;
图2为本发明第一实施例的微服务系统另一结构示意图;
图3为本发明第二实施例的微服务注册方法流程示意图;
图4为本发明第三实施例的微服务注册设备结构示意图;
图5为本发明第五实施例的微服务发现方法流程示意图;
图6为本发明第六实施例的微服务发现设备结构示意图;
图7为本发明实施例的服务信息库和服务信息依赖库的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
第一实施例
为了更好地阐述本实施例,以下对语义网进行说明:
语义网的本质是以计算机应用程序可以理解的方式描述事物,它通过标准化的格式,将事物的属性和事物之间的关系组织成结构化的数据,并使用形式化模型来描述这些数据的隐含语义,使得这些隐含语义能够被机器处理。
语义网使用RDF(Resource Description Framework,资源描述框架)来描述网络上的信息和资源。RDF将一切可以在Web上标识的事物统称为资源(resource),每个资源都用IRI(Internationalized Resource Identifier,国际化资源标识符)标识;通过属性和属性值来描述资源,其中属性是一类特殊的资源,用来描述资源之间的关系。RDF的基础构件是声明(statement),即“主体(subject)-谓语(predicate)-客体(object)”三元组,其中主体是一个指向资源的IRI,谓语是一个指向属性的IRI,客体是一个属性值(可以是一个IRI或字面值)。通过声明的方式,就可以用属性和属性值描述主体代表的资源。这样,将一组关于资源的声明表示为一个由节点和边构成的有向图(directed graph),其中节点代表资源或属性值,边代表属性。
RDF是领域无关的,没有定义任何领域的语义,允许用户使用自己的词汇表描述资源。用户可使用RDFS(Resource Description Framework Schema,资源描述框架模式)或OWL(Web Ontology Language,web本体语言)等词汇表描述语言来定义领域本体知识。此外,RDF还定义了几套机器可解释的标准语法,用来描述RDF图,这些语法包括N-Triples、Turtle、RDF/XML、RDFa、JSON-LD等。在对RDF图进行查询操作时,可使用SPARQL查询语言。
语义网的相关技术(RDF、RDFS、SPARQL等)已经获得了W3C(World Wide WebConsortium,万维网联盟)的正式支持,称为互联网领域的事实标准。
基于语义网的相关技术,如图1所示,本发明第一实施例提供一种微服务系统,所述微服务系统包括服务提供者11、服务调用者12和注册中心13;
需要说明的是,服务提供者11、服务调用者12和注册中心13三大组件中,每种类型的组件的数量在此不作限制;每个注册中心13上可以有多个服务提供者11和服务调用者12;一个服务提供者11或服务调用者12只注册在一个注册中心13上;服务提供者11可以同时是服务调用者12,反之亦然;当注册中心13上的服务信息变化后,多个注册中心13之间进行服务信息同步。
所述服务提供者11,用于根据所述服务提供者的私有领域本体知识、所述注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心13;对所述服务调用者12提供服务信息访问服务。
具体地,首先对公有领域本体知识,即服务信息的模式进行定义和发布。公有领域本体知识包括服务信息相关的核心类型和属性的模式,称为SICS(Service InformationCore Schema,服务信息核心模式)。SICS是标准化的、公共的,与注册中心13的实现无关,可供所有注册中心13的实现使用。SICS为服务信息定义一套核心语义,包括相关的类型、属性、属性的定义域和值域等。例如,将微服务定义为一种类型;将服务ID、主机地址、端口号、协议类型定义为属性,这些属性的定义域都是微服务类型,值域是字符串或整型值;此外,依赖关系也定义为一种属性,其定义域和值域都是微服务类型。SICS既可以发布在外部公共服务器上,独立于各个注册中心13;也可以发布在每个注册中心13内部,各注册中心13发布的SICS都是相同的。SICS可以使用RDFS定义,并使用任意一种标准的RDF语法进行描述,例如Turtle、RDF/XML、N-Triples、N-Quads、JSON-LD等。
在SICS的基础上,不同的注册中心、服务提供者11的实现也可以根据业务需要,自定义私有领域本体知识,即私有的服务信息类型和属性的模式,称为SIPS(ServiceInformation Private Schema,服务信息私有模式)。与SICS的区别在于,SIPS仅在当前注册中心或当前服务提供者处发布,并可供其他注册中心读取。例如,将版本号、区域、权重定义为属性,它们的定义域都是微服务类型,值域是字符串或数值。SIPS是可选的,且可以使用RDFS描述。
所有服务提供者11根据SICS、注册中心私有的SIPS和服务提供者私有的SIPS,定义并发布自身的服务信息,服务信息可以使用RDF描述,并通过自身的服务信息接口发布。例如,每个服务提供者11都将自身的服务ID、主机地址、端口号、协议类型、依赖关系、版本号、区域、权重等信息通过标准RDF语法(如Turtle、RDF/XML、N-Triples、N-Quads、JSON-LD等)描述后,作为服务信息,发布在自身的微服务中。
请参考图2所示,在本实施例中,所述服务提供者11包括私有第一私有本体知识模块111、第一本体知识库112、服务信息模块113以及服务接口114;
所述第一私有本体知识模块111,用于提供所述服务提供者的私有领域本体知识;
所述第一本体知识库112,用于存储所述服务提供者的私有领域本体知识;
所述服务信息模块113,用于根据所述服务提供者的私有领域本体知识、所述注册中心的私有领域本体知识和公有领域本体知识,定义并发布自身的服务信息;将所述服务信息的URI(Uniform Resource Identifier,统一资源标识符)上报到所述注册中心13;通过所述服务接口114对所述服务调用者提供服务信息访问服务。
所述服务调用者12,用于构造语义查询请求;将所述语义查询请求发送到所述注册中心13;接收所述注册中心13发送的语义查询成功信息,并根据所述语义查询成功信息选择所述服务提供者11发起调用。
请参考图2所示,在本实施例中,所述服务调用者12包括服务请求模块121和语义查询请求处理器122;
所述服务请求模块121,用于构造语义查询请求;根据所述语义查询请求处理器122接收到的语义查询成功信息选择所述服务提供者11发起调用;
所述语义查询请求处理器122,用于将所述语义查询请求发送到所述注册中心13,接收所述注册中心13发送的语义查询成功信息。
所述注册中心13,用于接收并处理所述服务提供者11发送的服务注册请求和所述服务调用者12发送的语义查询请求,将语义查询成功信息发送到所述服务调用者12。
请参考图2所示,在本实施例中,所述注册中心13包括公有本体知识模块131、第二私有本体知识模块132、服务信息语义处理引擎133、服务信息语义查询引擎134以及服务库135;
所述公有本体知识模块131,用于提供公有领域本体知识;
所述第二私有本体知识模块132,用于提供所述注册中心的私有领域本体知识;
所述服务信息语义处理引擎133,用于接收所述服务提供者11发送的服务注册请求;解析服务信息以及服务信息之间的依赖关系;将解析后的服务信息以及服务信息之间的依赖关系存入所述服务库135,并同步到其他注册中心;
在本实施例中,服务注册是服务提供者11将自身的服务信息上报给注册中心13的过程。服务信息语义处理引擎133收到服务提供者11上报的服务信息的URL后,从服务提供者处获取服务信息,然后进行服务信息解析和入库。服务信息语义处理引擎133负责解析和处理两组信息:一是包含所有服务信息的SIR(Service Information Repository,服务信息库),用来保存所有服务提供者上报和依赖的所有服务信息,供服务发现过程中查询使用;二是解析出所有服务信息之间的依赖关系及状态,存储到服务信息依赖库中。服务信息依赖库可以是一个树状结构,称为SIDT(Service Information Dependency Tree,服务信息依赖树),其中每个树节点代表一个服务信息,“服务信息B是服务信息A的子节点”代表“服务信息A依赖于服务信息B”。服务信息库和服务信息依赖树可如图7所示。
所述服务信息语义查询引擎134,用于接收所述服务调用者12发送的语义查询请求;解析所述语义查询请求,将语义查询成功信息发送到所述服务调用者12;
所述服务库135,用于存储所述公有领域本体知识、所述注册中心的私有领域本体知识、服务信息以及服务信息之间的依赖关系。
在本实施例中,所述服务库135包括第二本体知识库、服务信息库和服务信息依赖库(附图未示出);
所述第二本体知识库,用于存储所述公有领域本体知识、所述注册中心的私有领域本体知识;
所述服务信息库,用于存储所述服务信息;
所述服务信息依赖库,用于存储所述服务信息之间的依赖关系。
请再参考图2所示,在本实施例中,所述注册中心13还包括服务状态维护器136;
所述服务提供者11,还用于向所述注册中心13上报心跳消息和/或下线信息;
所述服务状态维护器136,用于根据所述服务提供者11上报的心跳消息和/或下线信息,维护所述服务库135中的服务信息以及服务信息之间的依赖关系的状态,并同步到其他注册中心。
本发明实施例的微服务系统,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
第二实施例
如图3所示,本发明第二实施例提供一种微服务注册方法,服务注册是服务提供者将自身的服务信息上报给注册中心的过程。所述方法包括:
步骤S21、服务提供者根据所述服务提供者的私有领域本体知识、注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心;
具体地,首先对公有领域本体知识,即服务信息的模式进行定义和发布。公有领域本体知识包括服务信息相关的核心类型和属性的模式,称为SICS(Service InformationCore Schema,服务信息核心模式)。SICS是标准化的、公共的,与注册中心的实现无关,可供所有注册中心的实现使用。SICS为服务信息定义一套核心语义,包括相关的类型、属性、属性的定义域和值域等。例如,将微服务定义为一种类型;将服务ID、主机地址、端口号、协议类型定义为属性,这些属性的定义域都是微服务类型,值域是字符串或整型值;此外,依赖关系也定义为一种属性,其定义域和值域都是微服务类型。SICS既可以发布在外部公共服务器上,独立于各个注册中心;也可以发布在每个注册中心内部,各注册中心发布的SICS都是相同的。SICS可以使用RDFS定义,并使用任意一种标准的RDF语法进行描述,例如Turtle、RDF/XML、N-Triples、N-Quads、JSON-LD等。
在SICS的基础上,不同的注册中心、服务提供者的实现也可以根据业务需要,自定义私有领域本体知识,即私有的服务信息类型和属性的模式,称为SIPS(ServiceInformation Private Schema,服务信息私有模式)。与SICS的区别在于,SIPS仅在当前注册中心或当前服务提供者处发布,并可供其他注册中心读取。例如,将版本号、区域、权重定义为属性,它们的定义域都是微服务类型,值域是字符串或数值。SIPS是可选的,且可以使用RDFS描述。
所有服务提供者根据SICS、注册中心私有的SIPS和服务提供者私有的SIPS,定义并发布自身的服务信息,服务信息可以使用RDF描述,并通过自身的服务信息接口发布。例如,每个服务提供者都将自身的服务ID、主机地址、端口号、协议类型、依赖关系、版本号、区域、权重等信息通过标准RDF语法(如Turtle、RDF/XML、N-Triples、N-Quads、JSON-LD等)描述后,作为服务信息,发布在自身的微服务中。
步骤S22、所述注册中心接收并处理所述服务提供者发送的服务注册请求。
在一种实施方式中,所述将服务注册请求发送到所述注册中心包括(附图未示出):
将所述服务信息的URI上报到所述注册中心;
所述注册中心接收并处理所述服务提供者发送的服务注册请求包括:
接收并解析所述服务提供者上报的服务信息的URI;
通过所述服务信息的URI获取所述服务信息;
当获取到所述服务信息时,解析所述服务信息并确定所述服务信息中是否存在依赖服务;当所述服务信息中不存在依赖服务时(例如图7中的微服务C、微服务E和微服务F),更新所述注册中心的服务信息依赖库中相关节点(包括当前节点、直接和间接父节点)的状态为可用状态(以图7为例,当前节点是微服务D,除了将SIDT中微服务D的节点状态更新为可用以外,还需判断微服务D的所有直接父节点和间接父节点,微服务B和微服务A,如果每个父节点的所有直接和间接子节点的状态都为可用,则将该父节点的状态也更新为可用),并在所述注册中心的服务信息库中对可用状态的节点的对应的服务信息进行更新;当所述服务信息中存在依赖服务时(例如图7中的微服务A、微服务B、微服务D),则获取所述依赖服务的服务信息的URI(以图7为例,对于微服务B,解析出其依赖的微服务C和微服务D的URI),并继续执行通过所述服务信息的URI获取所述服务信息的步骤;
当没有获取到所述服务信息时,更新所述服务信息依赖库中相关节点(包括当前节点、直接和间接父节点)的状态为不可用状态,并在所述服务信息库中对不可用状态的节点的对应的服务信息进行删除(以图7为例,当前节点是微服务D,除了将SIDT中微服务D的节点状态更新为不可用以外,还需将微服务D的所有直接父节点和间接父节点,微服务B和微服务A,的状态标记为不可用;同时,从SIR中删除所有标记为不可用状态的服务信息);
将所述服务信息依赖库和所述服务信息库的信息同步到其他注册中心。
在另一种实施方式中,所述将服务注册请求发送到所述注册中心包括(附图未示出):
向所述注册中心上报心跳消息和/或下线信息;
所述注册中心接收并处理所述服务提供者发送的服务注册请求包括:
更新所述服务信息依赖库中相关节点(包括当前节点、直接和间接父节点)的状态为不可用状态,并在所述服务信息库中对不可用状态的节点的对应的服务信息进行删除;将所述服务信息依赖库和所述服务信息库的信息同步到其他注册中心。
本发明实施例的微服务注册方法,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
第三实施例
如图4所示,本发明第三实施例提供一种微服务注册设备,所述设备包括:存储器31、处理器32及存储在所述存储器31上并可在所述处理器32上运行的微服务注册程序,所述微服务注册程序被所述处理器32执行时,用于实现以下所述的微服务注册方法的步骤:
服务提供者根据所述服务提供者的私有领域本体知识、注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心;
所述注册中心接收并处理所述服务提供者发送的服务注册请求。
所述微服务注册程序被所述处理器32执行时,还用于实现以下所述的微服务注册方法的步骤:
所述将服务注册请求发送到所述注册中心包括:
将所述服务信息的URI上报到所述注册中心;
所述注册中心接收并处理所述服务提供者发送的服务注册请求包括:
接收并解析所述服务提供者上报的服务信息的URI;
通过所述服务信息的URI获取所述服务信息;
当获取到所述服务信息时,解析所述服务信息并确定所述服务信息中是否存在依赖服务;当所述服务信息中不存在依赖服务时,更新所述注册中心的服务信息依赖库中相关节点的状态为可用状态,并在所述注册中心的服务信息库中对可用状态的节点的对应的服务信息进行更新;当所述服务信息中存在依赖服务时,则获取所述依赖服务的服务信息的URI,并继续执行通过所述服务信息的URI获取所述服务信息的步骤;
当在预设时间内没有获取到所述服务信息时,更新所述服务信息依赖库中相关节点的状态为不可用状态,并在所述服务信息库中对不可用状态的节点的对应的服务信息进行删除;
将所述服务信息依赖库和所述服务信息库的信息同步到其他注册中心。
所述微服务注册程序被所述处理器32执行时,还用于实现以下所述的微服务注册方法的步骤:
所述将服务注册请求发送到所述注册中心包括:
向所述注册中心上报心跳消息和/或下线信息;
所述注册中心接收并处理所述服务提供者发送的服务注册请求包括:
更新所述服务信息依赖库中相关节点的状态为不可用状态,并在所述服务信息库中对不可用状态的节点的对应的服务信息进行删除;将所述服务信息依赖库和所述服务信息库的信息同步到其他注册中心。
本发明实施例的微服务注册设备,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
第四实施例
本发明第四实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有微服务注册程序,所述微服务注册程序被处理器执行时用于实现第二实施例所述的微服务注册方法的步骤。
需要说明的是,本实施例的计算机可读存储介质,与第二实施例的方法属于同一构思,其具体实现过程详细见方法实施例,且方法实施例中的技术特征在本实施例中均对应适用,这里不再赘述。
本发明实施例的计算机可读存储介质,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
第五实施例
如图5所示,本发明第五实施例提供一种微服务发现方法,服务发现是服务调用者通过一定的规则,通过注册中心查询所需的服务提供者的信息的过程。所述方法包括:
步骤S41、服务调用者构造语义查询请求,并将所述语义查询请求发送到注册中心;
在本实施例中,语义查询请求可以使用标准的SPARQL语法描述,支持复杂条件、聚合、排序等操作,并且可以指定返回服务提供者的RDF服务信息中的哪些属性。以图7为例,服务调用者可以构造一个查询请求将其发送到注册中心,指定返回协议类型为HTTP、权重大于2且依赖于微服务D的微服务的地址、端口和权重信息,并使用权重的降序对查询结果排序。
步骤S42、所述注册中心接收并处理所述服务调用者发送的语义查询请求,将语义查询成功信息发送到所述服务调用者;
在本实施例中,所述注册中心根据本体知识库中的公有和私有的领域本体知识,解析并执行SPARQL语义查询请求。在本地的SIDT和SIR中查询服务信息。由于多注册中心之间会进行SIDT和SIR数据同步,因此可以查询到系统中所有注册中心的信息。以图7为例,在注册中心2中可以查到注册中心1中注册的微服务的信息。
步骤S43、所述服务调用者接收所述注册中心发送的语义查询成功信息,并根据所述语义查询成功信息选择服务提供者发起调用。
在本实施例中,语义查询成功即为在SIDT和SIR中找到了匹配的服务信息。这种情况下,向服务调用者返回语义查询成功信息,服务调用者根据所述语义查询成功信息选择一个或多个服务提供者发起调用。
在一种实施方式中,所述服务调用者构造语义查询请求,并将所述语义查询请求发送到注册中心之后还包括(附图未示出):
所述注册中心接收并处理所述服务调用者发送的语义查询请求,将语义查询失败信息发送到所述服务调用者;
所述服务调用者接收所述注册中心发送的语义查询失败信息,并根据所述语义查询失败信息熔断所述服务提供者的调用。
在该实施方式中,语义查询失败的原因包括如下几种情况:1)、解析服务调用者的SPARQL查询请求失败;2)、通过SIDT判断出服务调用者请求的服务依赖的其他服务不可用;3)、其他错误,如注册中心内部异常等。
本发明实施例的微服务发现方法,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
第六实施例
如图6所示,本发明第六实施例提供一种微服务发现设备,所述设备包括:存储器51、处理器52及存储在所述存储器51上并可在所述处理器52上运行的微服务发现程序,所述微服务发现程序被所述处理器52执行时,用于实现以下所述的微服务发现方法的步骤:
服务调用者构造语义查询请求,并将所述语义查询请求发送到注册中心;
所述注册中心接收并处理所述服务调用者发送的语义查询请求,将语义查询成功信息发送到所述服务调用者;
所述服务调用者接收所述注册中心发送的语义查询成功信息,并根据所述语义查询成功信息选择服务提供者发起调用。
所述微服务发现程序被所述处理器52执行时,还用于实现以下所述的微服务发现方法的步骤:
所述注册中心接收并处理所述服务调用者发送的语义查询请求,将语义查询失败信息发送到所述服务调用者;
所述服务调用者接收所述注册中心发送的语义查询失败信息,并根据所述语义查询失败信息熔断所述服务提供者的调用。
本发明实施例的微服务发现设备,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
第七实施例
本发明第七实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有微服务发现程序,所述微服务发现程序被处理器执行时用于实现第五实施例所述的微服务发现方法的步骤。
需要说明的是,本实施例的计算机可读存储介质,与第五实施例的方法属于同一构思,其具体实现过程详细见方法实施例,且方法实施例中的技术特征在本实施例中均对应适用,这里不再赘述。
本发明实施例的计算机可读存储介质,通过公有和私有的领域本体知识描述服务信息,既提供了一种标准的服务定义语义,使得不同的注册中心能够共享服务信息且分析处理不同领域的服务信息;又具有良好的可扩展性,使得不同的服务提供者可以根据自身业务特点定义领域本体知识并描述符合自身领域的服务信息;服务调用者通过语义查询的方式进行服务发现,可以实现基于语义的灵活查询,不再局限于服务名等极少数属性。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。

Claims (15)

1.一种微服务注册方法,所述方法包括:
服务提供者根据所述服务提供者的私有领域本体知识、注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心;其中,所述服务提供者的私有领域本体知识包括所述服务提供者私有的服务信息类型和属性的模式,所述注册中心的私有领域本体知识包括所述注册中心私有的服务信息类型和属性的模式,所述公有领域本体知识包括服务信息相关的核心类型和属性的模式;
所述注册中心接收并处理所述服务提供者发送的服务注册请求。
2.根据权利要求1所述的方法,其特征在于,所述将服务注册请求发送到所述注册中心包括:
将所述服务信息的URI上报到所述注册中心;
所述注册中心接收并处理所述服务提供者发送的服务注册请求包括:
接收并解析所述服务提供者上报的服务信息的URI;
通过所述服务信息的URI获取所述服务信息;
当获取到所述服务信息时,解析所述服务信息并确定所述服务信息中是否存在依赖服务;当所述服务信息中不存在依赖服务时,更新所述注册中心的服务信息依赖库中相关节点的状态为可用状态,并在所述注册中心的服务信息库中对可用状态的节点的对应的服务信息进行更新;当所述服务信息中存在依赖服务时,则获取所述依赖服务的服务信息的URI,并继续执行通过所述服务信息的URI获取所述服务信息的步骤;
当在预设时间内没有获取到所述服务信息时,更新所述服务信息依赖库中相关节点的状态为不可用状态,并在所述服务信息库中对不可用状态的节点的对应的服务信息进行删除;
将所述服务信息依赖库和所述服务信息库的信息同步到其他注册中心。
3.根据权利要求1所述的方法,其特征在于,所述将服务注册请求发送到所述注册中心包括:
向所述注册中心上报心跳消息和/或下线信息;
所述注册中心接收并处理所述服务提供者发送的服务注册请求包括:
更新所述服务信息依赖库中相关节点的状态为不可用状态,并在所述服务信息库中对不可用状态的节点的对应的服务信息进行删除;将所述服务信息依赖库和所述服务信息库的信息同步到其他注册中心。
4.一种微服务发现方法,所述方法包括:
服务调用者构造语义查询请求,并将所述语义查询请求发送到注册中心;
所述注册中心接收并处理所述服务调用者发送的语义查询请求,将语义查询成功信息发送到所述服务调用者;
所述服务调用者接收所述注册中心发送的语义查询成功信息,并根据所述语义查询成功信息选择服务提供者发起调用;
其中,所述注册中心处理所述服务调用者发送的语义查询请求包括:根据服务提供者的私有领域本体知识、所述注册中心的私有领域本体知识以及公有领域本体知识解析并执行所述语义查询请求;在服务信息库SIR和服务信息依赖树SIDT中找到匹配的服务信息的情况下,继续执行所述将语义查询成功信息发送到所述服务调用者的步骤;
其中,所述服务提供者的私有领域本体知识包括所述服务提供者私有的服务信息类型和属性的模式,所述注册中心的私有领域本体知识包括所述注册中心私有的服务信息类型和属性的模式,所述公有领域本体知识包括服务信息相关的核心类型和属性的模式。
5.根据权利要求4所述的方法,其特征在于,所述服务调用者构造语义查询请求,并将所述语义查询请求发送到注册中心之后还包括:
所述注册中心接收并处理所述服务调用者发送的语义查询请求,在服务信息库SIR和服务信息依赖树SIDT中未找到匹配的服务信息的情况下,将语义查询失败信息发送到所述服务调用者;
所述服务调用者接收所述注册中心发送的语义查询失败信息,并根据所述语义查询失败信息熔断所述服务提供者的调用。
6.一种微服务注册设备,其特征在于,所述设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的微服务注册程序,所述微服务注册程序被所述处理器执行时实现如权利要求1至3中任一项所述的微服务注册方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有微服务注册程序,所述微服务注册程序被处理器执行时实现如权利要求1至3中任一项所述的微服务注册方法的步骤。
8.一种微服务发现设备,其特征在于,所述设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的微服务发现程序,所述微服务发现程序被所述处理器执行时实现如权利要求4至5中任一项所述的微服务发现方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有微服务发现程序,所述微服务发现程序被处理器执行时实现如权利要求4至5中任一项所述的微服务发现方法的步骤。
10.一种微服务系统,其特征在于,所述微服务系统包括服务提供者、服务调用者和注册中心;
所述服务提供者,用于根据所述服务提供者的私有领域本体知识、所述注册中心的私有领域本体知识以及公有领域本体知识,定义并发布自身的服务信息;将服务注册请求发送到所述注册中心;对所述服务调用者提供服务信息访问服务;其中,所述服务提供者的私有领域本体知识包括所述服务提供者私有的服务信息类型和属性的模式,所述注册中心的私有领域本体知识包括所述注册中心私有的服务信息类型和属性的模式,所述公有领域本体知识包括服务信息相关的核心类型和属性的模式;
所述服务调用者,用于构造语义查询请求;将所述语义查询请求发送到所述注册中心;接收所述注册中心发送的语义查询成功信息,并根据所述语义查询成功信息选择所述服务提供者发起调用;
所述注册中心,用于接收并处理所述服务提供者发送的服务注册请求和所述服务调用者发送的语义查询请求,将语义查询成功信息发送到所述服务调用者。
11.根据权利要求10所述的微服务系统,其特征在于,所述服务提供者包括私有第一私有本体知识模块、第一本体知识库、服务信息模块以及服务接口;
所述第一私有本体知识模块,用于提供所述服务提供者的私有领域本体知识;
所述第一本体知识库,用于存储所述服务提供者的私有领域本体知识;
所述服务信息模块,用于根据所述服务提供者的私有领域本体知识、所述注册中心的私有领域本体知识和公有领域本体知识,定义并发布自身的服务信息;将所述服务信息的统一资源标识符URI上报到所述注册中心;通过所述服务接口对所述服务调用者提供服务信息访问服务。
12.根据权利要求10所述的微服务系统,其特征在于,所述服务调用者包括服务请求模块和语义查询请求处理器;
所述服务请求模块,用于构造语义查询请求;根据所述语义查询请求处理器接收到的语义查询成功信息选择所述服务提供者发起调用;
所述语义查询请求处理器,用于将所述语义查询请求发送到所述注册中心,接收所述注册中心发送的语义查询成功信息。
13.根据权利要求10所述的微服务系统,其特征在于,所述注册中心包括公有本体知识模块、第二私有本体知识模块、服务信息语义处理引擎、服务信息语义查询引擎以及服务库;
所述公有本体知识模块,用于提供公有领域本体知识;
所述第二私有本体知识模块,用于提供所述注册中心的私有领域本体知识;
所述服务信息语义处理引擎,用于接收所述服务提供者发送的服务注册请求;解析服务信息以及服务信息之间的依赖关系;将解析后的服务信息以及服务信息之间的依赖关系存入所述服务库,并同步到其他注册中心;
所述服务信息语义查询引擎,用于接收所述服务调用者发送的语义查询请求;解析所述语义查询请求,将语义查询成功信息发送到所述服务调用者;
所述服务库,用于存储所述公有领域本体知识、所述注册中心的私有领域本体知识、服务信息以及服务信息之间的依赖关系。
14.根据权利要求13所述的微服务系统,其特征在于,所述注册中心还包括服务状态维护器;
所述服务提供者,还用于向所述注册中心上报心跳消息和/或下线信息;
所述服务状态维护器,用于根据所述服务提供者上报的心跳消息和/或下线信息,维护所述服务库中的服务信息以及服务信息之间的依赖关系的状态,并同步到其他注册中心。
15.根据权利要求13所述的微服务系统,其特征在于,所述服务库包括第二本体知识库、服务信息库和服务信息依赖库;
所述第二本体知识库,用于存储所述公有领域本体知识、所述注册中心的私有领域本体知识;
所述服务信息库,用于存储所述服务信息;
所述服务信息依赖库,用于存储所述服务信息之间的依赖关系。
CN201810657228.6A 2018-06-25 2018-06-25 微服务注册和发现方法、设备、存储介质以及微服务系统 Active CN110636093B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810657228.6A CN110636093B (zh) 2018-06-25 2018-06-25 微服务注册和发现方法、设备、存储介质以及微服务系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810657228.6A CN110636093B (zh) 2018-06-25 2018-06-25 微服务注册和发现方法、设备、存储介质以及微服务系统

Publications (2)

Publication Number Publication Date
CN110636093A CN110636093A (zh) 2019-12-31
CN110636093B true CN110636093B (zh) 2022-04-26

Family

ID=68967491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810657228.6A Active CN110636093B (zh) 2018-06-25 2018-06-25 微服务注册和发现方法、设备、存储介质以及微服务系统

Country Status (1)

Country Link
CN (1) CN110636093B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111447256B (zh) * 2020-03-05 2022-07-01 中国司法大数据研究院有限公司 一种基于文件交换的跨域微服务注册发布方法及系统
CN112286503B (zh) * 2020-10-28 2024-05-28 平安科技(深圳)有限公司 多注册中心的微服务统一管理方法、装置、设备及介质
CN112416459B (zh) * 2020-11-23 2024-03-01 杭州当虹科技股份有限公司 一种解决微服务之间版本强依赖的系统
CN114640657A (zh) * 2020-12-16 2022-06-17 北京国双科技有限公司 多注册中心的融合方法、装置
CN112882763A (zh) * 2020-12-17 2021-06-01 济南浪潮数据技术有限公司 一种访问控制方法、装置、设备及可读存储介质
CN112929358B (zh) * 2021-01-29 2022-12-30 中国工商银行股份有限公司 用于微服务编排的方法和装置、电子设备、及介质
CN112799661A (zh) * 2021-02-01 2021-05-14 斑马网络技术有限公司 基于图谱的api编排方法及系统、电子设备、存储介质
CN115086412B (zh) * 2021-03-16 2024-09-06 易保网络技术(上海)有限公司 一种微服务开发方法、系统以及计算机设备和介质
CN113157737B (zh) * 2021-03-30 2023-09-01 西南电子技术研究所(中国电子科技集团公司第十研究所) 服务实例关联关系动态构建系统
CN113590350A (zh) * 2021-07-28 2021-11-02 浪潮卓数大数据产业发展有限公司 一种兼容多语言的服务方法、设备及介质
CN114268665B (zh) * 2021-12-28 2023-11-21 中国农业银行股份有限公司 微服务系统发布方法、装置、设备及可读存储介质
CN117015069A (zh) * 2022-04-29 2023-11-07 中国电信股份有限公司 网络连接方法及装置、计算机可读存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7860001B2 (en) * 2007-04-02 2010-12-28 Telefonaktiebolaget L M Ericsson (Publ) Telecommunications method and system involving active nodes having full receive state and isolated receive state from non-allocated traffic
CN101141455B (zh) * 2007-09-13 2011-06-22 北京交通大学 一种网络资源与服务的统一描述方法
CN101873335B (zh) * 2009-04-24 2013-02-13 同济大学 一种跨域语义Web服务的分布式搜索方法
CN101567005B (zh) * 2009-05-07 2012-05-09 浙江大学 一种基于WordNet的语义服务注册与查询方法
CN101655943B (zh) * 2009-09-14 2016-12-07 南京中兴软件有限责任公司 企业应用集成工作流管理方法及系统
CN102609512A (zh) * 2012-02-07 2012-07-25 北京中机科海科技发展有限公司 异构信息知识挖掘与可视化分析系统及方法
CN103139314B (zh) * 2013-03-19 2015-10-07 东南大学 基于P2P的分布式Web服务发现方法及其系统
CN104700040B (zh) * 2013-12-10 2021-08-03 腾讯科技(深圳)有限公司 一种权限控制方法和装置
CN103942249A (zh) * 2014-03-06 2014-07-23 苏州鸿然信息科技有限公司 一种基于本体集合语义匹配的信息服务调度系统
CN104462460B (zh) * 2014-12-16 2017-09-05 武汉理工大学 一种构造rest风格的本体标注可视化系统的方法
CN104809147B (zh) * 2015-02-06 2017-12-22 天津大学 一种基于实证评价反馈的服务语义标注增强方法
CN105515759B (zh) * 2015-11-27 2018-11-09 国网信息通信产业集团有限公司 一种微服务注册方法及系统
CN107612955A (zh) * 2016-07-12 2018-01-19 深圳市远行科技股份有限公司 微服务提供方法、装置及系统
CN107643927A (zh) * 2016-07-20 2018-01-30 中兴通讯股份有限公司 一种统一门户方法、装置及系统
CN106411933B (zh) * 2016-11-15 2019-09-10 深圳市彬讯科技有限公司 一种可进行服务治理与语言调用的轻量级rpc系统
CN106603582B (zh) * 2017-02-23 2020-03-13 北京工业大学 一种网络微服务发现方法
CN107066189A (zh) * 2017-05-15 2017-08-18 惠州Tcl移动通信有限公司 一种基于移动终端的拼图解锁方法及系统
CN107948284B (zh) * 2017-11-24 2021-04-16 泰康保险集团股份有限公司 一种基于微服务架构的服务下线方法、设备和系统

Also Published As

Publication number Publication date
CN110636093A (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
CN110636093B (zh) 微服务注册和发现方法、设备、存储介质以及微服务系统
KR101079570B1 (ko) 검색 웹 서비스
US8959194B1 (en) Merging network device configuration schemas
EP1901526B1 (en) Concatenation of web services
CN111078504A (zh) 一种分布式调用链跟踪方法、装置、计算机设备及存储介质
US9632764B2 (en) Defining configurable characteristics of a product and associating configuration with enterprise resources
US7720931B2 (en) System and method of remotely managing and loading artifacts
US8521754B2 (en) System and methods for web data transformation sourcing
US10120886B2 (en) Database integration of originally decoupled components
US11561997B2 (en) Methods, systems, and computer readable media for data translation using a representational state transfer (REST) application programming interface (API)
US9323587B2 (en) Method and system for automatic detecting and resolving APIs
US11468132B2 (en) System and method of sensing and responding to service discoveries
CN109783562B (zh) 一种业务处理方法和装置
US20090287800A1 (en) Method, device and system for managing network devices
US11263542B2 (en) Technologies for auto discover and connect to a rest interface
CN113157737A (zh) 服务实例关联关系动态构建系统
CN115016784A (zh) 低代码应用复用方法、应用解析系统、设备及存储介质
US20230094137A1 (en) Generating and visualizing a data structure of a management model of an application server
CN117290550A (zh) 一种图数据库中资源关系的发现方法和装置
WO2020192903A1 (en) Methods and devices for service capability discovery provided by management function providers
CN117215808A (zh) 一种业务处理方法、装置及服务端设备
CN114896130A (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
GR01 Patent grant
GR01 Patent grant