微服务实现接口对接(两个微服务之间怎么调用接口)

网友投稿 1049 2023-01-16


本篇文章给大家谈谈微服务实现接口对接,以及两个微服务之间怎么调用接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享微服务实现接口对接的知识,其中也会对两个微服务之间怎么调用接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

微服务之间相互调用方法

微服务之间相互调用常用到的是
HttpUrlConnection 或者经典的网络访问框架 HttpClient
只是在 Spring 项目中,使用 RestTemplate 显然更方便一些
RestTemplate

RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTful 操作,这些操作在 RestTemplate 中都得到了实现。
用法

第一个参数是 url ,url 中有一个占位符 {1} ,如果有多个占位符分别用 {2} 、 {3} … 去表示,第二个参数是接口返回的数据类型,最后是一个可变长度的参数,用来给占位符填值。
另两种参数格式

方法使用与上述类似,唯一不同之处是: getForObject 的返回值就是服务提供者返回的数据,使用 getForObject 无法获取到响应头。

postForEntity 方法第一个参数是请求地址,第二个参数 map 对象中存放着请求参数 key/value,第三个参数则是返回的数据类型

postForObject 和 postForEntity 基本一致,就是返回类型不同而已,这里不再赘述。

提供方

调用方

提供方

调用方

应用微服务准入要求

(1)云端MES和边缘端MES各模块在设计时需遵循内部高内聚、相互间低耦合的原则。
(2)模块间应能进行服务直接调用,MES系统各模块通常具备一定的业务相关性,例如生产计划获取的输出需要作为生产计划排序和生产计划管理模块的输入,MES系统架构需要保证模块间正常进行数据交互。
(3)架构中云端-边缘之间、边缘端MES与终端设备间,以及与其他信息系统(如ERP、WMS、PLM等)能通过接口实现服务双向调用,MES系统需要以较快的速度完成接口模块的开发、测试、部署工作,同时确保系统其它模块的稳定性。
(4)第三方系统(设备)交互,可通过独立模块负责接口对接,进行数据的预处理(数据清洗、格式转换、汇聚等),完成预处理后提交MES内部业务处理模块进一步处理,例如MES系统从ERP系统获得生产计划,可设置独立模块或服务获取生产计划,并对生产计划数据标准化处理以符合MES系统内部规范,完成处理后再将计划数据传递给生产计划管理、生产计划排序等模块进一步处理,实现MES主要模块的标准化功能。通过定制化与ERP等系统对接的模块即可实现对不同ERP系统接口的对接,同时可将其他模块或服务的影响降到最低。
(5)外部通信模块具备支持多协议通信的能力,能接收不同的接口数据并进行标准化处理供内部模块使用。
(6)微服务的MES系统架构能使系统支持模块的可配置化,能根据实际需求调整模块的组合,且不影响系统的可用性和稳定性。

第4篇:微服务之间的调用-feign

外部的应用(网站/app) 通过网关gateway调用微服务, 那么微服务之间又该如何调用呢? 一般来说是用 Spring 提供的 RestTemplate进行调用. 类似于 172.10.10.10/api/xx-service/hello 这种方式. 但显然这种方式非常不好, 原因是:

所以微服务实现接口对接我们必须把组件内部调用再封装一层接口, 通过调用这个接口, 不用管内部到底有几个微服务实例, 到底有几个实例可用. 这就是feign的作用.

在术语中, 这样专门用于微服务之间调用的接口叫做消费者接口. 微服务实现接口对接我个人不是很喜欢用这样的词, 众所周知软件行业喜欢造新词, 就记住这样的接口是用feign 实现, 并且用于微服务之间调用, 就可以了.

工程位于: https://gitee.com/xiaofeipapa/spring-cloud-demo
文件夹: feign-demo

在类里加上一个新方法, 表示是微服务之间的调用方法:

如图:

里面有用feign 实现的一个接口:

为什么要新建一个工程呢? 在实际的业务开发中, 如果A服务需要调用C服务, 为了解耦/不增加太多加载包/方便沟通 等种种原因, 通常我们会在中间加一个调用层, 作为一个独立的jar包而加载, 用图表示如下:

为什么是CA呢? 因为内部服务是C提供的, 当然C服务的团队成员最熟, 所以微服务实现接口对接他们来维护接口更高效方便. (能者多劳大概就是这个意思吧)

在idea 的组件依赖间配好, 让userApi 依赖 orderApiClient. 这涉及idea的使用, 不再赘述.

在pom里加入:

如下:

如果 OrderFeignClient 类放在userApi工程, 那么它会直接被发现. 而现在是在一个独立的工程, 所以要加上扫描路径 backPackages = {xxx }

在controller里增加:

现在, 启动order api / user api / gateway 各个工程, 在浏览器敲入: http://localhost:10000/api/user/test_feign

微服务实现接口对接你应该可以看到这样的结果:
这表示feign 调用已经成功了.

feign的一些配置信息在网上都可以找得到, 不再赘述. 而一些高级知识, 比如负载均衡, 和hystrix的融合, 会在以后再写.

openfeign实现微服务间的调用

1. 父项目下新建两个子模块微服务实现接口对接,一个provider,一个consumer。

先贴上父pom微服务实现接口对接的配置微服务实现接口对接

2. provider 服务提供方的配置:

提供一个普通的controller接口即可,不需要加openfeign依赖、不需要在启动类加feign相关注解。

贴一下yml配置:关注server.port和spring.application.name。
3. consumer 服务调用方配置:

1)pom加依赖:

2)启动类加 @EnableFeignClients 注解:

3)添加接口,标注@FeignClient()注解。

注意三点:a. 并在注解中指明属性value="服务提供方应用名称"

                   b. 在 调用方接口上配置请求的url 要与 服务提供方接口的url一致。

                   c. 传参时 使用@RequestParam注解,不要用@Param注解,会报错。

4)服务调用方 完善controller接口:

4. 启动 服务提供方 和 服务调用方的项目。访问 服务调用方的接口试试:

调用成功。 关于微服务实现接口对接和两个微服务之间怎么调用接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 微服务实现接口对接的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于两个微服务之间怎么调用接口、微服务实现接口对接的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java排序算法之堆排思想及代码实现
下一篇:Java二叉树的遍历思想及核心代码实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~