SpringCloud入门(六)

本文介绍了SpringCloud中的Ribbon和Hystrix组件。Ribbon作为客户端负载均衡器,用于实现服务间的高可用和负载均衡。文章详细讲解了Ribbon的用途、实现方法以及如何修改轮询策略。接着,文章探讨了Hystrix的作用,即防止微服务雪崩,通过线程隔离和服务降级策略确保系统的稳定性。同时,提供了Hystrix的配置和使用示例。
摘要由CSDN通过智能技术生成

学习Ribbon

  1. Ribbon是什么?

   Robbion是负载均衡

  1. 什么负载均衡?
     
  2. 高可用,负载均衡 集群
    高可用:任何一个服务都有备用,当某个服务意外停止,备用服务依然可用。
    负载均衡:让访问的请求,平均的负载到每个服务上。
    集群:多台服务器实现一个功能,这些服务器称为集群。
     

2.为什么要有Ribbon

3.如何实现Ribbon

1.添加依赖

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>

</dependency>

 

2.添加注解

在restTemplate中添加@LoadBalanced

 

 

3.修改代码

 String baseUrl = "http://provider02/"+id;

User user =  restTemplate.getForObject(baseUrl, User.class);

 

 

4.查看负载均衡

Alt+contrl+shift+n,查找类RibbonLoadBalancerClientreconstructURI方法。

 

这种默认的方式,是使用轮询方式。

 

4.修改轮训策略

格式是:{服务名称}.ribbon.NFLoadBalancerRuleClassName,值就是IRule的实现类。

provider02:

  ribbon:

    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
  1. 设定重试
  1. 添加依赖
<dependency>

    <groupId>org.springframework.retry</groupId>

    <artifactId>spring-retry</artifactId>

</dependency>

 

  1. 修改配置

spring:
  cloud:
    loadbalancer:
      retry:
        enabled: true # 开启Spring Cloud的重试功能
user-service:
  ribbon:
    ConnectTimeout: 250 # Ribbon的连接超时时间
    ReadTimeout: 1000 # Ribbon的数据读取超时时间
    OkToRetryOnAllOperations: true # 是否对所有操作都进行重试
    MaxAutoRetriesNextServer: 1 # 切换实例的重试次数
    MaxAutoRetries: 1 # 对当前实例的重试次数

 

 

学习Hystrix

 

什么是Hystrix?

豪猪,是一种保护微服务的一种框架。

 

 

什么要有Hystrix?

雪崩

 就是来微服务相互访问的过程中,某个微服务出现等待情况,造成其他调用这个微服务的微服务都处于等待状态,最终造成服务崩溃。

 

Hystrix就是为了防止雪崩。

 

 

Hystix如何防止雪崩

  1. 线程隔离

在之前,比如tomcat中,所有的访问享有所有的线程权限。默认tomcat有200个线程。

(通铺)

我们现在的微服务都是设定好了,自己微服务需要的线程,当某个微服务线程占满的时候,并不会影响其他微服务。(单间)

  1. 服务降级

就是当访问微服务阻塞的时候,当超过一定时间,返回给错误的结果。而进行友好的提示。

造成阻塞的假象

就在服务提供者代码里添加线程休眠

try {

    Thread.sleep(10*1000);

} catch (InterruptedException e) {

    e.printStackTrace();

}

 

 

  1. 局部服务降级
  1. 添加依赖
<dependency>

    <groupId>org.springframework.cloud</groupId>

 <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>

</dependency>

 

  1. 修改属性文件
  2. 添加注解
@EnableHystrix

 

因为后面要将熔断

@EnableCircuitBreaker

 

最后发现

@SpringBootApplication

@EnableDiscoveryClient

@EnableCircuitBreaker

使用

 

@SpringCloudApplication

 

 

  1. 添加代码
    在要进行服务降级的方法上,添加注解,指定注解的回调函数
@HystrixCommand(fallbackMethod = "helloFallback")

 

实现回调函数(参数,返回值类型一致)

public Object helloFallback(int id){

    User user = new User();

    user.setId(id);

    user.setName("降级处理了");

    return user;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值