91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[Spring cloud 一步步實現廣告系統] 3. 網關路由

發布時間:2020-07-09 04:00:02 來源:網絡 閱讀:407 作者:zhangpan0614 欄目:編程語言
Zuul(Router and Filter)

WIKI: 傳送門

[Spring cloud 一步步實現廣告系統] 3. 網關路由

作用
  1. 認證,鑒權(Authentication/Security)
  2. 預判(Insights)
  3. 壓力測試(Stress Testing)
  4. 灰度/金絲雀測試(Canary Testing)
  5. 動態路由(Dynamic Routing)
  6. 服務遷移(Service Migration)
  7. 降低負載(Load Shedding)
  8. 靜態響應處理(Static Response handling)
  9. 主動/主動交換管理(Active/Active traffic management)

關鍵配置:

The configuration property zuul.host.maxTotalConnections and zuul.host.maxPerRouteConnections, which default to 200 and 20 respectively.

創建mscx-ad-zuul

三步曲創建法:

添加依賴
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
加注解
@SpringCloudApplication
@EnableZuulProxy //啟用網關
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}
改配置
spring:
  application:
    name: ad-gateway-zuul
server:
  port: 1111
eureka:
  client:
    service-url:
      defaultZone: http://server1:7777/eureka/,http://server2:8888/eureka/,http://server3:9999/eureka/
  instance:
    hostname: ad-gateway-zuul
zuul:
  ignored-services: '*' # 過濾所有請求,除了下面routes中聲明過的服務
  routes:
    sponsor: #在路由中自定義服務路由名稱
      path: /ad-sponsor/**
      serviceId: mscx-ad-sponsor #微服務name
      strip-prefix: false
    search: #在路由中自定義服務路由名稱
      path: /ad-search/**
      serviceId: mscx-ad-search #微服務name
      strip-prefix: false
  prefix: /gateway/api
  strip-prefix: false #不對 prefix: /gateway/api 設置的路徑進行截取,默認轉發會截取掉配置的前綴
過濾器編寫

我們來編寫一個記錄請求時間周期的過濾器,根據Filter的三種類型:Pre filters,routing filtersPost filters,我們需要定義2個filter,用來記錄開始和結束時間,很明顯,我們需要實現Pre & Post2個過濾器。

@Slf4j
@Component
public class PreRequestFilter extends ZuulFilter {
    @Override
    public String filterType() {
        // pre filter
        return FilterConstants.PRE_TYPE;
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {
        //獲取當前請求的請求上下文
        RequestContext requestContext = RequestContext.getCurrentContext();
        //記錄請求進入時間
        requestContext.set("api_request_time", System.currentTimeMillis());
        return null;
    }
}

---

@Slf4j
@Component
public class AccessLogFilter extends ZuulFilter {

    @Override
    public String filterType() {
        return FilterConstants.POST_TYPE;
    }

    @Override
    public int filterOrder() {
        //需要最后一個執行的filter
        return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 1;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {
        RequestContext requestContext = RequestContext.getCurrentContext();
        HttpServletRequest request = requestContext.getRequest();
        log.info("Request \"{}\" spent : {} seconds.", request.getRequestURI(),
                (System.currentTimeMillis() - Long.valueOf(requestContext.get("api_request_time").toString())) / 1000);
        return null;
    }
}
Gateway

后續更新

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮滨县| 漯河市| 岳池县| 临沧市| 天门市| 通城县| 依安县| 安平县| 岚皋县| 建宁县| 玛沁县| 随州市| 临潭县| 调兵山市| 米林县| 兴国县| 额敏县| 连城县| 弥渡县| 介休市| 奉新县| 休宁县| 海阳市| 庆安县| 萝北县| 青铜峡市| 灯塔市| 资讯| 宜章县| 泰州市| 定兴县| 绵竹市| 分宜县| 广河县| 汝阳县| 汉中市| 旌德县| 乐山市| 洛川县| 珲春市| 西乡县|