1. 程式人生 > >【SpringCloud】(十一):超時機制和斷路器及 Hystrix簡單實踐

【SpringCloud】(十一):超時機制和斷路器及 Hystrix簡單實踐

  上篇文章我們配置了Eureka叢集,實現了高可用。在微服務框架中,一個服務消費者可能是其他服務消費者的提供者,而當低層次的服務提供者出現問題時,會導致系統資源被耗盡。出現雪崩效應。

Hystrix是解決解決方案的實踐。


消費者服務:microservice-comsumer-movie-ribbon-withhystrix

1.POM.xml中加入依賴

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

2.在啟動來上加入註解:

@EnableCircuitBreaker

3.Controller中加入註解和失敗呼叫方式

package com.dynamic.cloud.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
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.dynamic.cloud.entity.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

@RestController
public class MovieController {
	@Autowired
	private RestTemplate restTemplate;
	
	@GetMapping("/movie/{id}")
	@HystrixCommand(fallbackMethod = "findByIdFallback")
	public User findById(@PathVariable Long id) {
		return this.restTemplate.getForObject("http://microservice-provider-user/simple/" + id, User.class);
	}

	public User findByIdFallback(Long id) {
		User user = new User();
		user.setId(0L);				
		return user;
	}

}

4.配置檔案 application.yml

server:
  port: 7901

spring:
  application:
    name: microservice-comsumer-movie-ribbon
  
eureka:
  client:
    serviceUrl:
      defaultZone: http://user:[email protected]:8761/eureka
  instance: 
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
#hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000

啟動Eureka,使用者微服務,電影微服務。

直接訪問,出現數據訪問成功,而當我們把使用者微服務停掉的時候,再次訪問就會走我們的fallbackMethod配置的方法。


相關推薦

SpringCloud超時機制斷路器 Hystrix簡單實踐

  上篇文章我們配置了Eureka叢集,實現了高可用。在微服務框架中,一個服務消費者可能是其他服務消費者的提供者,而當低層次的服務提供者出現問題時,會導致系統資源被耗盡。出現雪崩效應。 Hystri

TeeChart Pro ActiveX教程縮放滾動

下載TeeChart Pro ActiveX最新版本 如何使用滑鼠進行縮放和滾動 縮放 要放大圖表,請在要放大的區域的左上角按住滑鼠左鍵並按住滑鼠按鈕,將矩形拖動到縮放區域的右下角。釋放滑鼠按鈕,圖表將重繪所選區域。 要撤消縮放,請在“Chart”區域的任意位置按滑鼠左鍵,然後按住滑鼠按鈕向上和向左

SpringCloudFeign對Hystrix的支援 fallbackFactory

  前面的文章中提到了fallback,這裡我們描述一個它的增強版。fallbackFactory。都是實現斷路器的功能。 UserFeignClient package com.dynam

SpringCloudZuul的基本應用,反向代理負載均衡

  Router and Filter: Zuul。 Zuul is a JVM based router and server side load balancer by Netflix。   Zu

Mask R-CNN程式碼理解inspect_model.ipynb

一、導包 import os import sys import random import math import re import time import numpy as np import tensorflow as tf import matplotlib im

原創Linux記憶體管理slub分配器

背景 Read the fucking source code! --By 魯迅 A picture is worth a thousand words. --By 高爾基 說明: Kernel版本:4.14 ARM64處理器,Contex-A53,雙核 使用工具:Source Insight 3.5,

java基礎學習總結自動裝箱自動拆箱

自動拆箱和自動裝箱 Java為每種基本資料型別都提供了對應的包裝器型別。舉個例子: public class TestMain { public static void main(String[] args) { Integer i = 10; } }

Java語言學習列舉型別泛型

    Java中一個重要的型別:列舉,它可以用來表示一組取值範圍固定的變數,使用 enum 關鍵字定義列舉型別,其中元素不能重複,通常大寫表示。利用Java的反射機制,可以在執行時分析類,如檢視列舉型別的修飾符、父類和自定義方法等,下面簡單說下。    

linuxValgrind工具集詳解Massif堆分析器

一、概述 Massif是一個堆分析器。它統計程式使用的堆記憶體大小(由malloc等函式分配的記憶體)。預設情況下不統計程式所使用的所有記憶體,如果想統計所有記憶體,需要使用選項–pages-as-heap=yes。 堆分析可以幫助減少程式使用的記憶體。如果分配的記憶體還沒有釋放

GANs學習筆記DCGAN、ImprovedDCGAN

在這一部分我們開始探討generator與discriminator內部網路的結構,之前我們一直在探討二者在外部的連線方式和如何使用divergence能讓結果更好,而涉及到generator與discriminator本身時一直粗略地描述成神經網路,但其實,

TeeChart Pro ActiveX教程列印圖表

下載TeeChart Pro ActiveX最新版本 標準列印 TeeChart Pro提供標準列印方法,可將“螢幕圖表”按原樣列印到印表機。 簡單列印命令 要列印圖表,請使用Print方法。這將打印出螢幕上顯示的圖表: [C#] tChart1.Printer.Print(); [VB.N

EF學習筆記實施繼承

long cannot oid data- turn cati com list pac 學習總目錄:ASP.NET MVC5 及 EF6 學習筆記 - (目錄整理) 上篇鏈接:EF學習筆記(十) 處理並發 本篇原文鏈接:Implementing Inheritance 面

DockerDocker實戰部署HTTPS的Tomcat站點

pos 容器 image avi tor 基礎 oot stat ask 1、選擇基礎鏡像    docker pull tomcat:7.0-jre8 2、生成HTTPS證書   keytool -genkey -alias tomcat -keyalg RSA -key

R語言學習筆記廣義線性模型

學習筆記 Education 5.0 1.3 style only 可能性 div erro #Logistic 回歸 install.packages("AER") data(Affairs,package="AER") summary(Affairs) a

Python+Selenium筆記配置selenium Grid

find arch 自己 {} get 說明 前言 mon AC (一) 前言 Selenium Grid可以將測試分布在若幹個物理或虛擬機器上,從而實現分布方式或並行方式執行測試。 這個鏈接是官方的相關說明。 https://github.com/SeleniumHQ/s

Python筆記多線程

st2 pv操作 出現 end 談話 col 隊列大小 == done (二)和(三)不感興趣的可以跳過,這裏參考了《深入理解計算機系統》第一章和《Python核心編程》第四章 (一) 多線程編程 一個程序包含多個子任務,並且子任務之間相互獨立,讓這些子任務同時運

hadoop學習筆記MapReduce數據類型

筆記 ash all 記錄 write 一個 操作 png bool 一、序列化 1 hadoop自定義了數據類型,在hadoop中,所有的key/value類型必須實現Writable接口。有兩個方法,一個是write,一個是readFileds。分別用於讀(反序列化操

Android項目實戰moveTaskToBack(boolean ) 方法的使用

android項目 androi ID cti 項目實戰 htm www style 順序 原文:Android項目實戰(十一):moveTaskToBack(boolean ) 方法的使用當你開發的程序被按後退鍵退出的時候, 你肯定不想讓他就這麽被finish()吧,那麽

IntelliJ IDEA Debug的使用

答案 停止 mar val 圖標設計 art style 打印 top Debug模式是開發人員必會的一項調試程序的技能,用來追蹤代碼的運行流程,線上問題追蹤,程序運行異常定位調試,以及在運行過程中參數的變化。IDEA的debug對於新手如何快速上手呢? 一、基本介紹

javaweb學習筆記JSP1

目錄 jsp(1) 1.基本概念 1 .1Jsp的執行過程 1.2 JSP與servlet 2 JSP語法 2.1 Jsp模板 2.2 Jsp表示式 2.3 Jsp指令碼 2.4 Jsp宣告 2.5 Jsp註釋 jsp(1) 1.基本