java如何实现服务降级_Hystrix服务降级

java如何实现服务降级_Hystrix服务降级##注意Hystrix默认的服务降级时长是1秒钟.因为网络波动,这个值在正式环境中需要调整一下.##导入包~~~org.springframework.cloudspring-cloud-starter-netflix-hystrix2.0.1.RELEASE~~~##启动类~~~packagecom.like;importorg.springframework.boot.SpringA…

大家好,又见面了,我是你们的朋友全栈君。

## 注意

Hystrix默认的服务降级时长是1秒钟.因为网络波动,这个值在正式环境中需要调整一下.

## 导入包

~~~

org.springframework.cloud

spring-cloud-starter-netflix-hystrix

2.0.1.RELEASE

~~~

## 启动类

~~~

package com.like;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

import org.springframework.context.annotation.Bean;

import org.springframework.web.client.RestTemplate;

//@SpringBootApplication

//@EnableDiscoveryClient

//@EnableCircuitBreaker

@SpringCloudApplication //可以使用该注解替代上面的三个注解,但是实践中发现如果使用此注解会导致服务不能降级

public class ConsumerServer

{

public static void main(String[] args)

{

SpringApplication.run(ConsumerServer.class);

}

@Bean

@LoadBalanced

public RestTemplate restTemplate()

{

return new RestTemplate();

}

}

~~~

## 服务提供者修改

~~~

@GetMapping(“/{id}”)

public User index(@PathVariable(“id”) Long id)

{

try {

Thread.sleep(2000L); //让程序等待2秒

} catch (InterruptedException e) {

e.printStackTrace();

}

return userServer.queryById(id);

}

~~~

## 指定服务降级处理逻辑

注意,参数和返回值必须和请求的方法一致.

~~~

@GetMapping(“/{id}”)

@HystrixCommand(fallbackMethod = “fallCallback”)

public String index(@PathVariable(“id”) Long id)

{

String url = “http://user-server/user/”;

return restTemplate.getForObject(url + id, String.class);

}

public String fallCallback(Long id)

{

return “服务器压力很大”;

}

~~~

## 测试

当请求时长超过默认的1秒后,进入失败处理逻辑:

![](https://box.kancloud.cn/4a0774007ac06d8226ffb0c19ba46e8e_1322x664.png)

## 统一降级逻辑

为该类下所有方法统一处理服务降级,控制器上加上DefaultProperties注解并指定降级处理逻辑的方法:

~~~

@DefaultProperties(defaultFallback = “defaultCallBack”)

~~~

~~~

@HystrixCommand

public String index(@PathVariable(“id”) Long id)

{

String url = “http://user-server/user/”;

return restTemplate.getForObject(url + id, String.class);

}

public String defaultCallBack() //注意,这里不能写任何参数

{

return “服务器压力很大2”;

}

~~~

## 为方法指定单独的降级属性

在该类下可以找到相关配置:

![](https://box.kancloud.cn/17139bdaeac2590b1cf4e874f51c95e6_2940x860.png)

![](https://box.kancloud.cn/0b6990fb661d56e861bd385cbb6ee7c6_822x910.png)

## Hystrix全局配置

需要写到application.yml配置文件内了:

此配置没有提示,需要自己手写.

~~~

hystrix:

command:

default:

execution:

isolation:

thread:

timeoutInMilliseconds: 3000

~~~

## 针对某个服务进行配置

~~~

hystrix:

command:

user-service: //写服务名或者方法名

execution:

isolation:

thread:

timeoutInMilliseconds: 3000

~~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133416.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 浅谈单调队列

    浅谈单调队列单调队列是指:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。队列是一种先进先出(FIFOFirstInFirstOut)的数据结构,它类似于下面这幅图:队列的进出方式类似于平时我们排队打饭,来排队的人从队尾进入,打完饭的人从队头弹出。队列的在程序中储存的方式有很多,OI中最为常用的是使用头指针head和尾指针tail进行存储头指针指…

  • 图解Java 垃圾回收机制

    图解Java 垃圾回收机制Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。垃圾回收机制的引入有效地解决了内存的回收问题使得他们在编写程序的时候不再需要考虑内存管理。本文首先着重介绍了判断一个对象是否可以被回收的两种经典算法,并详述了四种典型的垃圾回收算法的基本思想及其直接应用——垃圾收集器,最后结合内存回收策略介绍了内存分配规则。

  • 投影矩阵的推导_分块矩阵的行列式公式

    投影矩阵的推导_分块矩阵的行列式公式看了好几篇关于投影矩阵的文章,在z坐标的推导上,没有提到为什么z’和1/z成线性关系,而是通过结论中的投影矩阵,即已知z’=(zA+B)/w,并且x和x’,y和y’关系式中分母都有-z,所以w为-z,然后(-n,-f)映射到(-1,1),求出A、B,得到z’和z的关系。这是用结论去反推过程,过程再得到结论,这样的逻辑我觉得不对,我认为,应该是先得到x,y,z各自的关系式,才去构造出投影矩…

  • er图实体关系图怎么画_uml时序图怎么画实例

    er图实体关系图怎么画_uml时序图怎么画实例关于绘图,我一般遵循这样的原则:绘图前先充分理解这类图形,回答它是什么,具有哪些绘图规范,最后才是怎么画。一、什么是E-R图?E-R图又称实体关系图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型。通俗点讲就是,当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,概念模型就是用来描述这种需求。比如学生生活中的校园卡系统数据库、公交卡系统数据库等等,都离不来实体关系图。学生就业系统E-R图E-R图中的基本元素(以上面的学生饭卡E-R图为例)..

  • 从mssql (sqlserver2000)中导出数据到mysql 中用load data

    从mssql (sqlserver2000)中导出数据到mysql 中用load data

  • 【机器学习】数据归一化——MinMaxScaler理解

    【机器学习】数据归一化——MinMaxScaler理解文章目录前言公式实例前言前阵在查sklearn的归一化方法MinMaxScaler的时候,发现找到的文章解释的一塌糊涂,一般都是扔个公式加一堆代码就敷衍了事了,所以这次写一篇讲述MinMaxScaler核心功能的文章。公式会查MinMaxScaler的基本上都应该理解数据归一化,本质上是将数据点映射到了[0,1]区间(默认),但实际使用的的时候也不一定是到[0,1],你也可以指定参数feature_range,映射到其他区间,这个后面再讲。首先了解该计算公式:Xstd=X−X.min(axis

    2022年10月11日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号