当前位置:网站首页>nacos实现基本的服务跨进程调用和使用OpenFeign进行服务跨进程调用
nacos实现基本的服务跨进程调用和使用OpenFeign进行服务跨进程调用
2022-07-29 15:12:00 【great-sun】
一.基本的服务跨进程调用
1.建立a应用,pom文件如下
<!--注册服务-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.application.properties
#a服务的端口号
server.port= 8070
#名称
spring.application.name=nacos-app-a
#服务注册,你自己的nacos服务器地址
spring.cloud.nacos.discovery.server-addr=192.168.33.xx:8848
3.启动项目,即可查看服务注册成功
4.新建项目b,pom.xml 文件如下,与eureka注册器不同的是需要加入loadbalancer包
<!-- 注册服务-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 加入具有负载均衡的包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
5.启动类添加@EnableDiscoveryClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
6. 注册RestTemplate,代码如下
Configuration
public class RestTemplateConfig {
@Bean
//nacos里面要到导入这个包
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
- 调用a服务对应接口
@RestController
public class BController {
@Resource
private RestTemplate restTemplate;
//a服务的接口
@GetMapping("/test")
public String test(@RequestParam(value = "name", defaultValue = "这是默认值") String name) {
String ret=restTemplate.getForObject("http://nacos-app-a/echo?name="+name,String.class);
return ret;
}
}
二.使用OpenFeign进行服务跨进程调用
1.什么是Feign
Feign是一个声明式的Web服务客户端,让编写Web服务客户端变的更加容易。只需要创建一个接口并添加注解即可。
2.Feign能干什么
Feign可以使编写Java Http客户端更容易。之前使用Ribbon+RestTemplate时,形成了一套模板化的调用方法。但是在实际的开发过程中,由于对服务依赖的调用可能不止一处,往往一个接口会被多个地方调用,所以通常会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步封装,使我们只需要创建一个接口并使用注解的方式配置它,就可以完成服务提供方的接口绑定,简化了使用Ribbon时,自动分钟服务调用客户端的开发量。Feign集成了Ribbon
3.Feign和OpenFeign的区别
Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解定义接口,调用接口,就可以调用服务注册中心的服务。
OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并且 低耦合调用其他服务。
使用
1.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.客户端主启动类添加注解
@EnableFeignClients
3.书写接口
@FeignClient("nacos-app-a")
public interface AClient {
@GetMapping("echo")
String test (@RequestParam("name") String name);
}
4.跨进程调用服务
@RestController
public class CController {
@Resource
private AClient aClient;
@GetMapping("/test")
public String test(@RequestParam(value = "name", defaultValue = "这是默认值") String name) {
String ret=aClient.test(name);
return ret;
}
}
日志打印
Feign 提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解 Feign 中 Http 请求的细节。说白了就是对Feign接口的调用情况进行监控和输出
日志级别:
NONE:默认的,不显示任何日志;
BASIC:仅记录请求方法、URL、响应状态码及执行时间;
HEADERS:除了 BASIC 中定义的信息之外,还有请求和响应的头信息;
FULL:除了 HEADERS 中定义的信息之外,还有请求和响应的正文及元数据。
日志配置类:
@Configuration
public class FeignConfig
{
@Bean
Logger.Level feignLoggerLevel()
{
return Logger.Level.FULL;
}
}
YML文件里需要开启日志的Feign客户端
logging:
level:
# feign日志以什么级别监控哪个接口
com.beimao: debug
边栏推荐
- 网络知识大集合(最详细)与网络通信过程
- 深圳见!云原生加速应用构建专场:来看云原生 FinOps、SRE、高性能计算场景最佳实践
- [yolov7 series two] positive and negative sample allocation strategy
- Unable to open the source file in qt vs2015 "QtWidgets" solution
- 你真的了解Redis的持久化机制吗?
- Google Earth Engine APP——一键实现底图添加和时序的添加和正反序的结合
- SkiaSharp 之 WPF 自绘 弹动小球(案例版)
- LeetCode·每日一题·593.有效的正方形·数学
- 蚂蚁三面滑铁卢!遭分布式截胡,靠这些笔记潜修 30 天,挺进京东
- ES6 from entry to master # 11: the Map data type
猜你喜欢
![[yolov7 series two] positive and negative sample allocation strategy](/img/8d/5f04d33b957f3ce58243ea807c1fe2.png)
[yolov7 series two] positive and negative sample allocation strategy

BGP federation experiment

自动化配置SSH免密登录和取消SSH免密配置脚本

数据库管控平台-awr报告采集(mysql/oracle)

网络知识大集合(最详细)与网络通信过程

Instant Messaging - New Software that Changes Social and Work Status

【C语言刷题】Leetcode268丢失的数字

Generate Class bytecode files with Asm

JUL 学习

Altair SimSolid complex assembly meshless rapid structure simulation online seminars
随机推荐
JUL 学习
国内EDA领导者芯和半导体完成最新一轮超亿元融资
QT连接Mysql数据库(详细成功版)
双线机房、多线机房、BGP机房的关系和对比
深圳见!云原生加速应用构建专场:来看云原生 FinOps、SRE、高性能计算场景最佳实践
【7.22-7.29】写作社区精彩技术博文回顾
LeetCode·3.无重复字符的最长子串·滑动窗口
Generate Class bytecode files with Asm
Learning Policies for Adaptive Tracking with Deep Feature Cascades全文翻译
高通发布全新屏下指纹传感器:识别区域增大77%,识别速度提升50%
LeetCode·621.任务调度器·构造法
浏览器线程
观光公交题解
【微信小程序】组件使用及属性参考
3C数码行业供应商管理方案——与供应商结为“成长共同体”
小学生学程序---百变服装
教程篇(7.0) 07. 诊断和故障排除 * FortiClient EMS * Fortinet 网络安全专家 NSE 5
数据分析的重要性
风格迁移篇----艺术风格转换的内容与风格解构
数据分析(二)