nacos 配置中心
    配置中心使用方式
    1 引入依赖 spring-cloud-starter-alibaba-nacos-config
    2 配置文件中添加 bootstrap.yaml
    3 配置环境 服务名称 运行环境 配置注册中心 文件类型

    1. spring:
    2. application:
    3. name: userservice # 服务名称
    4. profiles:
    5. active: dev #开发环境,这里是dev
    6. cloud:
    7. nacos:
    8. server-addr: localhost:8848 # Nacos地址
    9. config:
    10. file-extension: yaml # 文件后缀名

    4 代码添加业务逻辑读取 配置中心文件 热更新 用 @value 注入数据
    实现热更新 需要使用的类上家@RefreshScope
    或者直接 使用@ConfigurationProperties(prefix = “xxxx”)
    注意要使用 @Data 和 @Component 不然其他类没法注入进去

    配置共享文件 可以不加后缀 例如-dev 或者 -test
    会资源共享
    权重 带后缀的配置 >共享的配置 > 本地的配置

    Feign远程调用

    Feign是一个声明式的http客户端,可读性好,容易维护

    使用方式
    ① 引入依赖
    spring-cloud-starter-openfeign
    ② 添加@EnableFeignClients注解
    启动类添加 注解
    ③ 编写FeignClient接口
    @FeignClient(“userservice”)//被调用的服务名称
    public interface UserClient {
    @GetMapping(“/user/{id}”) //被调用的接口
    User findById(@PathVariable(“id”) Long id);
    }

    ④ 使用FeignClient中定义的方法代替RestTemplate
    引入 接口 直接调用 接口中的方法
    feign 的配置 日志级别

    1. feign:
    2. client:
    3. config:
    4. userservice: # 针对某个微服务的配置 如果真的全局 用default 可以全部服务 都用这个日志级别
    5. loggerLevel: FULL # 日志级别
    6. 而日志的级别分为四种:
    7. - NONE:不记录任何日志信息,这是默认值。
    8. - BASIC:仅记录请求的方法,URL以及响应状态码和执行时间 开发中用这个即可
    9. - HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
    10. - FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。

    也可以使用代码发方式

    @Bean
    public Logger.Level feignLogLevel(){
    return Logger.Level.BASIC; // 日志级别为BASIC
    }
    如果全局生效 用在启动类注解上
    defaultConfiguration = DefaultFeignConfiguration .class
    如果局部生效 用在启动类注解上
    configuration = DefaultFeignConfiguration .class

    Feign的使用优化
    Feign底层发起http请求,依赖于其它的框架。其底层客户端实现包括:
    •URLConnection:默认实现,不支持连接池
    •Apache HttpClient :支持连接池
    •OKHttp:支持连接池
    提高Feign的性能主要手段就是使用连接池代替默认的URLConnection

    使用方式
    1 引入依赖
    feign-httpclient
    2 配置连接池

    1. feign:
    2. client:
    3. config:
    4. default: # default全局的配置
    5. loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息
    6. httpclient:
    7. enabled: true # 开启feign对HttpClient的支持
    8. max-connections: 200 # 最大的连接数
    9. max-connections-per-route: 50 # 每个路径的最大连接数

    feign 最佳实践 用自动装配实现

    例如,将UserClient、User、Feign的默认配置都抽取到一个feign-api包中,所有微服务引用该依赖包,即可直接使用
    1 新建工程 feign-api
    2 引入feign 依赖 spring-cloud-starter-openfeign
    3 加入 依赖的 pojo 和 feign接口clint 配置类
    4 打包安装
    5 使用方式 直接引入 feign-api 引入 注入feign 接口即可

    Gateway服务网关

    网关作用: 路由 权限 限流

    主要作用
    路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当路由的目标服务有多个时,还需要做负载均衡。
    限流 : 当访问过高是 在网关中按照下游的微服务能够接受的速度来放行请求
    权限控制:网关作为微服务入口,需要校验用户是是否有请求资格

    使用方式
    1 引入依赖
    网关依赖 spring-cloud-starter-gateway
    nacos服务发现依赖 spring-cloud-starter-alibaba-nacos-discovery
    2编写启动类
    3 配置继承和路由规则

    1. server:
    2. port: 10010 # 网关端口
    3. spring:
    4. application:
    5. name: gateway # 服务名称
    6. cloud:
    7. nacos:
    8. server-addr: localhost:8848 # nacos地址
    9. gateway:
    10. routes: # 网关路由配置
    11. - id: user-service # 路由id,自定义,只要唯一即可
    12. # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
    13. uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
    14. predicates: # 路由断言,也就是判断请求是否符合路由规则的条件 断言工厂有十多个
    15. - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
    16. filters: # 过滤器 粒子 过滤的请求添加了 请求头信息
    17. - AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头

    过滤器的作用是什么?

    ① 对路由的请求或响应做加工处理,比如添加请求头
    ② 配置在路由下的过滤器只对当前路由的请求生效

    defaultFilters的作用是什么?
    ① 对所有路由都生效的过滤器

    全局过滤器
    全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。区别在于GatewayFilter通过配置定义,处理逻辑是固定的;而GlobalFilter的逻辑需要自己写代码实现。

    使用方式 定义方法 实现 GlobalFilter 接口

    @Order(-1) order值越小,优先级越高,执行顺序越靠前。

    跨域问题