- ***一.服务降级***
- 2.不使用Hystrix的项目
- 3. 使用Hystrix
- 4. 全局的Hystrix配置
- ***二.服务熔断***
- 1.熔断机制概述
- 2.项目中使用
1.概念
服务降级:服务器繁忙,请稍后再试,不让客户端等待,并立即返回一个友好的提示(一般发生在 程序异常,超时,服务熔断触发服务降级,线程池、信号量 打满也会导致服务降级)
服务熔断 : 达到最大服务访问后,直接拒绝访问,然后调用服务降级的方法并返回友好提示(如保险丝一样)
服务限流 : 秒杀等高并发操作,严禁一窝蜂的过来拥挤,排队进入,一秒钟N个,有序进行
***一.服务降级***
2.不使用Hystrix的项目
大致的Service和Controller层如下
***************Controller*****************
package com.sky.springcloud.controller;
import com.sky.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@Slf4j
public class PaymentController {
@Resource
private PaymentService paymentService;
@Value("${server.port}")
private String serverport;
@GetMapping("/payment/hystrix/ok/{id}")
public String paymentInfo_Ok(@PathVariable("id") Integer id){
String result = paymentService.paymentInfo_ok(id);
log.info("*****"+ result);
return result;
}
@GetMapping("/payment/hystrix/timeout/{id}")
public String paymentInfo_TimeOut(@PathVariable("id") Integer id){
String result = paymentService.payment_Info_TimeOut(id);
}
*******************Service********************
package com.sky.springcloud.service;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUni