SpringCloud再学习(二)

继续Nacos!
使用nacos,nacos是先读取在他页面上配置的yaml文件,再读取我们springboot里面的yml文件进行合并。但是先读区yaml文件要知道他在哪。所以这时候要有一个bootstarp.yml

在这里插入图片描述
注:当然在yml文件中有些重复的配置就可以不要了。
热部署
在这里插入图片描述
环境共享配置
在这里插入图片描述

四、Feign

1导入依赖
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
</dependencies>
2.feign客户端
@FeignClient("user-service")
public interface UserFeignApi {
    @GetMapping("/user/{id}")
    public User findById(@PathVariable("id") String username);
}

3开启feign功能
@EnableFeignClients(basePackages="com.itheima.sh.clients") // 开启Feign功能

feign性能优化:
(1)定义日志级别日志:NONE、BASIC、HEADERS、FULL

@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

要是想性能优化好一点,一般使用NONE、BASIC
(2)使用别的底层client,用httpClient、okClient
在这里插入图片描述

五、GateWay网关

网关的功能特性:请求路由、权限控制、限流、集成Hystrix断路器
网关的每一个功能都是由过滤链完成的。

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

server:
  port: 10010 #服务端口
spring:
  application:
    name: gateway-server #指定服务名
  cloud:
    gateway:
      routes:
      - id: user-service # 当前路由的唯一标识
        uri: lb://user-service # 路由的目标微服务,lb:代表负载均衡,user-service:代表服务id
        predicates: # 断言
        - Path=/user/** # 按照路径匹配的规则

lb:负载均衡的协议,将来会使用Ribbon实现负载均衡

请添加图片描述
网关跨域问题(CORS)
请添加图片描述

六、Hystrix熔断器
微服务中,微服务调用关系错综复杂,要是其中一个服务崩溃了,那么好多服务也会随着崩溃无法启动。
产生雪崩效应的场景:流量激增、缓存刷新、程序有bug、数据库严重瓶颈、线程同步等待
解决方案:
超时机制:给每个请求设置超时;
断路器模式:要是依赖的服务有大量超时时,再让新的请求去访问就没有意义了。这边就应该使用断路器避免资源浪费。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

@EnableCircuitBreaker/@SpringCloudApplication(综合注解)
@GetMapping("{id}")
@HystrixCommand(fallbackMethod = "queryByIdFallBack")
public User queryById(@PathVariable("id") String id){
  User user = restTemplate.getForObject("http://user-service/user/"+id, User.class);
  return user;
}

// 降级方法
public User queryByIdFallBack(String id) {
  User user = new User();
  user.setName("暂停服务");
  return user;
}

feign与hystrix的结合

feign:
  hystrix:
    enabled: true # 开启Feign的熔断功能
//UserFeignApiFallBack
@Component
public class UserFeignApiFallBack implements UserFeignApi {
    @Override
    public User findById(String username) {
        User user = new User();
        user.setName(username);
        user.setNickName("UserFeignApiFallBack");

        return user;
    }
}
//UserFeignClient
@FeignClient(value = "user-service",fallback = UserFeignApiFallBack.class)
public interface UserFeignApi {

    @GetMapping("/user/{id}")
    public User findById(@PathVariable("id") String username);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值