1. 程式人生 > >系列4-springCloud微服務-Hystrix熔斷器

系列4-springCloud微服務-Hystrix熔斷器

1.新增服務端的熔斷器步驟1:修改服務端pom檔案,新增對Hystrix元件的引用。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
步驟2:修改服務端Controller類中的方法,在方法上新增@HystrixCommand(fallbackMethod="getUserInfoFallBack")註解,fallbackMethod的值是在該方法出現異常後,要呼叫的方法名稱,
注意,回撥防範的引數列表應與本方法一致
@RequestMapping("/dept/user")@HystrixCommand(fallbackMethod="getUserInfoFallBack") public UserBean getUserInfo(){ UserBean bean = null;//new UserBean(); if(bean==null){ throw new RuntimeException("物件不存在"); } //bean.setUserId("8809"); //bean.setUserName("我是8809服務的使用者"); return bean;
} public UserBean getUserInfoFallBack(){ UserBean bean = new UserBean(); bean.setUserId("fallback"); bean.setUserName("我是fallback服務的使用者"); return bean; }
步驟3:在服務端的啟動類上添加註解@EnableCircuitBreaker,啟動服務即可。
@SpringBootApplication@EnableEurekaClient@EnableDiscoveryClient@EnableCircuitBreakerpublic class UtralServiceApplication {
public static void main(String[] args) { SpringApplication.run(UtralServiceApplication.class, args); }}
2.新增feign的熔斷器(服務降級)步驟1:在feign的service元件中增加對於介面的回撥類。實現FallbackFactory介面,並新增上@Component註解,實現FallbackFactory介面的方法,並在方法中建立匿名的服務介面物件,並新增上降級服務的方法實現,當服務端無法訪問時,會降級呼叫此方法
@Componentpublic class IDeptClientServiceFallBack implements FallbackFactory<IDeptClientService> { @Override public IDeptClientService create(Throwable arg0) { return new IDeptClientService(){ @Override public String getSessionId() { return "feign9999"; } @Override public UserBean getUser() { UserBean bean = new UserBean(); bean.setUserId("feignfallbackID9999"); bean.setUserName("feignfallbackName"); return bean; } }; }}
步驟2:修改service元件中的服務介面,在註解@FeignClient中新增上面建立的類
@FeignClient(value="SPRINGCLOUD-ULTRASERVICE",configuration=FeignClientConfig.class,fallbackFactory=IDeptClientServiceFallBack.class)public interface IDeptClientService { @RequestMapping(method=RequestMethod.GET,value="/dept/sessionId") public String getSessionId(); @RequestMapping(method=RequestMethod.GET,value="/dept/user") public UserBean getUser();}
步驟3:修改feign元件中的啟動類的註解@ComponentScan("com.ultrapower.service,com.ultrapower.idaa")新增對這兩個包的掃描,第一個包是掃描service介面,第二個包是掃描feign元件自己的服務。
@SpringBootApplication@EnableEurekaClient@ComponentScan("com.ultrapower.service,com.ultrapower.idaa")@EnableFeignClients(basePackages={"com.ultrapower.service"})public class FeignApplication { public static void main(String[] args) { SpringApplication.run(FeignApplication.class, args); }}
步驟4:修改feign元件中的application.yml檔案,追加feign對於熔斷器的啟用,注意:此處設定僅適用與springCloud-Dalston以上版本,以下版本不需要此設定即可以啟動,由於現在版本原因,在設定如下配以以後,編譯器會有告警提示,但是可以忽略。
feign: hystrix: #由於版本原因,此處會報告警 enabled: true
3.新增dashboard監控元件步驟1:建立一個dashboard元件做監控,pom檔案中新增如下引用:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
步驟2:建立dashboard元件的啟動類,並在啟動類上新增@EnableHystrixDashboard註解,實現dashboard監控
@SpringBootApplication@EnableHystrixDashboardpublic class HystrixDashboardApplication { public static void main(String[] args) { SpringApplication.run(HystrixDashboardApplication.class, args); }}
步驟3:修改所有的服務端pom,追加上監控元件包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
步驟4:修改dashboard元件的application.yml配置檔案,新增上啟動埠
server: port: 9001
步驟5:啟動所有的服務,訪問dashboard介面根據自己的微服務地址,替換成如下格式,填入頁面的地址框中,會得到如下資訊4.新增turbine聚合監控元件步驟1:建立turbine的模組,修改pom檔案
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
步驟2:修改application.yml檔案,設定埠,及進行Eureka註冊,並設定turbine監控的服務列表,以及監控表示式。
server: port: 9100eureka: client: serviceUrl: defaultZone: http://ejava:[email protected]:8000/eureka/turbine: app-config: SPRINGCLOUD-IDAASERVICE,SPRINGCLOUD-ULTRASERVICE #定義要監控的微服務的名稱,特別多的時候可以用“*” cluster-name-expression: new String("default") #設定監控表示式,根據表示式獲取監控資訊名稱
步驟3:修改turbine模組啟動類,新增對turbine和dashboard支援的註解
@SpringBootApplication@EnableHystrixDashboard@EnableTurbinepublic class HystrixDashboardApplication { public static void main(String[] args) { SpringApplication.run(HystrixDashboardApplication.class, args); }}
步驟4:啟動所有的服務,將turbine的監控地址放到dashboard中,就可以進行所有的服務監控。如果監控服務使用的安全認證,則需要進行服務放行步驟5:修改安全認證模組的安全認證類,追加如下操作,訪問即可
@Override public void configure(WebSecurity web) throws Exception { //設定可放行服務,對監控程式放行 web.ignoring().antMatchers("/hystrix.stream","turbine.stream"); }

相關推薦

系列4-springCloud服務-Hystrix熔斷器

1.新增服務端的熔斷器步驟1:修改服務端pom檔案,新增對Hystrix元件的引用。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId&g

Spring cloud服務 Hystrix熔斷器學習教程

       以下demo程式碼:https://github.com/wades2/HystrixtDemo        官網定義:Hystrix是一個延遲容錯庫。在分散式環境中,許多服務依賴項中的一些不可避免地

系列6-springCloud服務-config配置中心

config配置中心分為服務端和客戶端,服務端根據檔案儲存位置分為三種設定方式:git\githupSVN本地儲存其中git\githup,SVN的設定方式基本一樣。此處僅記錄git的設定,githup與git的設定完全一樣。1.config Server基於git步驟1:本

系列7-springCloud服務-服務匯流排Bus

1.服務端搭建步驟1:新建【springCloud-bus】修改pom檔案,新增如下內容:<dependency> <groupId>org.springframework.cloud</groupId> <artifactI

系列5-springCloud服務--zuul代理實現

1.zuul代理服務配置步驟1:新建zuul服務模組,修改pom檔案,新增如下依賴:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId&g

springCloud服務系列——OAuth2+JWT模式下的feign+hystrix處理

       之前的文章說了一下JWT模式下feign呼叫其他服務的時候,怎麼通過一個方法使得http請求頭的資訊傳遞到被調服務中。當然也可以用@RequestHeader註解,但是這樣並不是太好,因為我們希望有一個全域性的處理。這些問題可以參看之前的文章。       這篇

SpringCloud-服務-熔斷器Hystrix-使用時遇到的問題

使用時候遇到的問題: 對應的配置: package com.nick.movie.service; import com.nick.movie.service.impl.MicroCloudS

springcloud服務實戰:Eureka+Zuul+Ribbon+Hystrix+SpringConfig

app 支持 pro def ipa not color ins enable 原文地址:http://blog.csdn.net/yp090416/article/details/78017552 springcloud微服務實戰:Eureka+Zuul+Ribbon

從零開始,輕松搞定SpringCloud服務系列

markdown class net 配置中心 html div .html href .com 本系列博文目錄 【微服務】之一:從零開始,輕松搞定SpringCloud微服務系列–開山篇(spring boot 小demo) 【微服務】之二:從零開始,輕松搞定Spring

springcloud服務系列——服務網關組件Zuul

extends version iter tput tar lte aps 新工程 err 前言 通過前幾篇教程的介紹,我們基本上認識了構建一個微服務系統所需要的組件,通過這些組件的結合,我們已經可以搭建一個較為簡略的微服務系統了,比如下面的架構圖: https://im

springcloud服務系列服務註冊與發現組件Eureka

顯示 功能 depend mod 其他 瀏覽器 使用 空間 之間 一、Eurake的簡介二、使用Eureka進行服務的註冊消費1、創建一個服務註冊中心2、創建服務的提供者3、創建服務的消費者總結 一、Eurake的簡介 今天我們來介紹下springcloud的核心組件Eur

SpringCloud服務基礎4:Feign

        Spring Cloud Feign是一套基於Netflix Feign實現的宣告式服務呼叫客戶端。它使得編寫Web服務客戶端變得更加簡單。我們只需要通過建立介面並用註解來配置它既可完成對Web服務介面的繫結。它具備可插拔的註解支援,包括Fei

SpringCloud服務hystrix(六)

前言 本小結我們來學習一下使用Turbine來聚合各個服務節點的Hystrix.stream資訊。 案例 Eureka Server端編寫(參考前例)。 Eureka Client端服務提供方編寫(參考:SpringCloud微服務 之hystrix(五

SpringCloud服務hystrix(五)

前言 本小節將學習一下Hystrix的Dashboard。Hystrix Dashboard是Hystrix的儀表盤元件,主要用來實時監控Hystrix的各項指標資訊,通過介面反饋的資訊可以快速發現系統中存在的問題,即服務節點實現Hystrix Metrics Stream,然後通過

SpringCloud服務hystrix(四)

前言 前一小節我們學習瞭如何在FeignClient中開啟Hystrix的熔斷機制,並實現了fallback方法。本小節我們將學習一下 如何在FeignClient中開啟Hystrix的熔斷機制並以FallbackFactory地方式返回fallback方法。 Fallb

SpringCloud服務hystrix(三)

前言 本小節我們學習一下如何是Feign擁有Hystrix的熔斷功能。 案例 Eureka Server端編寫(參考前例)。 Eureka Client端服務提供方編寫。 專案結構 CoreCode <?xml

SpringCloud服務hystrix(一)

本小節我們將學習一下Hystrix。 什麼是Hystrix hystrix對應的中文名字是“豪豬”,豪豬周身長滿了刺,能保護自己不受天敵的傷害,代表了一種防禦機制,這與hystrix本身的功能不謀而合,因此Netflix團隊將該框架命名為Hystrix,並使用了對應的卡通形

SpringCloud服務hystrix(二)

前言 上一小節為我們從概念上認識了Hystrix,本小節我們將通過例項來學習一下Hystrix的熔斷機制以及Hystrux的斷路器。 案例 Eureka Server端編寫(參考前例) Eureka Client端服務提供方編寫。

SpringCloud服務ribbon restTemplate hystrix feign eureka框架搭建

少年我知道你看講解煩,來吧github:https://github.com/singgel/Spring-SkillTree 一、微服務架構 1.1什麼是分散式 不同模組部署在不同伺服器上 作用:分散式解決網站高併發帶來問題   1.2什麼是叢集 多臺伺服器部

SpringCloud服務雲架構構建B2B2C電子商務平臺之-(四)斷路器(Hystrix

在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以相互呼叫(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來呼叫。為了保證其高可用,單個服務通常會叢集部署。由於網路原因或者自身的原因,服務並不能保證100%可用,如果單個服務出現問題,呼叫這