php熔断机制,springcloud熔断机制(示例代码)
熔断机制,指的是微服务架构中,由于某个服务瘫痪,为避免影响整个系统而采取的降级服务
简述:
由于网络或自身原因,服务不能确保一定可用。如果某个服务出现了问题,调用方的大量请求会使Servlet容器的线程资源被耗尽,导致服务瘫痪。而且这种故障会传播,进而威胁到这个微服务系统可用性
示例如下:基于springboot1.5.10
添加依赖:
org.springframework.boot
spring-boot-starter-web
1.5.10.RELEASE
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
1.4.3.RELEASE
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
1.4.3.RELEASE
application配置
server:
port: 8901 #程序启动端口,也是Tomcat端口
spring:
application:
name: customer-order-hystrix #应用别名
eureka:
client:
service-url:
defaultZone: http://user:123@localhost:10000/eureka
instance:
instance-id: ${spring.cloud.client.ipAddress}:${spring.application.name}:${spring.application.instance_id:${server.port}}
prefer-ip-address: true
启动类
@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker //启用熔断
public class CustomerHystrixApplication
{
@Bean
public RestTemplate getTemp(){
return new RestTemplate();
}
public static void main( String[] args )
{
SpringApplication.run(CustomerHystrixApplication.class,args);
System.out.println("customer start-up success");
}
}
实体类
public class User {
private Long id;
private Date date;
public User() {
}
public User(Long id) {
this.id = id;
this.date = new Date();
}
public void setId(Long id) {
this.id = id;
}
public void setDate(Date date) {
this.date = date;
}
public Long getId() {
return id;
}
public Date getDate() {
return date;
}
Controller
@RestController
public class CustomeController {
@Autowired
private EurekaClient eurekaClient;
@Autowired
private RestTemplate restTemplate;//springboot提供的用于访问rest接口的对象
@GetMapping("/order/{id}")
@HystrixCommand(fallbackMethod = "errora1")
public User getOrder(@PathVariable Long id){
InstanceInfo instanceInfo = eurekaClient.getNextServerFromEureka("provider-user", false);
String homePageUrl = instanceInfo.getHomePageUrl();
// 访问提供者,获取数据
User user = restTemplate.getForObject(homePageUrl+"/user/" + id,User.class);//通过访问rest获取json数据,然后转换成user对象
return user;
}
/**
* 失败后执行的回调函数
* @param id
* @return
*/
public User errora1(Long id) {
User user = new User();
user.setId(-1000L);
user.setDate(new Date());
return user;
}
}
注:回调函数和其使用者应返回相同的类型,这里省略了服务提供者模块 provider-user
php熔断机制,springcloud熔断机制(示例代码)相关推荐
- php数据库连接重试机制,SpringCloud重试机制配置详解
首先声明一点,这里的重试并不是报错以后的重试,而是负载均衡客户端发现远程请求实例不可到达后,去重试其他实例. @Bean @LoadBalanced RestTemplate restTemplate ...
- 微软发布Visual Studio 2012 示例代码浏览器
示例代码对于开发人员的重要性是不言而喻的.很多程序员往往通过示例代码着手学习一门技术.当开发人员遇到编码困难时也往往希望得到示例代码来解决疑难杂症.示例代码可谓是开发人员的良师益友,为程序员的学习和工 ...
- SpringCloud熔断机制大概什么意思
什么是springcoud的熔断机制,熔断机制是对分布式架构项目的一种起到保护作用的手段或者机制,就像继电器里面的保险丝,到达某个临界点就会自动熔断保险丝,以达到保护电路的作用,切换到SpringCl ...
- SpringCloud微服务的熔断机制和熔断的意义?
什么是微服务的熔断机制 在2017年2月1日,GitLab公司的运维人员就出现过这样的事故.当时运维人员在进行数据库维护时,通过执行rm -rf命令,删除了约300GB生产环境数据.由于数据备份失效, ...
- asp.net网站图片防盗链机制示例代码
经常大家都会在某些网站上看到,该图片属于XXX网站,请到XXXX浏览的一张图片,其实这是一张外链图片,什么意思呢?就是该图片实际上是不属于这个网站的,这个网站只是造了一个图片的链接来显示图片,但是对方 ...
- feign直接走熔断_121 SpringCloud之服务熔断、隔离、Hystrix、 Dashboard和turbine
1. 解决灾难性雪崩效应-服务熔断-服务熔断处理 (1) 熔断参数circuitBreaker.enabled的作用是什么? 是否开启熔断 (2) 熔断参数circuitBreaker.request ...
- 手写springcloud|熔断 hystrix
文章目录 手写springcloud|熔断hystrix github示例代码 服务调用和熔断的方式 熔断的流程 Spring Cloud Hystrix 熔断细节 基本步骤 原版使用核心代码 实现过 ...
- 【我们为什么用高斯机制?】差分隐私代码实现系列(七)
差分隐私代码实现系列(七) 写在前面的话 回顾 松弛差分隐私(Approximate Differential Privacy) 高斯机制(The Gaussian Mechanism) 矢量值函数及 ...
- SpringCloud熔断降级Hystrix详解
参考文档:https://www.cnblogs.com/qdhxhz/p/9581440.html 一.概念 为什么需要熔断降级? 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服 ...
最新文章
- java练习:打印 数字1、2、3、4的组合,不能以4开头,1和3不能相邻,且数字不能重复
- PostgreSQL学习手册(五) 函数和操作符
- 5G毫米波三大自然缺陷
- 服务器图文消息发送规则,群发图文规则 - CurtainRight的个人空间 - OSCHINA - 中文开源技术交流社区...
- Spring boot整合rabbitmq
- C#开发笔记之13-如何用C#分隔字符串并返回字符串数组?
- 通过UserAgent判断智能设备(Android,IOS)
- 晚上睡觉的时候应该把wifi关掉吗?
- 《深度学习Python实践》第14章——自动流程
- 用vbs脚本实现软件的自动登录
- 二十一日——美国寻梦
- 计算 变异系数 标准差 标准偏差 相关系数 平滑指数 回归系数等C++ 模板类
- 基于安卓的视频遥控小车——红外遥控部分
- mysql怎么打开db文件_myMySQL数据库的db文件怎么打开? MySQL数据库使用教程
- 在themeforest购买主题获得激活码方法
- html里怎么计算梯形周长公式是什么,梯形的周长怎么计算 梯形周长计算公式
- Sketch Less for More: On-the-Fly Fine-Grained Sketch Based Image Retrieval (CVPR 2020 Oral)
- 滑膜炎的表现、诊断与治疗
- 基于java springboot mysql百度地图的信息标注系统--桌面端的设计与实现
- 09 Confluent_Kafka权威指南 第九章:管理kafka集群
热门文章
- 为什么选择SpringCloud Gateway(SCG)
- 要对象存储做什么?我有女朋友就够了!!!
- VS2012中lightswitch新功能介绍(beta)
- 可视化软件之Power BI的安装与下载
- oracle symonym_创建Oracle synonym 详解
- python locals动态获取变量名
- JavaScript: switch语句、break\case !
- 高效的敏捷测试第一课 敏捷测试介绍,与传统测试对比
- 【Bluetooth蓝牙开发】一、开篇词 | 打造全网最详细的Bluetooth开发教程
- MySQL高级--个人笔记