网站制作论文文献综述,集团 投入巨资 做网站,平面设计h5指的是什么,优化网站界面的工具一 服务降级的说明
1.1 服务降级说明
服务器忙#xff0c;请稍后在试不让客户达等待#xff0c;立即返回一个友好的提示。
1.2 服务降级的触发情况
1.程序运行异常#xff1b;
2.超时#xff1b;
3.服务熔断触发服务降级#xff1b;4
.线程池/信号量打…一 服务降级的说明
1.1 服务降级说明
服务器忙请稍后在试不让客户达等待立即返回一个友好的提示。
1.2 服务降级的触发情况
1.程序运行异常
2.超时
3.服务熔断触发服务降级4
.线程池/信号量打满也会导致服务降级
1.3 通用注解 二 案例对每一个方法实行降级处理
2.1 消费端
2.1.1 pom文件 !--hystrix--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix/artifactId/dependency
2.1.2 设置降级规则
代码 GetMapping(value /consumer/payment/nacos/{id})HystrixCommand(fallbackMethod dealFallBackInfo,commandProperties {HystrixProperty(nameexecution.isolation.thread.timeoutInMilliseconds,value1500)})public String paymentInfo(PathVariable(id) Long id){System.out.println(获取服务器配置信息serverUrl:serverURL);System.out.println(9008的controller获取id:id);String strorderConsumerService.getPaymentByIdLjf22222(id);return ok:serverURLstr;}GetMapping(value /consumer/getinfo/{id})public Object getUserInfo(PathVariable(id) Long id){User unew User(id.intValue(),beijingid);return orderConsumerService.postQueryParams(u);}public String dealFallBackInfo(PathVariable(id) Long id){return 我是消费者9008,服务出错了进行服务降级id;} 2.1.3 开启hystrix熔断
添加EnableHystrix 注解 2.2 服务端
2.2.1 pom文件 !--hystrix--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix/artifactId/dependency
2.2.2 设置降级规则
1.代码 GetMapping(value /ljf/getinfo/{id})HystrixCommand(fallbackMethod dealFallBackInfo,commandProperties {HystrixProperty(nameexecution.isolation.thread.timeoutInMilliseconds,value3000)})public String getPayment(PathVariable(id) Integer id){try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}int k10/0;System.out.println(服务9009 获取到的参数id:id);return 服务9009 获取到的参数id:id;}PostMapping(/path)public String postQueryParams(RequestBody User user) throws JsonProcessingException {String str new JsonMapper().writeValueAsString(user);System.out.println(post提交....);return str;}public String dealFallBackInfo(PathVariable(id) Long id){return 我是消费者9009,服务出错了进行服务降级id;}
2.截图 2.2.3 开启hystrix熔断 2.3 启动服务测试
1.启动nacos启动sleuth
2.启动consumer9008 provider9009 3.测试 三 案例设置全局降级处理办法
3.1 消费端设置
1.代码
package com.ljf.mscloud.controller;import com.ljf.mscloud.model.User;
import com.ljf.mscloud.service.OrderConsumerService;
import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;/*** ClassName: OrderConsumerController* Description: TODO* Author: admin* Date: 2023/08/14 18:09:14 * Version: V1.0**/
RestController
Slf4j
RefreshScope //支持Nacos的动态刷新功能。
//DefaultProperties(defaultFallback globalFallBackInfo)
public class OrderConsumerController {Value(${service-url.nacos-user-service})private String serverURL;Autowiredprivate OrderConsumerService orderConsumerService;GetMapping(value /consumer/payment/nacos/{id})HystrixCommand(fallbackMethod dealFallBackInfo,commandProperties {HystrixProperty(nameexecution.isolation.thread.timeoutInMilliseconds,value1500)})public String paymentInfo(PathVariable(id) Long id){System.out.println(获取服务器配置信息serverUrl:serverURL);System.out.println(9008的controller获取id:id);String strorderConsumerService.getPaymentByIdLjf22222(id);return ok:serverURLstr;}GetMapping(value /consumer/getinfo/{id})public Object getUserInfo(PathVariable(id) Long id){User unew User(id.intValue(),beijingid);return orderConsumerService.postQueryParams(u);}public String dealFallBackInfo(PathVariable(id) Long id){return 我是消费者9008,服务出错了进行服务降级id;}public String globalFallBackInfo(){return Global异常处理信息请稍后再试客户端9008;}
}2.截图 原因在没有在制定方法加HystrixCommand 那么加上此注解后 再次访问http://localhost:9008/consumer/getinfo/666 四 案例给Feginclient注解的接口上添加降级规则
4.1 controller
package com.ljf.mscloud.controller;import com.ljf.mscloud.model.User;
import com.ljf.mscloud.service.OrderConsumerService;
import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;/*** ClassName: OrderConsumerController* Description: TODO* Author: admin* Date: 2023/08/14 18:09:14 * Version: V1.0**/
RestController
Slf4j
RefreshScope //支持Nacos的动态刷新功能。
//
//DefaultProperties(defaultFallback globalFallBackInfo)
public class OrderConsumerController {Value(${service-url.nacos-user-service})private String serverURL;Autowiredprivate OrderConsumerService orderConsumerService;GetMapping(value /consumer/payment/nacos/{id})// HystrixCommand(fallbackMethod dealFallBackInfo,commandProperties {// HystrixProperty(nameexecution.isolation.thread.timeoutInMilliseconds,value1500)// })public String paymentInfo(PathVariable(id) Long id){System.out.println(获取服务器配置信息serverUrl:serverURL);System.out.println(9008的controller获取id:id);String strorderConsumerService.getPaymentByIdLjf22222(id);return ok:serverURLstr;}GetMapping(value /consumer/getinfo/{id})// HystrixCommandpublic Object getUserInfo(PathVariable(id) Long id){User unew User(id.intValue(),beijingid);// int age 10/0;return orderConsumerService.postQueryParams(u);}public String dealFallBackInfo(PathVariable(id) Long id){return 我是消费者9008,服务出错了进行服务降级id;}public String globalFallBackInfo(){return Global异常处理信息请稍后再试客户端9008;}
}4.2 service
package com.ljf.mscloud.service;import com.ljf.mscloud.model.User;
import feign.Headers;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;Component
FeignClient(value mscloud-fegin-nacos-hystrix-provider9009,fallback PaymentFallbackService.class)
public interface OrderConsumerService {GetMapping(value /ljf/getinfo/{yyid}) //相当于public String getPaymentByIdLjf22222(PathVariable(yyid) Long ssid);// Headers({Content-Type: application/json})// PostMapping(/path)PostMapping(value /path,consumes application/json)String postQueryParams(RequestBody User user);
}4.3 fallback实现类
Component
public class PaymentFallbackService implements OrderConsumerService{Overridepublic String getPaymentByIdLjf22222(Long ssid) {return getPaymentByIdLjf22222方法出现问题开始降级;}Overridepublic String postQueryParams(User user) {return postQueryParams方法出现问题开始降级;}
} 4.4 配置文件 4.5 测试
1.故意只启动 consuemr9008不启动provider9009 模拟宕机的情况
2.测试