SpringCloud的服务容错处理(一)之服务降级

什么是服务降级:

    核心思想是区分业务,优先核心服务,相当于弃车保帅,,例如下单的时候,优先确保订单和支付服务,积分服务低优先级

使用方法也很SpringBoot :  注意这是服务端的,非客户端(相对而言)

    1.引入依赖

    2.启动类上配置注解

    3.编写具体逻辑   ->通过核心注解@HystrixComm

<!-- 服务降级措施 的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.4.4.RELEASE</version>

</dependency>

    2.在启动类上添加注解:

    @EnableCircuitBreaker

    3.编写具体的处理方法:

   

 	@HystrixCommand(fallbackMethod="fallback")  这个注解指定但访问这个页面报错或者时间太久之后就会出发降级,从而调用了下面的fallback函数
	@RequestMapping("/index")
	public ModelAndView index(HttpServletRequest request,HttpServletResponse response)
	{
		ModelAndView modelAndView=null;
		Collection<CategoryDTO> categories = indexSerivceFacaded.showCategories();
		System.out.println(categories);
		return modelAndView;
	}
	public ModelAndView fallback(HttpServletRequest request,HttpServletResponse response) 	
	{
		System.out.println("allaaa");
		return null;
	}

这样当访问这个页面出错的时候,就会触发服务降级,天猫上的如网页丢失一会会这些都是服务降级

----------------------------------------------------------------------------------------------------------------------------------对于使用了@FeiginClient的也有对应的服务降级写法:

     1.因为使用了@FeignClient 所以不需要添加依赖(内部包含了这个依赖)

     2.在客户端的配置文件中编写:feign.hsystrix.enabled=true  (这个是没提示的,要写正确)

     3.编写逻辑:

具体如下:

    2:

        

feign: 
  hystrix: 
    enabled: true

    3:

        

@FeignClient(name="product",fallback=IProductServerService.IProductServerServiceFallBack.class)
public interface IProductServerService
{
	@GetMapping("/category/all")
	ResultVO<Collection<CategoryDTO>>findAllCategories();
	@Component
	public static class IProductServerServiceFallBack implements IProductServerService
	{
		@Override
		public ResultVO<Collection<CategoryDTO>> findAllCategories()
		{
			System.out.println("调用fallback函数");
			return ResultUtils.fail();
		}
	}
}
这样当访问这个服务的时候,而这个服务宕机了,则会访问上述代码中的FallBack这个类触发服务降级

    

猜你喜欢

转载自blog.csdn.net/Coder_Joker/article/details/80468765