1、基础项目过目介绍

1.1 数据库创建

1.2 项目模块分布

1.3 测试http接口调用

1.3.1 http接口调用配置类

//http接口调用配置类
@Configuration
public class RestTemplateConfig { @Bean
//@LoadBalanced //支持注册中心使用服务名调用,并支持负载均衡
//第一次测试先不加 @LoadBalanced 注解
public RestTemplate restTemplate(){
return new RestTemplate();
} }

1.3.2 请求方法

@Slf4j
@RestController
public class KgcMallOrderController { @Autowired
private RestTemplate restTemplate;
/**
* @author : zhukang
* @param : [java.lang.Integer, java.lang.Integer]
* @return : com.kgc.scda.bean.KgcMallOrder
* @description : 模拟用户下单
*/
@GetMapping("/createOrder")
public KgcMallOrder createOrder(@RequestParam Integer uid, @RequestParam Integer pid){
log.info("------ 用户编号:{},商品编号:{},模拟下单", uid, pid); // 查询用户详情
KgcMallUser mallUser = restTemplate.getForObject("http://localhost:9602/mallUser?uid=" + uid, KgcMallUser.class); // 查询商品详情
KgcMallProduct mallProduct = restTemplate.getForObject("http://localhost:9603/mallProduct?pid=" + pid, KgcMallProduct.class); // 封装订单实体,入库
KgcMallOrder mallOrder = KgcMallOrder.builder()
.userId(mallUser.getId())
.userName(mallUser.getUserName())
.prodId(mallProduct.getId())
.prodName(mallProduct.getProdName())
.totalPrice(mallProduct.getProdPrice())
.build(); // 调用订单业务接口,插入订单
kgcMallOrderService.saveMallOrder(mallOrder);
log.info("------ 用户编号:{},商品编号:{},下单成功", uid, pid); // 返回订单详情
return mallOrder;
} }

1.3.3 测试结果

2、Nacos 服务注册与发现

2.1 单机 启动Nacos

startup.cmd -m standalone

2.2 登录nacoe界面

用户名:nacos

密码:nacos

2.3 服务注册 nacos依赖

<!--   nacos 依赖  三个服务都添加   -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.4 服务注册 配置

application.yml

# 服务到nacos注册中心
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848

2.5 注解 @EnableDiscoveryClient

@EnableDiscoveryClient

2.6 测试http接口调用

2.6.0 查询服务注册情况

2.6.1 请求方法

//将站点请求换成,服务名请求(突然记得,负载均衡就是基于服务名请求作为基础的)
KgcMallUser mallUser = restTemplate.getForObject("http://kgcmall96-user/mallUser?uid=" + uid, KgcMallUser.class); KgcMallProduct mallProduct = restTemplate.getForObject("http://kgcmall96-prod/mallProduct?pid=" + pid, KgcMallProduct.class);

2.6.1 直接 测试结果

2.6.2 添加 @LoadBalanced 注解

2.6.3 再次测试

2.6.4 再次使用 http通过站点+端口 路径请求

请求失败,说明使用 @LoadBalanced 注解后,RestTemplate 不能再使用站点+端口的方式请求。

3、OpenFeign

3.1 依赖

<!--    openfeign 远程调用    -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>

3.2 注解

//基本用法跟feign 差不多

//主启动类上的注解:
@EnableFeignClients //接口上的注解: 方法调用不再 赘述
@FeignClient(value = "kgcmall96-prod")
@FeignClient(value = "kgcmall96-user")

3.3 测试

测试方法不在赘述;

3.4 OpenFeign远程调用日志

3.4.1 全局日志

3.4.1.1 指定日志级别
# 指定日志级别,要配置在 远程调用的客户端,配合openFeign全局日志使用
logging:
level:
com.kgc.scda.service: debug
3.4.1.2 全局日志配置
/**
* Created On : 24/11/2022.
* <p>
* Author : huayu
* <p>
* Description: OpenFeign 全局日志配置类
*/
@Configuration //全局日志配置,如果使用@FeignClient(value = "kgcmall96-user",configuration = OpenFeignLogConfig.class)的局部日志,全局配置就不可以使用
public class OpenFeignLogConfig { /**
* @author : huayu
* @date : 24/11/2022
* @param : []
* @return : feign.Logger.Level
* @description : openFeignLogLevel
*/
@Bean
public Logger.Level openFeignLogLevel(){
//适用于开发测试中,记录接口远程调用的全部日志
return Logger.Level.FULL; } }
3.4.3.3 测试

3.4.2 局部日志 注解方式

3.4.2.1 使用局部日志后,全局日志需要关闭

3.4.2.2 局部配置注解 (比较麻烦不推荐)
@FeignClient(value = "kgcmall96-user",configuration = OpenFeignLogConfig.class)
3.4.2.3 测试

3.4.3 局部日志 配置文件方式

3.4.3.1 application.yml配置
# 局部日志配置方式2:在核心配置文件中,指定局部远程调用服务的日志级别,不需要全局配置类的支持,实现@FiegnClient 只用局部日志解耦
# 顶格写
feign:
client:
config:
kgcmall96-prod:
loggerLevel: FULL
# kgcmall96-user:
# loggerLevel: FULL
3.4.3.2测试

SpringCloud Alibaba(一) - Nacos 服务注册与发现,OpenFeign远程调用的更多相关文章

  1. Spring Cloud Alibaba | Nacos服务注册与发现

    目录 Spring Cloud Alibaba | Nacos服务注册与发现 1. 服务提供者 1.1 pom.xml项目依赖 1.2 配置文件application.yml 1.3 启动类Produ ...

  2. Spring Cloud Alibaba(一) 如何使用nacos服务注册和发现

    Nacos介绍 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构 ...

  3. Alibaba Nacos 学习(三):Spring Cloud Nacos Discovery - FeignClient,Nacos 服务注册与发现

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  4. Spring Cloud Alibaba Nacos 服务注册与发现功能实现!

    Nacos 是 Spring Cloud Alibaba 中一个重要的组成部分,它提供了两个重要的功能:服务注册与发现和统一的配置中心功能. 服务注册与发现功能解决了微服务集群中,调用者和服务提供者连 ...

  5. 2021升级版微服务教程4—Nacos 服务注册和发现

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 默认文件1610014380163 教程全目录「含视 ...

  6. SpringCloud(二)- 服务注册与发现Eureka

    离上一篇微服务的基本概念已经过去了几个月,在写那篇博客之前,自己还并未真正的使用微服务架构,很多理解还存在概念上.后面换了公司,新公司既用了SpringCloud也用了Dubbo+Zookeeper, ...

  7. 实战二:nacos服务注册与发现,openfeign服务调用

    一,参照上一篇创建好微服务结构后,按业务需求编写各微服务逻辑 二,服务注册 1,安装nacos:下载,解压,运行startup.cmd 2,访问 http://localhost:8848/nacos ...

  8. Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现

    服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...

  9. nacos服务注册与发现原理解析

    前言:nacos 玩过微服务的想必不会陌生,它是阿里对于springcloud孵化出来的产品,用来完成服务之间的注册发现和配置中心,其核心作用我就不废话了 大致流程:每个服务都会有一个nacos cl ...

  10. 微服务架构 | *3.5 Nacos 服务注册与发现的源码分析

    目录 前言 1. 客户端注册进 Nacos 注册中心(客户端视角) 1.1 Spring Cloud 提供的规范标准 1.2 Nacos 的自动配置类 1.3 监听服务初始化事件 AbstractAu ...

随机推荐

  1. vue3 + typescript + element-plus 大文件上传

    大文件上传 思路:前端获取 file 文件对象使用 slice 方法截取切片,然后异步上传切片,再合并 技术栈 TypeScript Vue3 Element-plus Nodejs 客户端实现 创建 ...

  2. hbase的管理相关看法

    运维任务 regionserver添加/删除节点 master备份 1 添加新节点 复制hbase目录并进行配置文件修改(regionserver增加新节点)并保持配置文件在全集群一致,在新节点上启动 ...

  3. Go语言创建Web服务器

    因为Go语言自带高性能服务器,且支持http.TCP/UDP,这得益于内置了net/http包,这个包提供了HTTP客户端和服务端的实现, 所以用Go语言创建Web服务器,代码很简洁. 说明: 1.导 ...

  4. 接口测试中Groovy引擎的接入实现!

    接口测试中Groovy可以作为上下游接口参数化传递的前置脚本和后置脚本使用,无缝衔接Java语法,groovy的引入对于动态参数化的设置方便很多. 其中核心部分就是接入groovy的引擎,下面介绍gr ...

  5. jenkins集成cucumber-resport报告

    需要安装的jenkins插件-Cucumber Reports jenkins版本:2.273 jenkins插件下载地址:点击下载 下载插件后通过jenkins插件管理上传已下载好的插件即可 等待j ...

  6. pyenv: no such command `virtualenv'

    当执行 pyenv virtualenv 3.6.10 env_3.6.10 命令创建新的python环境时提示 pyenv: no such command `virtualenv' larryma ...

  7. 超级干货!Air780E的串口通信分享

    ​ 猛然发现,Air780E的串口通信还没分享,难怪已经有小伙伴提出了要求! 那我们来讲解低功耗4G模组Air780E的串口通信的基本用法,小伙伴们,学起来吧! 一.硬件准备  ​ 780E开发板一套 ...

  8. php 异步并行

    如果你有一批数据需要调用远程接口处理,而远程接口处理时间很长,比如需要1秒左右,那10条数据就是10秒,你的程序就要10S才能结束,而这样的话一旦接口提供方有点问题,就需要20秒 30秒甚至更久,这样 ...

  9. Codeforces Round 895 (Div. 3)

    B. The Corridor or There and Back Again 题解 考虑二分答案 \(check\)时判断是否\(s_i \leq 2*(k - d_i),k\geq d_i\) c ...

  10. Qt音视频开发47-通用视频控件

    一.前言 自从视频监控系统的内核不断增加,从最初的vlc到ffmpeg然后到mpv,后面还陆续增加了海康sdk等,每次增加一个内核,整个视频监控系统就有三五个代码文件需要修改,而且大部分是重复的代码, ...