一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

GPRC客户端统一管理方法及系统与流程

2022-03-23 02:52:47 来源:中国专利 TAG:

gprc客户端统一管理方法及系统
技术领域
1.本技术涉及计算机技术领域,具体涉及一种gprc客户端统一管理方法及一种gprc客户端统一管理系统。


背景技术:

2.在软件开发的服务器端,通过grpc协议实现,并会对外提供grpc连接及各种注册服务service的调用接口的服务器经常出现。基于这种情况,传统的通过grpc短连接,调用grpc连接函数,设置超时等连接参数,然后调用某种服务service的接口,最后释放该grpc连接的方法将不再适用。因为当在不同的实现中,调用不同的注册service接口,就会存在代码中多处重复的grpc连接,获取注册服务service接口的编写,对于连接参数如ip、port、超时等参数的修改,也不方便统一。基于现有grpc注册服务调取方法存在效率低下和调控困难的问题,需要创造一种新的gprc客户端统一管理方法。


技术实现要素:

3.本技术实施例的目的是提供一种gprc客户端统一管理方法及一种gprc客户端统一管理系统,以至少解决上述问题。
4.为了实现上述目的,本技术第一方面提供一种gprc客户端统一管理方法,包括:利用预设编程语言预设map存储,在预设的map存储中,每创建一个指定service服务的grpc连接对象,便利用预设编程语言预设的缓存规则对该grpc连接对象进行缓存;存在grpc连接对象调控管理需求时,直接调用缓存的与需求对应的grpc连接对象进行调控管理。
5.在本技术实施例中,所述利用预设编程语言预设map存储,包括:利用预设编程语言使用map的键值对的类型,存储所有并发的grpc连接对象;根据预设并发连接阈值和并发的grpc连接对象冲突规则,设置读锁功能和写锁功能;输出完成上述设定的并发map存储作为预设的map存储;其中,所述预设的map存储的key为int64类型;所述预设的map存储的value为interface{}任意类型。
6.在本技术实施例中,所述方法还包括:为预设的map存储添加管理方案;所述管理方案包括:添加方案、删除方案和读取方案;其中,添加方案和删除方案在预设的map存储的写锁功能解锁状态下执行;所述读取方案需要在预设的map存储的读锁功能解锁状态下进行。
7.在本技术实施例中,所述方法还包括:利用预设编程语言预设缓存规则,包括:枚举grpc提供service类型集,获得各service类型id;定义一个struct结构类型,用于对应定义一个grpc连接对象;根据所述service类型集和所述struct结构类型定义一个缓存函数;其中,该缓存函数的入参为service类型id,出参为对应创建的grpc连接对象。
8.在本技术实施例中,利用预设编程语言预设的缓存规则grpc连接对象进行缓存,包括:使用雪花随机数生成算法生成唯一service类型id;根据所述唯一service类型id和所述缓存函数创建对应的struct结构类型;基于所述struct结构类型返回定义的grpc连接
对象作为缓存对象。
9.在本技术实施例中,所述调控管理需求包括:grpc连接对象的生命周期管理、统计管理、调试性输出管理和断开管理。
10.在本技术实施例中,所述统计管理包括:获取grpc连接对象的时钟节点、实时grpc连接客户端数量、每种客户端的注册服务service类型、每种注册服务的连接峰值、一段时间内的平均连接次数性能统计数字、预设时间长度的连接没有释放的对象统计。
11.在本技术实施例中,所述生命周期管理包括:基于统计管理获取的各项性能资料,进行连接客户端统一管控;其中,所述统一管控的基本准则为各grpc连接对象的连接service类型不发生冲突且总并行连接数量不大于预设并行连接数量阈值。
12.在本技术实施例中,所述断开管理包括:预设主动断开参数,并基于所述预设主动断开参数进行已连接的grpc对象主动断开;完成grpc对象主动断开后,自动将该断开的grpc连接对象进行缓存数据的删除;完成grpc对象主动断开后,开放该断开的grpc连接对象的相关日志和统计功能。
13.在本技术实施例中,所述直接调用缓存的与需求对应的grpc连接对象进行调控管理,包括:定义调用函数,该调用函数通过生成的唯一service类型id对缓存的与需求对应的grpc连接对象进行获取。
14.本技术第二方面提供一种gprc客户端统一管理系统,所述系统包括:存储单元,用于存储利用预设编程语言预设的map存储,以及用于存储利用预设编程语言预设的缓存规则;处理单元,用于在所述预设的map存储中,每创建一个指定service服务的grpc连接对象的同时,利用预设编程语言预设的缓存规则对该grpc连接对象进行缓存;调取单元,用于在存在grpc连接对象调控管理需求时,直接调用缓存的与需求对应的grpc连接对象;调控单元,用于对调用的grpc连接对象进行调控管理。
15.在本技术实施例中,所述存储单元还用于存储调用函数;所述调用单元用于通过调用函数生成的唯一service类型id对缓存的与需求对应的grpc连接对象进行获取。
16.本技术第四方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行上述的gprc客户端统一管理方法。
17.本技术第五方面提供一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现上述的gprc客户端统一管理方法。
18.通过上述技术方案,通过预设编程语言代码编写一个预设的缓存结构体,基于该缓存结构体进行grpc连接对象缓存。在后续的使用过程中,每创建一个指定service服务的grpc连接对象,便利用预设编程语言预设的缓存规则对该grpc连接对象进行缓存,然后最终基于该缓存的grpc连接对象进行统一的管控,提高了gprc客户端的管理效率。
19.本技术实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
20.附图是用来提供对本技术实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本技术实施例,但并不构成对本技术实施例的限制。在附图中:
21.图1示意性示出了根据本技术实施例的gprc客户端统一管理方法的步骤流程图;
22.图2示意性示出了根据本技术实施例的gprc客户端统一管理系统的系统结构图;
23.图3示意性示出了根据本技术实施例的计算机设备的内部结构图。
具体实施方式
24.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本技术实施例,并不用于限制本技术实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.需要说明,若本技术实施例中有涉及方向性指示(诸如上、下、左、右、前、后
……
),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
26.另外,若本技术实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
27.本技术提供的gprc客户端统一管理方法,可以应用于存在异步、并发的同时进行对指定的grpc服务的不同注册服务service的不同接口调用的场景。在常规的gprc客户端使用场景中,主要包含以下几个步骤:
28.1)在客户端的接口调用方,通过grpc服务提供的ip地址和port端口,建立与grpc服务器基于grpc协议的通讯连接;
29.2)根据客户端需求,指定某个grpc注册服务service的接口。基于该service接口获取制定的注册服务service的serviceclient接口;
30.3)最后通过这个制定的serviceclient接口阻塞式的调用具体的grpc实现接口,在完成接口调用的相应后,完成调用,并在完成调用后通过grpc连接的销毁接口,断开grpc服务的连接。
31.上述的现有gprc客户端使用方法对于一次gprc客户端使用场景有很理想的解决效果,但是对于存在异步、并发同时进行对指定的grpc服务的不同注册服务service的不同接口调用应用场景时,该方法存在极大额弊端。因为在软件开发的服务器端,经常会出现通过grpc协议实现,并会对外提供grpc连接及各种注册服务service的调用接口的服务器。在普遍的场景下,都是grpc短连接,调用grpc连接函数,设置超时等连接参数,然后调用某种服务service的接口,最后释放该grpc连接。当在不同的实现场景中,调用不同的册service接口时,会存在代码中多种重复的grpc连接,获取注册服务service接口的编写,对于连接参数如ip、port、超时等参数的修改,也不方便统一,对于多处的grpc连接对象的管理,也没办法进行操作。
32.为了便于解释,本技术具体实施方式由go语言实现进行介绍,但是需要知道的是,
并不仅仅go语言可实现,基于本技术提出的理念过程,任何编程语言均在理论上可以实现本技术提出的方法。其中,go语言是一种静态强类型、编译型语言,其语法与c相近,但功能上有:内存安全,gc(垃圾回收),结构形态及csp-style并发计算。作为一门只有十年历史的新语言,go语言的发展势头相当迅猛,在很多应用长,其已经代替了python,例如,处理储存在s3上的云端日志;在s3上的bucket和/或region之间移动tb级别大小的文件;匹配本地的数据库记录和s3上的文件,以保证文件处于同步状态。这些任务大多是一次性的,所以使用脚本语言操作就会比较合适,这些任务需要快速地编程,而代码用过一次一般就舍弃了,一般来说,这种任务的需求都比较新颖、比较专一,其代码很少需要复用。正因为go语言具有的拥有编译器很方便、开发速度快、更好的并行性、部署简单、风格一致和工具便捷的优点,其具有非常理想的构建并行gprc客户端同一管理方法的前景,本发明正是基于go语言特性进行方法步骤设置,实现一种对grpc连接客户端对象生命周期的统一管理的实现方法,管理的功能对客户端对象的创建、销毁、servicer接口调用。
33.图2示意性示出了根据本技术实施例的gprc客户端统一管理系统的系统结构图。如图2所示,本技术提供了一种gprc客户端统一管理系统,包括:存储单元,用于存储利用go语言预设的map存储,以及用于存储利用go语言预设的缓存规则;处理单元,用于在所述预设的map存储中,每创建一个指定service服务的grpc连接对象的同时,利用go语言预设的缓存规则对该grpc连接对象进行缓存;调取单元,用于在存在grpc连接对象调控管理需求时,直接调用缓存的与需求对应的grpc连接对象;调控单元,用于对调用的grpc连接对象进行调控管理。
34.图1示意性示出了根据本技术实施例的gprc客户端统一管理方法的流程示意图。如图1所示,在本技术一实施例中,提供了一种gprc客户端统一管理方法,包括以下步骤:
35.步骤s10:利用go语言预设一种map存储。
36.具体的,存在异步、并发的同时进行对指定的grpc服务的不同注册服务service的不同接口调用应用时,需要对各连接对象进行单一控制的前提下,还需要进行各连接对象协同控制,所以,不仅需要每个连接对象稳定控制,还需要一个统一的协同控制方法。首先,需要了解常规gprc客户端使用方法在应对这种问题可能存在的弊端包括:存在多处重复的grpc连接,获取注册服务service接口的编写困难;不便于对于各连接对象的连接参数如ip、port、超时等参数的统一修改;3)没法对多处的不同的grpc连接对象进行生命周期的管理,如:无法知道当前时间,存在多少个grpc连接客户端;每种连接客户端调用的哪类注册服务service;每种注册服务的连接峰值是多少个;一段时间内的平均连接次数性能统计数字,长时间的连接对象没有释放的统计等。本发明需要解决上述问题,首先需要创建协同控制的应用框架。
37.优选的,利用go语言并行性好的特性,进行对应的框架编写,优选的,利用go语言的map存储进行框架构建,map是一种通过key来获取value的一个数据结构,其底层存储方式为数组,在存储时key不能重复,当key重复时,value进行覆盖,我们通过key进行hash运算(可以简单理解为把key转化为一个整形数字)然后对数组的长度取余,得到key存储在数组的哪个下标位置,最后将key和value组装为一个结构体,放入数组下标处。使用go设计一种并发且安全的map存储类型,定义为safemapint64,其中,该map存储的key为int64类型,map的value为interface{}任意类型。在safemapint64编写过程中,首先利用go语言使用
map的键值对的类型,存储所有并发的grpc连接对象,然后根据预设并发连接阈值和并发的grpc连接对象冲突规则设置读、写锁功能,最后输出完成上述设定的并发map存储作为预设map存储。
38.在一个实施例中,完成safemapint64编写后,还需要为预设的map存储添加管理方法,这些管理办法用于后续该框架的补充和更新,以便于根据实际需求进行框架的变换,而不至于每次使用时均需要重新进行编写。这些管理方法包括添加方法、删除方法和读取方法。其中,在执行添加方法时,首先写锁功能为锁定状态,将需要添加的数据的key:value的键值对数据,保存到map结构中,然后对写锁进行解锁。与添加方法相反,是需要将key:value的键值对数据在map结构中删除。对于读取方法,需要从map结构中查询key的值value,然后在读锁解锁状态下,返回查找到的key的值value,和bool值;其中,该bool值表示当查找到key的值时返回true,否则为false。
39.步骤s20:在所述map存储中,每创建一个指定service服务的grpc连接对象的同时,利用go语言预设的缓存规则对所述连接对象进行缓存。
40.具体的,在构建好的map存储框架中,需要将该协同控制框架应用到具体算法中。本发明方案的理论依据为首先对连接对象进行识别以及缓存,然后基于缓存的连接对象进行调控,即实现的协同系统下的单个连接对象控制的可能,因为是基于缓存对象进行调控的,其包含的总体信息是完整且有效的。在框架应用过程中,首先需要创建一个全局的map存储类型safemapint64的变量connect_handler_map,作为grpc连接对象的生命周期的缓存对象,此对应了后续需要的缓存对象,以此形成二者的映射关系。然后,便需要根据预设的缓存规则对所述连接对象进行缓存,具体的,包括以下步骤:本发明的理想构思为每创建一个指定service服务的grpc连接对象,便将对应的连接对象缓存起来,然后基于该缓存对象进行后续的调控管理。因为是基于缓存对象进行管控的,所以获取了完整缓存对象信息,需要枚举所有的service类型,然后基于这些类型进行连接对象识别,从而定位到连接对象的信息,将这些信息进行缓存,以便于后续进行调控修改。所以,先根据grpc提供的不同的注册的service类型,定义一组枚举变量,表示注册的service类型id。例如,注册的service类型1的id为n,则注册的service类型2的id为n 1,以此类推,枚举所有的service类型id。然后定义一个struct结构类型connecthandler,该connecthandler用来定义一个grpc连接的对象,其具体的定义步骤为:首先缓存map中的key值,类型为int64。其通过雪花随机数生成算法生成,以保证其唯一性,唯一性才可以进行后续的映射规则。然后读取连接的service服务类型的id,使用上面定义的枚举类型,然后读取grpc服务连接对象、grpc的注册服务接口对象和连接上下文对象,然后grp连接销毁执行函数,使用bool值来表示grpc连接状态,true表示已连接,false表示未连接。基于上述定义的service类型id和struct结构类型connecthandler,进行缓存函数预设,该缓存函数定义为newconnecthandler,其入参为注册服务service的id,出参为创建的grpc连接对象connecthandler,其实现过程包括:
41.首先,使用雪花随机数生成算法生成唯一的service的id,上述已知,一个service服务映射一个对应的连接对象,所以基于上述的缓存函数,创建对应id的struct结构类型connecthandler对象。然后进行该connecthandler对象缓存,该connecthandler对象的key为id,value为connecthandler对象,最后,返回创建的connecthandler对象。
42.通过上述预设的缓存规则,可以在创建指定service服务的grpc连接对象的同时,
自动的将该连接对象进行缓存。后续便可以根据该缓存队形进行各种想要的调控管理。
43.步骤s30:存在连接对象调控管理需求时,直接调用缓存的对应连接对象进行调控管理。
44.具体的,本发明方案的核心目的是想要实现对grpc连接客户端对象生命周期的统一管理,管理的功能对客户端对象的创建、销毁、servicer接口调用。所以,进行连接对象缓存的主要目的便是利于后续的协同管理,这些调控管理需求包括连接对象的生命周期管理、统计管理、调试性输出管理和断开管理。
45.其中,连接对象的统计管理包括:获取连接对象的时钟节点、实时grpc连接客户端数量、每种客户端的注册服务service类型、每种注册服务的连接峰值、一段时间内的平均连接次数性能统计数字、长时间的连接没有释放的对象统计。连接对象的生命周期管理包括:基于统计管理获取的各项性能资料进行连接客户端统一管控;其中,所述统一管控的基本准则为各连接对象的连接service类型不发生冲突且总并行连接数量不大于预设并行连接数量阈值。
46.进行日志统计编写时,首先需要对连接对象进行断开,所以需要预设主动断开函数,该主动断开函数定义为disconnect,该函数不存在入参和出参,其仅用于主动的断开一个已连接的grpc对象,其断开的实现过程为:调用删除方法从缓存中删除key的连接对象,然后调用定义的grp连接销毁执行函数,进行数据销毁操作,调用grpc连接对象,断开grpc的连接,最后将bool值设置为false,表示连接断开。这样,通过disconnect函数,在主动断开grpc连接的同时,自动的将该连接对象进行缓存数据的删除。完成断开后,便可以开放对应连接对象的相关日志和统计功能,用于进行相关数据改写。
47.在一个实施例中,直接调用缓存的对应连接对象进行调控管理,包括:定义调用函数,该调用函数通过生成的唯一service类型id进行对应缓存中的grpc连接对象获取。将该函数定义为getconnecthandler,因为其通过指生成的唯一id,获取缓存中的grpc连接对象,便于grpc连接对象的重复使用。该函数的入参为key id,出参为grpc连接对象,以及用于表示获取是否成功的bool值。上述使用了go语言的interface{}的类型强制转换功能,因为map中value的类型,为interface{},可以用任何数据类型表示。这里我们使用interface{}的类型强制成预设定的grpc连接对象的类型connecthandler,并判断是否转换成功即可。
48.在本发明实施例中,通过以上安全缓存结构safemapint64,和grpc连接对象结构connecthandler的设计与方法的实现,我们可以很方便的实现对grpc连接客户端对象生命周期的统一管理的实现方法,管理的功能对客户端对象的创建、销毁、servicer接口调用。
49.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
50.本技术实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述的gprc客户端统一管理方法。
51.本技术实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的gprc客户端统一管理方法。
52.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构
图可以如图3所示。该计算机设备包括通过系统总线连接的处理器a01、网络接口a02、显示屏a04、输入装置a05和存储器(图中未示出)。其中,该计算机设备的处理器a01用于提供计算和控制能力。该计算机设备的存储器包括内存储器a03和非易失性存储介质a06。该非易失性存储介质a06存储有操作系统b01和计算机程序b02。该内存储器a03为非易失性存储介质a06中的操作系统b01和计算机程序b02的运行提供环境。该计算机设备的网络接口a02用于与外部的终端通过网络连接通信。该计算机程序被处理器a01执行时以实现一种gprc客户端统一管理方法。该计算机设备的显示屏a04可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置a05可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
53.本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
54.本技术还提供了一种计算机程序产品,所述计算机程序在被处理器执行时实现上述的gprc客户端统一管理方法。
55.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
56.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
57.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
58.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
59.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
60.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
61.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方
法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
62.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
63.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献