• 学习笔记 Cloud 代码


    nacos 注册服务代码

    • 改POM (加入依赖)    spring-cloud-starter-alibaba-nacos-discovery
    • 写YML   配置服务名和Nacos地址(spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 # Nacos 地址) (配置注册中心地址)
    • 主启动   @EnableDiscoveryClient  //让注册中心能扫描到服务。 * (开启服务扫描)
    • 业务类 ,  控制层下面,@RefreshScope  (支持Nacos的动态刷新)

    nacos使用RestTemplate实现服务调用

    • 注册RestTemplate并添加@LoadBalanced
    • 使用RestTemplate访问, restTemplate.getForObject(serverURL) 

    OpenFeign代码实现

    • 1 pom,引入OpenFeign依赖
    • 2 声明式接口 @FeignClient (服务名)   FeignService(方法和controller层的方法定义保持一致)  (注册OpenFeign接口)
    • 3 主启动, @EnableFeignClients,(扫描OpenFeign接口)
    •  4 调用本地方法一样调用远程方法 (注入FeignService)

    OpenFeign日志

    • NONE:默认的,不显示任何日志;
    • BASIC:仅记录请求方法、URL、响应状态码及执行时间;
    • HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息;
    • FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据;

    配置文件

    • logging.level.com.qt.serviceopenfeign.openfeign=debug #全局
    • feign.client.config.service-stock.loggerLevel=basic  #局部

    Ribbon的常用配置

    1. ribbon:
    2. ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)
    3. ReadTimeout: 3000 #服务请求处理超时时间(毫秒)
    4. OkToRetryOnAllOperations: true #对超时请求启用重试机制
    5. MaxAutoRetriesNextServer: 1 #切换重试实例的最大个数
    6. MaxAutoRetries: 1 # 切换实例后重试最大次数
    7. NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改负载均衡算法

    nacos配置中心

    • 改POM (加入依赖)    spring-cloud-starter-alibaba-nacos-config
    • 写YML (配置文件,bootstrap) spring.cloud.nacos.config.server-addr=127.0.0.1:8848 (配置配置中心地址)
    • 建配置    Nacos管理后台新建配置文件
    • 使用@Value("$name")获取配置
    • 业务类 ,  控制层下面,@RefreshScope  //动态刷新配置 (否则修改配置不刷新)

    配置文件优先级

    • bootstrap优先加载,配置中心配置,当前应用配置

    Nacos配置中心使用: 

    • bootstrap-{profile} 区分环境,不同环境nacos地址不同
    • 创建配置文件:(文件名为服务名),${prefix}-${spring.profiles.active}.${file-extension}prefix 默认为 spring.application.name (服务名),如gulimall-coupon.yaml

    配置

    • 配置命名空间(或分组)区分项目(应用) (命名空间(或分组)隔离配置)
    • shared-configs读取共享配置(redis,mq,数据库)
    • extension-config 读取额外配置(数据库),并覆盖共享配置

    sentinel代码实现

    • 改POM (加入依赖)    spring-cloud-starter-alibaba-sentinel
    • 写YML (配置文件) spring.cloud.sentinel.transport.port=127.0.0.1:8080#配置Sentinel dashboard地址

    @SentinelResource配置  (服务提供者)

    • 指定资源名(也可以用请求路径作为资源名),降级处理方法的。
    • blockHandler  设置流控降级处理方法,降级处理方法一定要public并且返回值相同
    • fallback 设置异常降级处理方法
    • blockHandlerClass 设置流控降级处理类,fallbackClass 设置异常处理类

    统一异常处理

    • 实现 BlockExceptionHandler的hand方法
    • 适合统一返回结果的场景

    流控效果:

    • 快速失败:当QPS超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException。
    • warm up:根据codeFactor(冷加载因子,默认3)的值,从阈值codeFactor,经过预热时长,才达到设置的QPS阈值
    • 排队等待: 方式会严格控制请求通过的间隔时间,即让请求以均匀的速度通过,对应的是漏桶算法

    熔断降级 ,(RT和异常数必须满足1秒5个请求)

    • RT(平均响应时间,秒级),QPS>=5且平均响应时间 超出阈值 ,触发降级。降级时间结束,关闭降级
    • 异常比例(秒级),QPS>=5且异常比例(秒级统计)超过阈值,触发降级,降级时间结束后,关闭降级
    • 异常数(分钟级),异常数(分钟统计)超过阈值时,触发降级;降级时间结束,关闭降级

    sentinel整合openfeign+fallback进行降级 (服务调用者)

    • 改POM (加入依赖)  :spring-cloud-starter-openfeign
    • 写YML (配置文件)feign.sentinel.enabled=true
    • 主启动类:@EnableFeignClients
    • 远程调用模块的接口A,@FeignClient(name = "service-stock",fallback = B.class)
    • 降级类B实现接口A方法

    seata模块

    • 改POM (加入依赖)   spring-cloud-starter-alibaba-seata
    • 写YML (配置文件)spring:  cloud:alibaba: seata: tx-service-group: fsp_tx_group #自定义事务组名称需要与seata-server中的对应
    • 声明式事务实现(@GlobalTransactional)

    Gateway 网关快速入门

    • 前提:注册到Nacos(Nacos依赖,Nacos配置,@EnableDiscoveryClient )
    • 引入网关依赖:starter-gateway
    • 引入common,引入数据库配置需要移除 (@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}))
    • yml配置

    路由配置  cloud:   gateway: routes: 

    • id: 唯一标识。默认是一个UUID
    • uri: lb://service-openfeign 需要转发路径
    • predicates: 断言, 路径的匹配规则
    • filters: 过滤器

    predicates: 断言为Path=/goods/** ,uri=http://localhost:8001/

    predicates: 断言为Host=mall.com

    • 请求http://mall.com,匹配 Host=mall.com

    网关路由

    • 转发路径  uri: lb://service-openfeign  
    • 匹配路径  predicates Path=/goods/** 请求http://127.0.0.1/goods/findOne/2,匹配/goods/**
    • 重写路径  filters RewritePath   api替换为renren-fast/

  • 相关阅读:
    HarmonyOS云开发基础认证---练习题二
    C#使用OpenCv(OpenCVSharp)图像轮廓多边形逼近和轮廓最小矩形实例
    Diffusion Model 相关文章(图像生成方面)
    mac电脑卸载LVSecurityAgent
    【重学C++】02 脱离指针陷阱:深入浅出 C++ 智能指针
    前端实现界面切换主题
    数据结构与算法-第六章 图的最小生成树
    【Linux】线程概念与线程控制
    Spring源码解析(十):spring整合mybatis源码
    Linux学习-63-源码包服务管理方法
  • 原文地址:https://blog.csdn.net/qq_25744257/article/details/127507006