Nacos配置管理:
作用:将配置集中管理
实现配置的热更新(在配置变更时,及时通知微服务)
可以设置共享配置
实现步骤:
Ⅰ:在nacos的配置文件表单中填写配置信息
Data ID :(配置文件的id) 服务名称-环境名.后缀名
例:userservice-dev.yaml
Ⅱ:在服务的pom文件中引入nacos-config的客户端依赖
————此时配置完成后无法进行热更新(即配置变更时,无法及时通知微服务)————
Ⅴ:配置热更新
方法一:在@Value注入的变量所在类上添加注解@RefreshScope
方法二:编写一个配置类,使用@ConfigurationProperties注解代替@Value注解读取nacos中的配置文件
配置共享:
原理: 微服务启动时会从nacos读取多个配置文件 { 服务名-profile.yaml、服务名.yaml },无论环境(profile)如何变化,服务名.yaml文件一定会加载,因此可以将多环境共享配置写入这个文件中。
优先级:nacos中的 服务名-环境名.yaml > nacos中的 服务名.yaml > 本地配置application.yml
补充:
项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。
Feign远程调用:
作用:代替之前的RestTemplate发起远程调用(实现http请求的发送)
实现步骤:
Ⅰ:在服务消费者的pom文件中引入feign的依赖
org.springframework.cloud
spring-cloud-starter-openfeign
Ⅱ:在服务消费者的启动类添加@EnableFeignClients注解开启Feign的功能
Ⅲ:在服务消费者中编写Feign客户端(接口)
例:
@FeignClient(“userservice”)
public interface UserClient {
//需要远程调那个就直接把对外接口复制过来(要添加上类上的路径)
@GetMapping(“/user/{id}”)
User findById(@PathVariable(“id”) Long id);
}
这个客户端主要是基于SpringMVC的注解来声明远程调用的信息,比如:
○ 服务名称:userservice
○ 请求方式:GET
○ 请求路径:/user/{id}
○ 请求参数:Long id
○ 返回值类型:User
这样,Feign就可以帮助我们发送http请求,无需自己使用RestTemplate来发送了。
Ⅳ:使用FeignClient中定义的方法代替RestTemplate
Feign的自定义配置:
日志的级别分为四种:
■ NONE:不记录任何日志信息,这是默认值。
■ BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
■ HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
■ FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
修改feign的日志级别实现步骤:
方法一:配置文件
feign:
client:
config:
userservice: # 针对某个微服务的配置
default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
loggerLevel: FULL # 日志级别
方法二:Java代码
①先声明一个配置类,然后声明一个Logger.Level的对象
public class DefaultFeignConfiguration {
@Bean
public Logger.Level feignLogLevel(){
return Logger.Level.BASIC; // 日志级别为BASIC
}
}
②如果要全局生效,将其放到启动类的@EnableFeignClients这个注解中
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration .class)
如果是局部生效,则把它放到对应的@FeignClient这个注解中
@FeignClient(value = “userservice”, configuration = DefaultFeignConfiguration .class)
Feign使用优化:
原理:
Feign底层发起http请求,依赖于其它的框架。其底层客户端实现包括:
•URLConnection:默认实现,不支持连接池
•Apache HttpClient :支持连接池
•OKHttp:支持连接池
因此提高Feign的性能主要手段就是使用连接池代替默认的URLConnection
实现步骤:
Ⅰ:在服务消费者的pom文件中引入Apache的HttpClient依赖
Gateway服务网关:
作用: 为微服务架构提供一种简单有效的统一的 API 路由管理
核心功能:对用户请求做身份认证、权限校验
将用户请求路由到微服务,并实现负载均衡
对用户请求做限流
实现步骤:
Ⅰ:创建gateway服务,引入依赖
