您好,登錄后才能下訂單哦!
這篇文章給大家介紹利用Springcloud怎么熔斷hystrix服務(wù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
1.主啟動類加上新的注解。
@EnableCircuitBreaker
2.service寫入新的熔斷控制方法
@Service public class PaymentHystrixService { @HystrixCommand(fallbackMethod = "paymentCircuitBreaker_fallback",commandProperties = { @HystrixProperty(name = "circuitBreaker.enabled", value = "true"), //是否開啟斷路器 @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"), //請求數(shù)達(dá)到后才計算 @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"), //休眠時間窗 @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "60"), //錯誤率達(dá)到多少跳閘 }) public String paymentCirtuitBreaker(@PathVariable("id")Integer id){ if(id<0){ throw new RuntimeException("****id不能為負(fù)數(shù)"); } String randomNum= IdUtil.simpleUUID(); return Thread.currentThread().getName()+"\t"+"調(diào)用成功,編號"+randomNum; } public String paymentCircuitBreaker_fallback(@PathVariable("id")Integer id){ return "id不能為負(fù)數(shù),請稍后重試,o(╥﹏╥)o+"+id; }
此處hystrixCommand注解即是對熔斷的一些限制,一般是在10秒內(nèi)進(jìn)行10次有60%的訪問錯誤率就會進(jìn)行熔斷,自動啟動備用的方法,默認(rèn)5秒后有 正確的執(zhí)行結(jié)果就會慢慢恢復(fù)正常狀態(tài),關(guān)閉斷路器。
3.dashboard
為了能夠更加直觀的看見服務(wù)訪問的一些情況,配置下可視化的網(wǎng)頁觀察熔斷。
新建dashboard工程。
pom文件依賴
<dependencies> <dependency> <groupId>com.bai</groupId> <artifactId>cloud-api-common</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency> <!--監(jiān)控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <!--eureka client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--熱部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
主啟動類
@SpringBootApplication @EnableHystrixDashboard public class HystrixDashboard9001 { public static void main(String[] args) { SpringApplication.run(HystrixDashboard9001.class,args); } }
yml配置下端口即可。
訪問地址
http://localhost:9001/hystrix/
對于被監(jiān)控的服務(wù)需要額外的配置。新版本會有報錯需要在啟動類加上如下配置。
/** * 此配置是為了服務(wù)監(jiān)控而配置,與服務(wù)容錯本身無關(guān),springcloud升級后的坑 * ServletRegistrationBean因為SpringBoot的默認(rèn)路徑不是 “/hystrix.stream" * 只要在自己的項目里配置上下的servlet就可以了 */ @Bean public ServletRegistrationBean getServlet() { HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet() ; ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet); registrationBean.setLoadOnStartup(1); registrationBean.addUrlMappings("/hystrix.stream"); registrationBean.setName("HystrixMetricsStreamServlet"); return registrationBean; }
關(guān)于利用Springcloud怎么熔斷hystrix服務(wù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。