springcloud 之 Ribbon Hystrix Feign bus 动态修改配置

Ribbon 是微服务架构图中负责负载均衡的 组件。

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

测试如下:

    //微服务方式 Ribbon方式
    @GetMapping("ribbon/{name}")
    public String RibbonTest(@PathVariable String name) {
//        ip和域名 更换成 微服务名称
        String url = "http://user-service/hello?name="+name;
        String forObject = restTemplate.getForObject(url, String.class);
        return forObject;
    }

Hystrix 熔断:

1、熔断器:当某个服务的失败率达到一定阈值时,Hystrix会打开熔断器,停止对该服务的调用,从而防止故障进一步扩散。熔断器开启后,Hystrix会快速失败并返回备选结果或降级数据,以提高系统的响应速度。
2、资源隔离:Hystrix可以对调用远程服务的线程池进行资源隔离,限制调用分布式服务的资源使用。这样,即使某个服务出现故障,也不会影响其他服务的调用。
3、服务降级:当服务调用失败或资源不足时,Hystrix可以进行降级处理。降级后可以配合降级接口返回托底数据,以保证系统的正常运行。
4、缓存:Hystrix提供了请求缓存和请求合并的实现。通过缓存请求的结果,可以减少对后端服务的调用,提高系统的性能。同时,通过将多个相同类型的请求合并为一个批量请求,可以减少网络开销。
5、监控和告警:Hystrix可以监控服务的调用情况,如调用次数、成功率、响应时间等,并提供告警功能。这样,开发人员可以及时发现并处理潜在的问题。

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

在application中加入 @EnableCircuitBreaker注解

@EnableDiscoveryClient 
@SpringBootApplication
@EnableCircuitBreaker //开启熔断 hytrix
public class ClientServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(ClientServiceApplication.class, args);
    }

使用方式如下:
方案一: 方法级别的指定

    @GetMapping("ribbon/{name}")
    @HystrixCommand(fallbackMethod = "ribbonTestFail")
    public String RibbonTest(@PathVariable String name) {
//        ip和域名 更换成 微服务名称
        String url = "http://user-service/hello?name="+name;
        String forObject = restTemplate.getForObject(url, String.class);
        return forObject;
    }
//    服务降级处理 配合使用    @HystrixCommand(fallbackMethod = "ribbonTestFail") 入参出入要一和对应方法一直
    public String ribbonTestFail(String name){
        return "请求失败";
    }

方案二 类级别方案的指定:

@RestController
@RequestMapping("client")
@DefaultProperties(defaultFallback = "TestControllerRequestFail") //指定访问失败时的方法
public class TestController {

    //微服务方式 Ribbon方式
    @GetMapping("ribbon/{name}")
    @HystrixCommand
    public String RibbonTest(@PathVariable String name) {
//        ip和域名 更换成 微服务名称
        String url = "http://user-service/hello?name="+name;
        String forObject = restTemplate.getForObject(url, String.class);
        return forObject;
    }

//统一处理,配合 @DefaultProperties(defaultFallback = "TestControllerRequestFail") 来使用
    public String TestControllerRequestFail(){
        return "Controller 请求失败";
    }

yml 配置:

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 1000
      circuitBreaker:
        errorThresholdPercentage: 50 #触发熔断错误比例阈值,默认值50号
        sleepWindowInMilliseconds: 10000 #熔断后休眠时长,默认值5秒
        requestVolumeThreshold: 10 #熔断触发最小请求次数,默认值是20

Feign

是一个声明式的 HTTP 客户端,它使得编写 HTTP 客户端变得更简单,通过注解和接口的方式定义和调用远程服务。
pom 加入依赖:

        <dependency>
            <groupId>org.springframework.cl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值