日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java B2B2C源码电子商务平台 - Zuul回退机制

發布時間:2024/9/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java B2B2C源码电子商务平台 - Zuul回退机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、在一些不穩定因素導致路由后面的微服務宕機或者無響應時,zuul 就會累計大量的請求,久而久之基本上所有的請求都會超時,但是請求鏈接數卻不斷的在增加,不斷的占用資源池不能結束知道超時消耗殆盡導致zuul微服務死機,整體掛機消亡;需要了解電子商務平臺源碼可加企鵝邱邱 一零三八七七四六二六

2、而 zuul 在這種情況下,提供一種很好的回退機制,針對大量請求時提供了友好的熔斷機制,確保在路由微服務修復前,盡量將過多的請求快速響應返回,減輕zuul的壓力;

3、在本章節,我們對上面發生的這種普遍現象做了一種簡單的回退處理,有效降低微服務的壓力,還可以友好的提示給前端用戶,或者調用方;

二、實現步驟

2.1 添加 maven 引用包

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>springms-gateway-zuul-fallback</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>com.springms.cloud</groupId><artifactId>springms-spring-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><dependencies><!-- API網關模塊 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId></dependency><!-- 客戶端發現模塊,由于文檔說 Zuul 的依賴里面不包括 eureka 客戶端發現模塊,所以這里還得單獨添加進來 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency></dependencies></project>復制代碼

2.2 添加應用配置文件

spring:application:name: springms-gateway-zuul-fallback server:port: 8200 eureka:datacenter: SpringCloud # 修改 http://localhost:8761 地址 Eureka 首頁上面 System Status 的 Data center 顯示信息environment: Test # 修改 http://localhost:8761 地址 Eureka 首頁上面 System Status 的 Environment 顯示信息client:service-url:defaultZone: http://admin:admin@localhost:8761/eurekahealthcheck: # 健康檢查enabled: trueinstance:prefer-ip-address: trueinstance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}zuul:ignoredServices: springms-consumer-movie-ribbon-with-hystrixroutes:springms-provider-user: /user/**# 打印日志 logging:level:root: INFOcom.springms: DEBUGribbon:ConnectTimeout: 3000ReadTimeout: 60000 復制代碼

2.3 添加zuul回退處理類

package com.springms.cloud.fallback;import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpResponse; import org.springframework.stereotype.Component;import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream;@Component public class CustomZuulFallbackHandler implements ZuulFallbackProvider {@Overridepublic String getRoute() {return "springms-provider-user";}@Overridepublic ClientHttpResponse fallbackResponse() {return new ClientHttpResponse() {@Overridepublic HttpStatus getStatusCode() throws IOException {return HttpStatus.BAD_REQUEST;}@Overridepublic int getRawStatusCode() throws IOException {return HttpStatus.BAD_REQUEST.value();}@Overridepublic String getStatusText() throws IOException {return HttpStatus.BAD_REQUEST.getReasonPhrase();}@Overridepublic void close() {}@Overridepublic InputStream getBody() throws IOException {return new ByteArrayInputStream((getRoute() + " fallback").getBytes());}@Overridepublic HttpHeaders getHeaders() {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);return headers;}};} } 復制代碼

2.4 添加zuul服務網關微服務啟動類

package com.springms.cloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@SpringBootApplication @EnableZuulProxy public class MsGatewayZuulFallbackApplication {public static void main(String[] args) {SpringApplication.run(MsGatewayZuulFallbackApplication.class, args);System.out.println("GatewayZuulFallback微服務 已啟動.");} } 復制代碼

三、測試

Zuul 路由后面的微服務掛了后,Zuul 提供了一種回退機制來應對熔斷處理:

1、編寫 application.yml 文件,添加應用程序的注解 EnableZuulProxy 配置;

2、啟動 springms-discovery-eureka 模塊服務,啟動1個端口;

3、啟動 springms-provider-user 模塊服務,啟動1個端口(application.yml 文件中的 appname 屬性不去掉的話,測試一是無法測試通過的);

4、啟動 springms-gateway-zuul-fallback 模塊服務,啟動1個端口;

5、新起網頁頁簽,輸入 http://localhost:7900/simple/3 正常情況下是能看到 ID != 0 一堆用戶信息被打印出來;

6、新起網頁頁簽,然后輸入 http://localhost:8200/springms-provider-user/simple/3,正常情況下是能看到 ID != 0 一堆用戶信息被打印出來;

7、這個時候,停止 springms-provider-user 模塊服務;

8、刷新 http://localhost:8200/springms-provider-user/simple/3 網頁,正常情況下會提示 “fallback” 字樣的字符串;

9、待用戶微服務被踢出后,刷新 http://localhost:8200/springms-provider-user/simple/3 網頁,正當情況下會提示 404 錯誤頁面,因為用戶微服務由于宕機超過大約90秒后會自動被 eureka 服務器剔除掉,所以訪問網頁必然找不到服務路徑;

總結:首先 Zuul 作為路由轉發微服務,其也提供了一種熔斷機制,避免大量請求阻塞在路由分發處;其次當注冊進入 eureka 服務治理發現框架后,一定時間后還沒有連上eureka時,這個時候eureka就會將這個宕機的微服務移除服務治理框架;java B2B2C源碼電子商務平臺

總結

以上是生活随笔為你收集整理的java B2B2C源码电子商务平台 - Zuul回退机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。