System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及云计算,具体地涉及一种泛化调用方法、装置、设备和介质。
技术介绍
1、远程过程调用是现在市面上流行的机制,该机制是服务调用方通过注册中心注册信息,获取服务提供方的相关信息。服务调用方通过该相关信息调用服务提供者。
2、其中,频繁访问注册中心以获取服务提供方的相关信息会造成内存溢出,因此,会将获取到的服务提供方的相关信息缓存至本地实现多次调用。
3、但是,如将上述方法应用在多套环境对应多个注册中心的场景下,将存在调用错误,无法正确实现远程过程调用。
技术实现思路
1、鉴于上述问题,本公开提供了提高不同环境中服务调用能力的泛化调用方法、装置、设备、介质和程序产品。
2、根据本公开的第一个方面,提供了一种泛化调用方法,所述方法应用于服务消费方的设备中,所述方法包括:在第一次执行针对第一服务的泛化调用时,获取来自注册中心的服务提供方上送参数;基于所述服务提供方上送参数缓存至本地,得到第一缓存属性;以及将所述注册中心写入所述第一缓存属性中,得到第二缓存属性。
3、根据本公开的实施例,其中,在所述将所述注册中心写入所述第一缓存属性中,得到第二缓存属性后,还包括:在第n次执行针对所述第一服务的泛化调用时,查询本地缓存中的所述第二缓存属性,n为大于1的正整数;以及在查询所述第二缓存属性成功的情况下,基于所述第二缓存属性泛化调用服务提供方的所述第一服务。
4、根据本公开的实施例,其中,所述基于所述第二缓存属性泛化调用服务提供方的所
5、根据本公开的实施例,其中,在所述查询本地缓存中的所述第二缓存属性后,还包括:在查询所述第二缓存属性失败的情况下,获取来自所述注册中心的服务提供方上送参数;基于所述服务提供方上送参数缓存至本地,得到所述第一缓存属性;以及将所述注册中心写入所述第一缓存属性中,得到所述第二缓存属性。
6、根据本公开的实施例,其中,所述服务提供方上送参数包括:服务名、方法名、版本号以及上送报文,所述第一缓存属性包括:分组名、接口名以及版本号,所述基于所述服务提供方上送参数缓存至本地,得到第一缓存属性,包括:基于所述服务名、所述方法名以及所述版本号,生成所述分组名;以及基于所述服务名、所述方法名以及所述版本号,组合形成接口名。
7、根据本公开的实施例,其中,所述第二缓存属性包括:分组名、接口名、版本号以及注册中心,所述将所述注册中心写入所述第一缓存属性中,得到第二缓存属性,包括:采用重写方式,将所述注册中心的地址写入所述第一缓存属性中,得到第二缓存属性。
8、根据本公开的实施例,其中,所述基于所述第二缓存属性泛化调用所述目标环境的第一服务,包括:基于所述第二缓存属性直接调用所述第一服务的服务提供方;以及接收来自所述注册中心的所述第一服务的返回数据。
9、本公开的第二方面提供了一种泛化调用装置,所述装置应用于服务消费方的设备中,所述装置包括:参数获取模块,用于在第一次执行针对第一服务的泛化调用时,获取来自注册中心的服务提供方上送参数;缓存模块,用于基于所述服务提供方上送参数缓存至本地,得到第一缓存属性;以及重新写入模块,用于将所述注册中心写入所述第一缓存属性中,得到第二缓存属性。
10、根据本公开的实施例,其中,所述装置还包括:缓存属性查询模块和服务调用模块,所述缓存属性查询模块,用于在第n次执行针对所述第一服务的泛化调用时,查询本地缓存中的所述第二缓存属性,n为大于1的正整数;以及所述服务调用模块,用于在查询所述第二缓存属性成功的情况下,基于所述第二缓存属性泛化调用服务提供方的所述第一服务。
11、根据本公开的实施例,其中,所述服务调用模块,用于基于所述第二缓存属性中的注册中心定位目标环境;以及基于所述第二缓存属性泛化调用所述目标环境的第一服务。
12、根据本公开的实施例,其中,所述装置还包括:重新缓存模块,所述重新缓存模块,用于在查询所述第二缓存属性失败的情况下,获取来自所述注册中心的服务提供方上送参数;基于所述服务提供方上送参数缓存至本地,得到所述第一缓存属性;以及将所述注册中心写入所述第一缓存属性中,得到所述第二缓存属性。
13、根据本公开的实施例,其中,所述服务提供方上送参数包括:服务名、方法名、版本号以及上送报文,所述第一缓存属性包括:分组名、接口名以及版本号,所述缓存模块,还用于基于所述服务名、所述方法名以及所述版本号,生成所述分组名;以及基于所述服务名、所述方法名以及所述版本号,组合形成接口名。
14、根据本公开的实施例,其中,所述第二缓存属性包括:分组名、接口名、版本号以及注册中心,所述重新写入模块,还用于采用重写方式,将所述注册中心的地址写入所述第一缓存属性中,得到第二缓存属性。
15、根据本公开的实施例,其中,所述服务调用模块,还用于基于所述第二缓存属性直接调用所述第一服务的服务提供方;以及接收来自所述注册中心的所述第一服务的返回数据。
16、本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述泛化调用方法。
17、本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述泛化调用方法。
18、本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述泛化调用方法。
19、在本公开的实施例中,为了解决多环境场景下,传统泛化调用无法通过本地缓存的调用信息正确调用服务的技术问题。在本公开的实施例中,在首次通过注册中心调用服务的情况下,将相应的用于调用的上送参数缓存至本地,形成第一缓存属性,并进一步采用重写的手段将该第一缓存属性中添加注册中心的信息,得到第二缓存属性。本公开的实施例至少可以达成以下有益效果:1、通过将上送参数缓存至本地而非直接在内存中操作,避免频繁调用时内存溢出;2、在后续通过本地缓存调用相同服务的情况下,能够通过该第二缓存属性正确实现服务的调用,避免在多套环境下产生调用错误,实现注册中心频繁访问不出错。
本文档来自技高网...【技术保护点】
1.一种泛化调用方法,所述方法应用于服务消费方的设备中,所述方法包括:
2.根据权利要求1所述的方法,其中,在所述将所述注册中心写入所述第一缓存属性中,得到第二缓存属性后,还包括:
3.根据权利要求2所述的方法,其中,所述基于所述第二缓存属性泛化调用服务提供方的所述第一服务,包括:
4.根据权利要求2所述的方法,其中,在所述查询本地缓存中的所述第二缓存属性后,还包括:
5.根据权利要求1所述的方法,其中,所述服务提供方上送参数包括:服务名、方法名、版本号以及上送报文,所述第一缓存属性包括:分组名、接口名以及版本号,
6.根据权利要求5所述的方法,其中,所述第二缓存属性包括:分组名、接口名、版本号以及注册中心,
7.根据权利要求3所述的方法,其中,所述基于所述第二缓存属性泛化调用所述目标环境的第一服务,包括:
8.一种泛化调用装置,所述装置应用于服务消费方的设备中,所述装置包括:
9.一种电子设备,包括:
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行
11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~7中任一项所述的方法。
...【技术特征摘要】
1.一种泛化调用方法,所述方法应用于服务消费方的设备中,所述方法包括:
2.根据权利要求1所述的方法,其中,在所述将所述注册中心写入所述第一缓存属性中,得到第二缓存属性后,还包括:
3.根据权利要求2所述的方法,其中,所述基于所述第二缓存属性泛化调用服务提供方的所述第一服务,包括:
4.根据权利要求2所述的方法,其中,在所述查询本地缓存中的所述第二缓存属性后,还包括:
5.根据权利要求1所述的方法,其中,所述服务提供方上送参数包括:服务名、方法名、版本号以及上送报文,所述第一缓存属性包括:分组名、接口名以及版本号,
6....
【专利技术属性】
技术研发人员:陈瑶,胡凯乐,张宏根,刘金石,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。