一种外部系统服务调用方法、装置、设备和介质与流程

文档序号:39192622发布日期:2024-08-27 19:00阅读:13来源:国知局
一种外部系统服务调用方法、装置、设备和介质与流程

本发明涉及计算机,尤其涉及一种外部系统服务调用方法、装置、设备和介质。


背景技术:

1、软件系统之间的服务调用问题已经成为系统之间互相访问的常见问题,随着软件技术的不断更新迭代,系统调用方式越来越丰富,调用写法越来越简便。对于之前分布式系统之间的调用,常采用以下是几种常见的实现方式:

2、1、基于http的restful api调用:

3、使用java的web框架(如spring mvc、spring boot、jax-rs等)构建restful api。

4、客户端可以使用httpurlconnection、apache httpclient、okhttp等库来发送http请求。

5、spring框架还提供了resttemplate类,它简化了与restful服务的交互。

6、2、基于rpc的调用:

7、使用java的rpc框架(如apache thrift、grpc、dubbo等)来定义服务接口和实现。

8、rpc框架负责序列化和反序列化数据、网络通信、服务发现等底层细节。

9、客户端通过代理类调用远程服务,就像调用本地方法一样。

10、3、基于消息的调用:

11、使用消息队列(如rabbitmq、kafka、activemq等)进行异步通信。java客户端可以使用对应的消息队列客户端库来发送和接收消息。

12、4、使用spring cloud进行服务调用:

13、spring cloud提供了一套完整的微服务解决方案,包括服务发现(eureka、consul)、负载均衡(ribbon、loadbalancer)、熔断降级(hystrix)等功能。

14、你可以使用@feignclient注解来创建声明式的rest客户端,它会自动处理http请求的发送和接收。spring cloud openfeign和spring cloud loadbalancer可以替代resttemplate进行更优雅的服务调用。

15、5、使用api网关:

16、api网关作为服务调用的统一入口,可以处理路由、认证、限流等任务。java中可以使用spring cloud gateway或zuul等作为api网关的实现。客户端通过api网关调用后端服务,而不需要知道具体的服务地址和端口。

17、总的来说,对于java开发者来说,spring cloud和spring boot等框架提供了丰富的功能和工具,可以大大简化分布式系统之间互相调用的实现过程。这些框架提供了良好的集成性和扩展性,使得开发者可以更加专注于业务逻辑的实现,而无需过多关注底层细节。

18、现有技术的不足:这些调用还是有它的弊端,他们很大程度上依赖java代码实现,每一次新增和修改服务之间的调用都需要修改代码,有的还必须重启系统来实现。


技术实现思路

1、为了为软件系统调用外部服务提供了一种配置方便、即配即用的方案,本发明提供了一种外部系统服务调用方法、装置、设备和介质。

2、第一方面,本发明提供了一种外部系统服务调用方法,所述方法包括:

3、根据待调用的外部服务的服务信息,所述服务信息包括请求方式、请求地址和请求参数,配置所述待调用的外部服务,并生成所述待调用的外部服务id,配置通道组和通道信息,所述通道信息中引用所述待配置的外部服务的id,根据所述待调用的外部服务的请求方式、请求地址、所述通道组编码和所述通道编码,生成所述待调用的外部服务的固定请求地址和请求接口信息;

4、当接收到调用方的服务调用请求,通过所述服务调用请求得到所述通道组编码和所述通道编码,并根据所述通道组编码和所述通道编码得到所述调用方待调用的外部服务的固定请求地址、请求接口信息和请求方式,根据所述请求方式调用所述待调用的外部服务后,将得到的响应信息返回给所述调用方。

5、基于上述技术方案,进一步地,所述根据待调用的外部服务的服务信息,所述服务信息包括请求方式、请求地址和请求参数,配置所述待调用的外部服务,并生成所述待调用的外部服务id,配置通道组和通道信息,所述通道信息中引用所述待配置的外部服务的id,根据所述待调用的外部服务的请求方式、请求地址、所述通道组编码和所述通道编码,生成所述待调用的外部服务的固定请求地址和请求接口信息,具体包括:

6、根据所述待调用的外部服务的服务信息,判断待调用的外部服务挂在服务集的通道服务上,

7、若有,找到通道服务,配置挂载所述待调用的外部服务。

8、没有,则新加服务集和通道服务进行挂载;

9、从新加服务集中确定所述待调用的外部服务的通道组编码和通道编码;

10、将所述待调用的外部服务的请求方式和原始地址请求地址信息按照camel远程调用的语法规则存储下来和所述待调用的外部服务的通道配置参数组成外部调用地址;

11、将所述通道组编码和所述通道编码写入预设请求地址中,得到所述固定请求地址和所述请求接口信息。

12、基于上述技术方案,进一步地,所述将所述待调用的外部服务的请求方式和请求地址写入json报文中的字段中,并将json报文中的字段和所述待调用的外部服务的通道配置参数组成外部调用地址,具体包括:

13、将所述待调用的外部服务的请求方式和请求地址组成json字符串后,通过unmarshal解码成为json格式报文,通过setheader组件将json格式报文设置为认证头字段;

14、将所述认证头字段和所述通道配置参数组成所述外部调用地址。

15、基于上述技术方案,进一步地,所述方法还包括:

16、所述调用方通过api接口或https请求访问发送服务调用请求。

17、基于上述技术方案,进一步地,所述当接收到调用方的服务调用请求,通过所述服务调用请求得到所述通道组编码和所述通道编码,具体包括:

18、获取所述调用方的服务调用请求,从所述服务调用请求中获取通道配置数据和通道流程信息;

19、将所述通道流程信息以json格式加载到camel组件的系统上下文缓存中,缓存信息格式是map<key,value>格式,key是所述通道编号,value是json格式化的所述通道流程信息。

20、基于上述技术方案,进一步地,所述根据所述通道组编码和所述通道编码得到所述调用方待调用的外部服务的固定请求地址、请求接口信息和请求方式,根据所述请求方式调用所述待调用的外部服务后,将得到的响应信息返回给所述调用方,具体包括:

21、根据所述系统上下文缓存中的所述通道编号key对应的所述通道流程信息的json数据进行路由命令名称组件,按命令名称组件在所述通道流程信息的先后顺序执行其组件对应的实现方法;

22、利用java的反射原理,将所述命令名称组件对应到具体名称的java类当中,再调用实现接口的执行方法进行执行,当执行完成后,将得到的响应信息返回给所述调用方。

23、基于上述技术方案,进一步地,所述请求方式包括rest_api类型、jdbc类型、web_service类型和bean类型。

24、第二方面,本发明还提供了一种外部系统服务调用装置,所述装置包括:

25、配置模块,用于根据待调用的外部服务的服务信息,所述服务信息包括请求方式、请求地址和请求参数,配置所述待调用的外部服务,并生成所述待调用的外部服务id,配置通道组和通道信息,所述通道信息中引用所述待配置的外部服务的id,根据所述通道组编码和所述通道编码,生成所述待调用的外部服务的固定请求地址和请求接口信息;

26、调用模块,用于当接收到调用方的服务调用请求,通过所述服务调用请求得到所述通道组编码和所述通道编码,并根据所述通道组编码和所述通道编码得到所述调用方待调用的外部服务的固定请求地址、请求接口信息和请求方式,根据所述请求方式调用所述待调用的外部服务后,将得到的响应信息返回给所述调用方。

27、基于上述技术方案,进一步地,配置模块,具体用于根据所述待调用的外部服务的服务信息,判断待调用的外部服务挂在服务集的通道服务上,

28、若有,找到通道服务,配置挂载所述待调用的外部服务。

29、没有,则新加服务集和通道服务进行挂载;

30、从新加服务集中确定所述待调用的外部服务的通道组编码和通道编码;

31、将所述待调用的外部服务的请求方式和原始地址请求地址信息按照camel远程调用的语法规则存储下来和所述待调用的外部服务的通道配置参数组成外部调用地址;

32、将所述通道组编码和所述通道编码写入预设请求地址中,得到所述固定请求地址和所述请求接口信息。

33、基于上述技术方案,进一步地,配置模块,具体用于:

34、将所述待调用的外部服务的请求方式和请求地址组成json字符串后,通过unmarshal解码成为json格式报文,通过setheader组件将json格式报文设置为认证头字段;

35、将所述认证头字段和所述通道配置参数组成所述外部调用地址。

36、基于上述技术方案,进一步地,配置模块,具体用于所述调用方通过api接口或https请求访问发送服务调用请求。

37、基于上述技术方案,进一步地,调用模块,具体用于获取所述调用方的服务调用请求,从所述服务调用请求中获取通道配置数据和通道流程信息;

38、将所述通道流程信息以json格式加载到camel组件的系统上下文缓存中,缓存信息格式是map<key,value>格式,key是所述通道编号,value是json格式化的所述通道流程信息。

39、基于上述技术方案,进一步地,调用模块,具体用于根据所述系统上下文缓存中的所述通道编号key对应的所述通道流程信息的json数据进行路由命令名称组件,按命令名称组件在所述通道流程信息的先后顺序执行其组件对应的实现方法;

40、利用java的反射原理,将所述命令名称组件对应到具体名称的java类当中,再调用实现接口的执行方法进行执行,当执行完成后,将得到的响应信息返回给所述调用方。

41、基于上述技术方案,进一步地,所述请求方式包括rest_api类型、jdbc类型、web_service类型和bean类型。

42、第三方面,本发明还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述技术方案中任一项所述的外部系统服务调用方法。

43、第四方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述技术方案中任一项所述的外部系统服务调用方法。

44、本发明提供的一种外部系统服务调用方法,包括根据待调用的外部服务的服务信息,所述服务信息包括请求方式、请求地址和请求参数,配置所述待调用的外部服务,并生成所述待调用的外部服务id,配置通道组和通道信息,所述通道信息中引用所述待配置的外部服务的id,根据所述通道组编码和所述通道编码,生成所述待调用的外部服务的固定请求地址和请求接口信息;当接收到调用方的服务调用请求,通过所述服务调用请求得到所述通道组编码和所述通道编码,并根据所述通道组编码和所述通道编码得到所述调用方待调用的外部服务的固定请求地址、请求接口信息和请求方式,根据所述请求方式调用所述待调用的外部服务后,将得到的响应信息返回给所述调用方。本发明为软件系统调用外部服务提供了一种配置方便、即配即用的方案。而基本不需要代码的修改,配置好发布就可以进行调用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1