CN112306720B - 业务系统集群管理方法 - Google Patents
业务系统集群管理方法 Download PDFInfo
- Publication number
- CN112306720B CN112306720B CN202011322756.XA CN202011322756A CN112306720B CN 112306720 B CN112306720 B CN 112306720B CN 202011322756 A CN202011322756 A CN 202011322756A CN 112306720 B CN112306720 B CN 112306720B
- Authority
- CN
- China
- Prior art keywords
- node
- cluster
- task
- nodes
- server
- 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
Links
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及业务系统集群化管理,其公开了一种业务系统集群管理方法,解决传统业务系统集群管理方案存在的任务分配效率低和可靠性低的问题。该方法包括:多个服务器节点之间建立集群;通过任务广播队列向集群中的节点下发设备连接任务,集群中所有节点通过一致性哈希算法对任务进行散列分配;集群中的所有服务器节点通过控制广播队列定时发起各节点状态的模拟检测,根据检测反馈情况进行故障投票,确定故障服务器节点,并重新建立集群,对故障服务器节点上的任务进行重新负载。
Description
技术领域
本发明涉及业务系统集群管理,具体涉及一种业务系统集群管理方法。
背景技术
企业网络中,经过多年的建设,网络规模越来愈大,催生了一些智能运维的技术和系统,例如:SDN等。随着智能运维业务的复杂度越来越高,所要管理的设备越来越多,以及对系统可靠性的高要求,则并行化、集群化和高可靠化在这些管理系统中体现的越来越明显。
传统的业务系统集群管理中,主要采用选主策略选举出主节点,再通过主节点进行任务分配和管理,由于不能并行化任务分配,任务分配效率低;并且,节点故障需要依靠三方识别,且不能真正判断节点业务状态,当主节点故障还需要重新进行选主,可靠性低。
发明内容
本发明所要解决的技术问题是:提出一种业务系统集群管理方法,解决传统业务系统集群管理方案存在的任务分配效率低和可靠性低的问题。
本发明解决上述技术问题采用的技术方案是:业务系统集群管理方法,应用于包括缓存数据库和多个服务器节点的分布式系统,该方法包括:
多个服务器节点之间建立集群;通过任务广播队列向集群中的节点下发设备连接任务,集群中所有节点通过一致性哈希算法对任务进行散列分配;集群中的所有服务器节点通过控制广播队列定时发起各节点状态的模拟检测,根据检测反馈情况进行故障投票,确定故障服务器节点,并重新建立集群,对故障服务器节点上的任务进行重新负载。
作为进一步优化,还包括:当故障节点恢复后,发送加入集群的请求,获得当前集群中所有服务器节点允许后加入集群,并发起重新负载请求,新的集群中的各个服务器节点对任务进行重新负载。
作为进一步优化,所述多个服务器节点之间建立集群,具体包括:
服务器节点启动后,初始化状态数据,并将状态数据和身份数据写入缓存数据库;
服务器节点通过控制广播队列向当前集群中的各个服务器节点发送加入集群的请求;
收到加入集群的请求的节点根据本节点当前状态决定是否允许发送请求的服务器节点加入集群;
当发送请求的服务器节点收到当前集群中所有服务器节点的允许回复后,加入集群并更新节点状态。
作为进一步优化,所述初始化状态数据是指设置服务器节点当前状态设置为注册状态,写入缓存数据库的身份数据为该服务器节点的IP地址,在节点加入集群后,将该节点的状态设置为负载状态。
作为进一步优化,所述收到加入集群的请求的服务器节点根据本节点当前状态决定是否允许发送请求的服务器节点加入集群,具体包括:
若本节点当前处于注册状态或负载状态,则允许请求的节点加入集群;
若本节点当前处于重新负载状态,则停止该状态并允许请求的节点加入集群,或者继续保持重新负载状态并拒绝发送请求的服务器节点加入集群。
作为进一步优化,所述所有服务器节点通过一致性哈希算法对任务进行散列分配,具体包括:
集群中的各个服务器节点在收到任务后,从缓存数据库中读取当前状态为注册状态或负载状态的节点;
每个服务器节点采用一致性哈希算法,使用所有服务器节点的身份信息进行哈希分布计算,获得任务分布结果;
每个服务器节点根据任务分布结果判断该任务是否由本节点负载,若是,则根据任务向对应设备发起连接;否则,放弃该任务。
作为进一步优化,所述所有节点通过一致性哈希算法对任务进行散列分配,还包括:
每个服务器节点在缓存数据库中记录任务调度结果,所述任务调度结果中记录对该任务负载的负载节点信息以及放弃该任务的非负载节点的累计值;当集群中的最后一个节点根据所述任务调度结果检测到所有节点均放弃了对该任务的负载,则所述最后一个节点对该任务进行负载,并更新任务调度结果。
作为进一步优化,所述使用所有节点的身份信息进行哈希分布计算,具体包括:
将所有节点的IP地址换算为整型数据,并进行排序编号,设置相同长度的哈希表,使用设备连接任务的设备IP地址作为散列的对象,对其进行两次哈希计算,并使用哈希表长度进行取模计算,得到该设备IP散列的节点。
作为进一步优化,集群中的所有服务器节点通过控制广播队列定时发起各节点状态的模拟检测,根据检测反馈情况进行故障投票,确定故障节点,具体包括:
每个服务器节点根据算法排列当前节点发起模拟检测任务的时间,并按照时间向控制广播队列发送模拟检测任务;
各服务器节点收到模拟检测任务后,进行检测任务实施,并根据结果发送节点状态到控制广播队列中;
收到检测任务服务器节点根据各服务器节点的检测反馈情况进行故障投票;
当某一服务器节点在对另一服务器节点进行故障投票时,判断故障投票数超过预设阈值时,向控制广播队列发送所述另一节点服务器的节点故障信息。
作为进一步优化,所述收到检测任务的节点根据各服务器节点的检测反馈情况进行故障投票,具体包括:
若某一收到检测任务的服务器节点在超时时间后仍未收到另一服务器节点的检测反馈,则在缓存数据库中对所述另一服务器节点投票的状态投票为故障节点。
本发明的有益效果是:
(1)通过对节点的集群构建,集群中所有服务器节点通过一致性哈希算法对任务进行散列分配,从而摒弃了选主节点的方案,极大地降低了集群对外的依赖,同时提高了任务分配效率,也实现了所有服务器节点的对等化;
(2)通过集群中的各服务器节点定时发起模拟检测任务,根据检测反馈情况进行故障投票,确定故障节点,从而不需要第三方识别就能够准确识别出节点状态,从而准确发现故障节点。
附图说明
图1为本发明实施例中的业务系统集群管理方法流程图。
具体实施方式
本发明旨在提出一种业务系统集群管理方法,解决传统业务系统集群管理方案存在的任务分配效率低和可靠性低的问题。本发明中的多个服务器节点构建集群后,通过任务广播队列下发任务,所有节点通过一致性哈希算法对任务进行散列分配,实现任务的分配;并通过集群中的节点定时发起模拟任务,所有节点返回执行结果,所有节点进行故障投票,实现故障节点准确判断,在判断出故障节点后进行任务重负载。
下面结合附图及实施例对本发明的方案作进一步的描述:
如图1所示,本实施例中的业务系统集群管理方法包括节点集群构建、节点任务负载、节点故障检测和节点重负载几个部分。下面详细阐述各个部分的实施手段:
一、节点集群构建:
在节点集群构建过程中,各个节点执行相同的注册流程:
(1)节点启动,初始化状态数据,将状态设置为注册状态(regist);
(2)完成初始化后,节点将自己的身份(例如:IP等)和状态(regist)写入集群数据库;
(3)每个服务器节点发送加入集群的请求以构建集群,
(4)收到加入集群的请求的服务器,根据当前自身状态判断当前是否允许加入新服务器节点;
如:节点2在收到节点1的加入集群的请求后,首先判断节点2的当前状态信息,若节点2当前处于注册状态(regist)或负载状态(loading),则允许节点1加入集群;若节点2当前处于重新负载状态(rebalance),则停止该状态并允许节点1加入集群,或者继续保持rebalance并拒绝节点1加入集群。
(5)发送加入集群的请求的服务器节点成功收到所有服务器节点的允许后,加入集群中;
(6)在服务器节点成功加入集群后,更新节点状态为loading,就可以开始订阅任务。
二、节点任务负载:
(1)管理员可以通过任务广播队列向集群下发和设备建立连接任务,比如,任务:{task:create_connect,dev:172.168.1.1},表示该任务为与IP地址为172.168.1.1的设备建立连接;
(2)每个加入集群中的服务器节点均收到建立连接任务;
(3)每个服务器节点从数据库读取当前集群中的各个服务器节点状态;
(4)每个服务器节点使用一致性哈希算法,使用所有节点的身份信息(如IP地址)进行任务分布计算;分布计算方法:将所有节点的IP换算为整型数据,并进行排序编号,设置相同长度的哈希表。使用设备连接任务的设备IP作为散列的对象,对其进行两次哈希计算哈希(hash.hashcode()),并使用哈希表长度进行取模计算,得到该设备IP散列的节点。由于采用一致性哈希算法计算,各个服务器节点会得到相同的任务分布结果。
(5)每个服务器节点根据任务分布结果,各自判断是否由自己进行任务负载;
(6)如果某个服务器节点判断由自己进行任务负载,则发起设备连接,若判断不是由自己进行任务负载,则放弃该任务;
(7)各个服务器节点在分布式缓存中记录任务调度结果,在任务调度结果中,负载该任务的服务器节点记录节点信息,放弃该任务的服务器节点进行非负载节点个数累加;
任务调度结果记录形式如:{设备IP:172.168.1.1,load:10.10.1.1,discard:5}
Load为负载节点,由根据计算得出的当前作为负载节点的服务器节点写入,discard为所有非负载服务器节点的累计。
(8)如果最后一个服务器节点发现之前所有服务器节点都放弃了对该任务的负载,则对该任务进行负载,并重新更新负载调度结果。
三、节点故障检测:
(1)各个服务器节点根据算法排列当前服务器节点发起检测任务的时间,按照时间定时发起检测节点状态的检测任务到控制广播队列;
(2)所有服务器节点收到检测任务后,进行模拟任务实施,并根据结果发送节点状态到控制广播队列;
(3)各服务器节点收到模拟检测任务后,进行检测任务实施,并根据结果发送节点状态到控制广播队列中;
(4)收到检测任务的服务器节点根据各节点的检测反馈情况进行故障投票;
收到检测任务的服务器节点都会对模拟任务的结果进行检测,检测超时没有反馈的节点,可以初步判定为故障节点,则在缓存数据库中对这些节点进行故障投票。
(5)当某服务器一节点在对另服务器一节点进行故障投票时,判断故障投票数超过预设阈值时,向控制广播队列发送所述另一节服务器点的节点故障信息;
如:当一个服务器节点进行投票时,发现某服务器节点的故障投票率超过了阈值50%,则可以确认该节点为故障节点,随之将节点故障信息发送到控制广播队列中。
(6)集群中的正常服务器节点重新进入集群构建状态;
(7)正常服务器节点读取故障节点负载的设备连接任务;
(8)所有正常服务器节点重新使用一致性哈希算法,使用正常服务器节点进行分布,完成重新负载。
四、节点重负载:
(1)当故障节点重启成功恢复后,发送加入集群的请求;
(2)恢复后的故障服务器节点等待集群中所有运行服务器节点的允许回复;
(3)恢复后的故障服务器节点加入集群成功后接收任务,如果管理员或系统需要重新负载,则发起重新负载请求;
(4)集群中所有节点进入reblance状态,将所有任务和所有节点进行重新负载。
基于本发明的上述手段,可以极大地降低集群对外的依赖,同时提高了任务分配效率,也实现了所有节点的对等化,在故障节点识别的准确率上也有较大提升,在发现故障节点时及时进行任务重负载,大大提升系统业务处理的稳定性。
Claims (9)
1.业务系统集群管理方法,应用于包括缓存数据库和多个服务器节点的集群系统,其特征在于,该方法包括:
多个服务器节点之间建立集群;通过任务广播队列向集群中的节点下发设备连接任务,集群中所有节点通过一致性哈希算法对任务进行散列分配;集群中的所有服务器节点通过控制广播队列定时发起各节点状态的模拟检测,根据检测反馈情况进行故障投票,确定故障服务器节点,并重新建立集群,对故障服务器节点上的任务进行重新负载;
集群中的所有节点通过控制广播队列定时发起各节点状态的模拟检测,根据检测反馈情况进行故障投票,确定故障节点,具体包括:
每个节点根据算法排列当前节点发起模拟检测任务的时间,并按照时间向控制广播队列发送模拟检测任务;
各节点收到模拟检测任务后,进行检测任务实施,并根据结果发送节点状态到控制广播队列中;
收到检测任务的节点根据各节点的检测反馈情况进行故障投票;
当某一节点在对另一节点进行故障投票时,判断故障投票数超过预设阈值时,向控制广播队列发送所述另一节点的节点故障信息。
2.如权利要求1所述的业务系统集群管理方法,其特征在于,所述方法还包括:当故障节点恢复后,发送加入集群的请求,获得当前集群中所有节点允许后加入集群,并发起重新负载请求,新的集群中的各个节点对任务进行重新负载。
3.如权利要求1所述的业务系统集群管理方法,其特征在于,所述多个服务器节点之间建立集群,具体包括:
服务器节点启动后,初始化状态数据,并将状态数据和身份数据写入缓存数据库;
服务器节点通过控制广播队列向当前集群中的各个服务器节点发送加入集群的请求;
收到加入集群的请求的服务器节点根据本节点当前状态决定是否允许发送请求的服务器节点加入集群;
当发送请求的服务器节点收到当前集群中所有服务器节点的允许回复后,加入集群并更新节点状态。
4.如权利要求3所述的业务系统集群管理方法,其特征在于,
所述初始化状态数据是指服务器节点当前状态为注册状态;
写入缓存数据库的所述身份数据为该服务器节点的IP地址;
在服务器节点加入集群后,将该服务器节点的状态设置为负载状态。
5.如权利要求3所述的业务系统集群管理方法,其特征在于,所述收到加入集群的请求的服务器节点根据本节点当前状态决定是否允许发送请求的服务器节点加入集群,具体包括:
若本节点当前处于注册状态或负载状态,则允许请求的服务器节点加入集群;
若本节点当前处于重新负载状态,则停止该状态并允许请求的服务器节点加入集群,或者继续保持重新负载状态并拒绝发送请求的服务器节点加入集群。
6.如权利要求1所述的业务系统集群管理方法,其特征在于,所述所有节点通过一致性哈希算法对任务进行散列分配,具体包括:
集群中的各个服务器节点在收到任务后,从缓存数据库中读取当前状态为注册状态或负载状态的节点;
每个节点采用一致性哈希算法,使用所有节点的身份信息进行哈希分布计算,获得任务分布结果;
每个节点根据任务分布结果判断该任务是否由本节点负载,若是,则根据任务向对应设备发起连接;否则,放弃该任务。
7.如权利要求6所述的业务系统集群管理方法,其特征在于,所述所有节点通过一致性哈希算法对任务进行散列分配,还包括:
每个节点在缓存数据库中记录任务调度结果,所述任务调度结果中记录对该任务负载的负载节点信息以及放弃该任务的非负载节点的累计值;当集群中的最后一个节点根据所述任务调度结果检测到所有节点均放弃了对该任务的负载,则所述最后一个节点对该任务进行负载,并更新任务调度结果。
8.如权利要求6所述的业务系统集群管理方法,其特征在于,
所述使用所有节点的身份信息进行哈希分布计算,具体包括:
将所有节点的IP地址换算为整型数据,并进行排序编号,设置相同长度的哈希表,使用设备连接任务的设备IP地址作为散列的对象,对其进行两次哈希计算,并使用哈希表长度进行取模计算,得到该设备IP散列的节点。
9.如权利要求1所述的业务系统集群管理方法,其特征在于,所述收到检测任务的节点根据各节点的检测反馈情况进行故障投票,具体包括:
若某一收到检测任务的节点在超时时间后仍未收到另一节点的检测反馈,则在缓存数据库中对所述另一节点投票的状态投票为故障节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011322756.XA CN112306720B (zh) | 2020-11-23 | 2020-11-23 | 业务系统集群管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011322756.XA CN112306720B (zh) | 2020-11-23 | 2020-11-23 | 业务系统集群管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306720A CN112306720A (zh) | 2021-02-02 |
CN112306720B true CN112306720B (zh) | 2022-06-21 |
Family
ID=74336164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011322756.XA Active CN112306720B (zh) | 2020-11-23 | 2020-11-23 | 业务系统集群管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306720B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447097A (zh) * | 2015-11-10 | 2016-03-30 | 北京北信源软件股份有限公司 | 数据采集方法及系统 |
CN106210151A (zh) * | 2016-09-27 | 2016-12-07 | 深圳市彬讯科技有限公司 | 一种zedis分布式缓存及服务器集群监控方法 |
CN108132830A (zh) * | 2016-12-01 | 2018-06-08 | 北京金山云网络技术有限公司 | 一种任务调度方法、装置及系统 |
CN110224871A (zh) * | 2019-06-21 | 2019-09-10 | 深圳前海微众银行股份有限公司 | 一种Redis集群的高可用方法及装置 |
CN111338793A (zh) * | 2020-02-14 | 2020-06-26 | 拉扎斯网络科技(上海)有限公司 | 集群任务分发方法、装置、设备及存储介质 |
CN111506421A (zh) * | 2020-04-02 | 2020-08-07 | 浙江工业大学 | 一种实现Redis集群的可用性方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080207B2 (en) * | 2016-06-07 | 2021-08-03 | Qubole, Inc. | Caching framework for big-data engines in the cloud |
CN110611603B (zh) * | 2019-09-09 | 2021-08-31 | 苏州浪潮智能科技有限公司 | 一种集群网卡监控方法及装置 |
-
2020
- 2020-11-23 CN CN202011322756.XA patent/CN112306720B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447097A (zh) * | 2015-11-10 | 2016-03-30 | 北京北信源软件股份有限公司 | 数据采集方法及系统 |
CN106210151A (zh) * | 2016-09-27 | 2016-12-07 | 深圳市彬讯科技有限公司 | 一种zedis分布式缓存及服务器集群监控方法 |
CN108132830A (zh) * | 2016-12-01 | 2018-06-08 | 北京金山云网络技术有限公司 | 一种任务调度方法、装置及系统 |
CN110224871A (zh) * | 2019-06-21 | 2019-09-10 | 深圳前海微众银行股份有限公司 | 一种Redis集群的高可用方法及装置 |
CN111338793A (zh) * | 2020-02-14 | 2020-06-26 | 拉扎斯网络科技(上海)有限公司 | 集群任务分发方法、装置、设备及存储介质 |
CN111506421A (zh) * | 2020-04-02 | 2020-08-07 | 浙江工业大学 | 一种实现Redis集群的可用性方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112306720A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100389392C (zh) | 一种集群系统中实现负载均衡的方法、系统和存储控制器 | |
US7849178B2 (en) | Grid computing implementation | |
CN106993019A (zh) | 分布式任务调度方法和系统 | |
KR20040015223A (ko) | 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법,클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터프로그램 | |
CN108183971B (zh) | 一种分布式系统中的节点选举方法 | |
CN109040184B (zh) | 一种主节点的选举方法及服务器 | |
CN110830582B (zh) | 一种基于服务器集群选主方法和装置 | |
CN103164262B (zh) | 一种任务管理方法及装置 | |
CN110611603B (zh) | 一种集群网卡监控方法及装置 | |
CN110661637A (zh) | 分布式系统成员变更方法和分布式系统 | |
US10802896B2 (en) | Rest gateway for messaging | |
CN111541762A (zh) | 数据处理的方法、管理服务器、设备及存储介质 | |
CN114363350A (zh) | 一种服务治理系统及方法 | |
CN113810216A (zh) | 一种集群的故障切换方法、装置及电子设备 | |
CN108206843B (zh) | 一种集群访问方法及装置 | |
CN112214377A (zh) | 一种设备管理方法及系统 | |
CN103475742A (zh) | 云计算环境中主控节点确定的方法及系统 | |
CN108509296B (zh) | 一种处理设备故障的方法和系统 | |
CN112306720B (zh) | 业务系统集群管理方法 | |
CN112037873B (zh) | 一种基于集群选主和共识机制的单点优化方法 | |
CN111506457A (zh) | 一种区块链数据的备份方法 | |
CN111880932A (zh) | 一种基于多网口的数据存储方法及装置 | |
CN114493602B (zh) | 区块链交易的执行方法、装置、电子设备和存储介质 | |
CN110912979A (zh) | 一种解决多服务器资源同步冲突方法 | |
CN113518126A (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 |