一种基于显隐参数注册的远程服务接口调用方法技术

技术编号:35638284 阅读:17 留言:0更新日期:2022-11-19 16:28
本发明专利技术提供了一种基于显隐参数注册的远程服务接口调用方法,本发明专利技术提供一种基于注册的RPC(远程过程调用)服务调用方法,实现调用时最小化传参,返回数据格式化处理为标准数据帧。服务生产者在注册中心注册接口名称、类型、描述信息,并声明参数的显隐类型,其中隐式参数需填写默认值;服务消费者通过检索注册中心注册信息,翻译参数并通过一般RPC框架直接使用反射机制远程调用对应方法。其中,引入隐式默认参数可以提高服务生产者接口的使用灵活度,服务生产者可以适当设计隐式参数复用接口实现不同种类的调用。实现不同种类的调用。实现不同种类的调用。

【技术实现步骤摘要】
一种基于显隐参数注册的远程服务接口调用方法


[0001]本专利技术涉及一种基于显隐参数注册的远程服务接口调用方法。

技术介绍

[0002]远程过程调用(Remote Procedure Call,RPC)技术被广泛运用在多机系统的通信当中。无论是大规模分布式集群或者是普通多机业务系统,RPC技术一般在其中承担系统协调与数据交换的责任,而RPC性能和可靠性的高低直接决定了系统性能和可用性的好坏。RPC的本质是在客户端要求远程服务端运行某项服务并获取其结果的过程。它是一种进程间的通信机制,并未规定具体的实现方式、平台和语言。一般在Java Web开发中使用Dubbo框架实现远程过程调用,相对来说,Dubbo调用需要在代码中直接进行方法名的指定和调用,对服务生产者难以有约束,同时要将生产者代码嵌入到消费者,容易出现版本不一致的情况。这种依赖产生了工程代码、部署维护等方面的耦合与制约,从而促使架构师们按业务领域设计并搭建一系列的服务中心。
[0003]而且Dubbo调用需要进行序列化和反序列化,序列化机制负责将数据从对象的状态信息转换成可传输的形式,反序列化机制则是逆向过程,通过序列化和反序列化机制,不同主机上的不同进程得以实现数据交换,它们是RPC的重要一环。但是序列化过程遇到复杂对象会导致效率问题,同时又加剧了生产者到消费者的代码侵入。多软件数据调用和交互希望这些独立部署的服务将各自领域内核心的数据源、复杂的业务逻辑和多变的上层应用之间进行了有效的隔离,提供高度内聚且具有标准语义的远程服务接口。
专利技术内容
[0004]专利技术目的:在局域网场景下、多配置项开发环境中,各个服务存在相互调用,不同开发人员相互远程过程调用(Remote Procedure Call,RPC)存在需要引入接口依赖、参数描述不清楚或者类型错误、对象序列化的问题。为了解决多参数远程调用,返回数据格式无规则的问题,有效支持服务直接使用远程过程调用,削弱程序之间的依赖,同时清楚描述接口的显式和隐式参数,本专利技术提供一种基于显隐参数注册的远程服务接口调用方法。
[0005]在运用该基于显隐参数注册的远程服务接口调用之前,需要搭建Dubbo框架,不同配置项之间均需引用Dubbo依赖,其中,搭建Dubbo使用的通讯中间件为Zookeeper,建议使用3台及以上且为奇数台的集群,以保证服务注册、调用稳定。实现本专利技术目的的技术解决方案为:本专利技术提供一种基于显隐参数注册的远程服务接口调用方法,包括以下步骤:
[0006]步骤1:针对远程调用服务,通过注册平台注册服务信息,将服务生产者接口对象处理为可用元信息描述的数据对象,仅需通过注册的唯一标识提供高度内聚且具有标准语义的远程服务接口调用,通过注册平台将调用参数处理标记为显参数和隐参数,实现最小化传参的服务消费者与服务提供者之间透明且高效的点对点调用。对于远程调用的生产者和消费者,引用Dubbo框架实现远程过程调用通路,通过Zookeeper注册中心实现Dubbo框架本身的通讯和注册;
[0007]步骤2:针对行列式形式的数据帧远程调用,数据帧包括元信息段和数据段,元信息段描述数据帧中包括的字段属性,数据段为字段键值对列表。针对服务生产者(指提供远程调用服务的接口),实现反射调用路由父类接口类并按格式封装路由规定的传参格式和接口数据交换格式;
[0008]步骤3:根据步骤2中封装的反射调用路由,生产者继承反射调用路由父类接口并基于业务需求实现希望发布的服务,返回数据格式并按步骤2要求规范化数据交换格式,即标准JSONObject格式的数据帧;
[0009]步骤4:针对服务消费者(指远程调用服务生产者的其他程序),引用反射调用路由父类接口文件;
[0010]步骤5:针对服务消费者,引用反射调用路由子类接口文件;
[0011]步骤6:服务生产者在注册中心添加服务接口信息和调用参数的详细描述,并特殊声明每一个接口调用参数是显式还是隐式,填写参数类型信息。其中显式参数指暴露给外部服务调用需要传入的参数,仅需注册该参数的名称、字段类型等元信息;隐式参数指调用服务必须使用,但是外部调用无需处理,自动带入的默认参数,除注册该参数的名称、字段类型等元信息外必须注册该参数的默认值。同时注册中心自动生成服务的唯一标识ID;
[0012]步骤7:消费者使用服务时,仅需传入服务唯一标识ID、参数信息,统一调用父类接口的唯一公开接口;
[0013]步骤8:根据业务需求组织参数远程调用服务。
[0014]步骤1中,所述引用Dubbo框架,具体指利用开源远程过程调用RPC框架进行最终服务调用,使用开源的Dubbo框架;如果没有特殊声明,其中服务生产者指服务接口的实现方,服务消费者指远程使用服务接口的调用方。
[0015]步骤2包括:构建服务调用父类接口类P_INTERFACE,P_INTERFACE仅有唯一的公开方法getData(String method,String params),其中字符串method为调用的具体方法名,params参数内包含了需要传入的所有参数键值对;针对服务生产者,每个服务生产者PRODUCER[1

n]均继承父类接口类构建子类接口类S_INTERFACE[1

n]并实现该类S_INTERFACE_IMPL[1

n],其中除了getData方法为public关键词修饰的公开接口、且返回数据格式为标准JSONObject格式以外,所有其他子类方法均由private关键词修饰,并且在公开方法getData(String method,String params)中,实现基于method参数、params参数的反射调用路由。
[0016]步骤2中,所述路由规定的传参格式和接口数据交换格式为标准JSONObject格式的数据帧,格式固定为包括condition和filter两个字段的JSON数组,并且父类接口类有且仅有一个公开接口;其中,condition为隐式参数,外部服务调用时无需处理,自动带入的默认参数,除注册该参数的名称、字段类型等元信息外必须注册该参数的默认值;filter为显式参数,外部服务调用时必须依据注册信息传参;condition参数注册时直接填入该condition参数的value值,filter参数注册时仅描述该filter参数具体的填法,但是不设置默认值。
[0017]步骤3中,所述规范化数据交换格式基于业务或前台显示需求进行组织,远程调用返回的标准JSONObject格式数据帧包括元信息段和数据段,元信息段描述数据帧中包括的字段属性,数据段为字段键值对列表,要求以标准JSONObject格式传递。
[0018]步骤3、步骤4、步骤5中,路由父类接口类与子类接口类在生产者和消费者中相同。
[0019]步骤5包括:服务消费者引用所有服务生产者的子类接口类S_INTERFACE[1

n];且引用的所有服务生产者和消费者的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于显隐参数注册的远程服务接口调用方法,其特征在于,包括以下步骤:步骤1:针对远程调用服务,通过注册平台注册服务信息,将服务生产者接口对象处理为可用元信息描述的数据对象,仅需通过注册的唯一标识提供高度内聚且具有标准语义的远程服务接口调用,通过注册平台将调用参数处理标记为显参数和隐参数;对于远程调用的生产者和消费者,引用Dubbo框架实现远程过程调用通路,通过Zookeeper注册中心实现Dubbo框架本身的通讯和注册;步骤2:针对行列式形式的数据帧远程调用,数据帧包括元信息段和数据段,元信息段描述数据帧中包括的字段属性,数据段为字段键值对列表;针对服务生产者,实现反射调用路由父类接口类并按格式封装路由规定的传参格式和接口数据交换格式;步骤3:根据步骤2中封装的反射调用路由,生产者继承反射调用路由父类接口并基于业务需求实现希望发布的服务,返回数据格式并按步骤2要求规范化数据交换格式;步骤4:针对服务消费者,引用反射调用路由父类接口文件;步骤5:针对服务消费者,引用反射调用路由子类接口文件;步骤6:服务生产者在注册中心添加服务接口信息和调用参数的详细描述,并特殊声明每一个接口调用参数是显式还是隐式,填写参数类型信息;其中显式参数指暴露给外部服务调用需要传入的参数,仅需注册该参数的名称、字段类型等元信息;隐式参数指调用服务必须使用,但是外部调用无需处理,自动带入的默认参数,除注册参数的名称、字段类型外必须注册参数的默认值;同时注册中心自动生成服务的唯一标识ID;步骤7:消费者使用服务时,仅需传入服务唯一标识ID、参数信息,统一调用父类接口的唯一公开接口;步骤8:根据业务需求组织参数远程调用服务。2.根据权利要求1所述的方法,其特征在于,步骤1中,所述引用Dubbo框架,具体指利用开源远程过程调用RPC框架进行最终服务调用,使用开源的Dubbo框架;如果没有特殊声明,其中服务生产者指服务接口的实现方,服务消费者指远程使用服务接口的调用方。3.根据权利要求2所述的方法,其特征在于,步骤2包括:构建服务调用父类接口类P_INTERFACE,P_INTERFACE仅有唯一的公开方法getData(String method,String params),其中字符串method为调用的具体方法名,params参数内包含了需要传入的所有参数键值对;针对服务生产者,每个服务生产者PRODUCER[1

n]均继承父类接口类构建子类接口类S_INTERFACE[1

n]并实现该类S_INTERFACE_IMPL[1

n],其中除了getData方法为...

【专利技术属性】
技术研发人员:王冬陈鹏王妍妍朱翔鹰周迅钊
申请(专利权)人:中电莱斯信息系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1