Spring Cloud(Hystrix)使用

熔断器:

1.创建项目

2.在pom.xml中加入依赖:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
		
		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>

3.配置yml文件:

server:
  port: 8030 
eureka:
  instance:                   #定义Eureka实例
    hostname: localhost #Eureka实例所在的主机名
    prefer-ip-address: true
    
  client:
    service-url:
      defaultZone:
        http://localhost:8761/eureka/
    
spring:
  application:
    name: microservice-user-hystrix    #名字

4.在启动类添加注解开启熔断器功能:@EnableCircuitBreaker

package com.itheima.microserviceuserhystrix;

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
public class MicroserviceUserHystrixApplication {

	public static void main(String[] args) {
		SpringApplication.run(MicroserviceUserHystrixApplication.class, args);
	}
	
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

}

5.在控制器类添加注解@@HystrixCommand(fallbackMethod = "fallbackinfo")指定回调函数,并添加回调函数:

package com.itheima.microserviceuserhystrix.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

@RestController
public class UserController {	
	@Autowired
	private RestTemplate restTemplate;
	//根据用户查找订单
	@GetMapping("/findOrderByUser/{id}")
	@HystrixCommand(fallbackMethod = "fallbackinfo")
	public String findOrderByUser(@PathVariable String id) {
		//假设用户只有一个订单,订单id为123
		int oid = 123;
		return this.restTemplate.getForObject("http://microservice-order/1", String.class);
	}
	
	public String fallbackinfo(@PathVariable String id) {
		return "服务不可用,请稍后再试!";
	}
}

6.启动eureka,order(7900),order(7901),user-hystrix,浏览器访问:

成功显示数据

失败显示回调内容

Hystrix Dashboard使用:

1.在pom.xml加入依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

2.6.启动eureka,order(7900),order(7901),user-hystrix,浏览器访问:

http://localhost:8030/findOrderByUser/1

http://localhost:8030/hystrix.stream

在未访问第一个url之前返回都是ping,访问后返回数据:

虽然可以实时监控数据,但是可读性太差,Hystrix Dashboard是Hystrix的一个组件,Hystrix Dashboard提供了数据监控和友好的图形化界面。

1.建立工程microservice-hystrix-dashboard

2.pom.xml增加依赖

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
        </dependency>
		

3.修改yml文件:

server:
  port: 8031
  
spring:
  application:
    name: microservice-hystrix-dashboard    #名字

4.启动类添加注解:@@EnableHystrixDashboard

package com.itheima.microservicehystrixdashboard;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@SpringBootApplication
@EnableHystrixDashboard
public class MicroserviceHystrixDashboardApplication {

	public static void main(String[] args) {
		SpringApplication.run(MicroserviceHystrixDashboardApplication.class, args);
	}
}

5.启动,并访问:http://localhost:8031/hystrix.stream

6.增加监控

点击Monitor Stream:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值