騰訊微服務平臺TSF學習筆記(二)--如何使用spring cloud zuul實現線上流量復制

需求提了n遍了,好好好,那這個需求就由我測試來做

1.在zuul端配置:
●假設provider-mirror是provider-demo的灰度應用

package com.tencent.tsf.msgw.zuul1.filter;import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;import org.slf4j.Logger;public class TrafficCopyFilter extends ZuulFilter {private static final Logger LOG = LoggerFactory.getLogger(TrafficCopyFilter.class);private RestTemplate restTemplate = new RestTemplate();@Overridepublic String filterType() {return "pre";}@Overridepublic int filterOrder() {return 1;}@Overridepublic boolean shouldFilter() {return true;}@Overridepublic Object run() {RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();// 檢查請求是否是發送給服務A的if (request.getRequestURI().contains("/provider-demo")) {LOG.info("復制請求到mirror服務");// 將請求復制到服務BString param = request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/") + 1); // 提取參數String bServiceUrl = "http://svcb host ip:port/echo/" + param; //這里寫mirror服務的鏡像地址,后期可從配置文件中讀入HttpMethod method = HttpMethod.valueOf(request.getMethod());HttpHeaders headers = new HttpHeaders();Enumeration<String> headerNames = request.getHeaderNames();while (headerNames.hasMoreElements()) {String headerName = headerNames.nextElement();headers.add(headerName, request.getHeader(headerName));}HttpEntity<String> entity = new HttpEntity<>(headers);try {restTemplate.exchange(bServiceUrl, method, entity, Void.class);} catch (Exception e) {// 捕獲異常,避免影響客戶端LOG.error("復制請求到mirror服務失敗: {}", e.getMessage());}}return null;}
}

配置類

package com.tencent.tsf.msgw.zuul1.filter;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ZuulConfig {@Beanpublic TrafficCopyFilter trafficCopyFilter() {return new TrafficCopyFilter();}
}

最后,我們會發現,通過zuul請求provider時,流量會被復制到provider-mirror

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161251.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161251.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161251.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

北航計算機學院 嵌入式系統實驗踩坑

今天上課在實驗室配置交叉編譯環境時&#xff0c;用機房的電腦一次就配成功了&#xff0c;但是下課后用自己的電腦裝了一個虛擬機安裝了Ubuntu 22.04系統&#xff0c;卻怎樣也配不成功&#xff0c;后面仔細閱讀文檔才發現&#xff0c;交叉編譯環境arm-linux-gcc居然是32位的&am…

PHP反序列化簡單使用

注&#xff1a;比較簡陋&#xff0c;僅供參考。 編寫PHP代碼&#xff0c;實現反序列化的時候魔法函數自動調用計算器 PHP反序列化 serialize(); 將對象序列化成字符串 unserialize(); 將字符串反序列化回對象 創建類 class Stu{ public $name; public $age; public $sex; publi…

智慧儲能邊緣計算網關應用,提升能源效率

智慧儲能通過邊緣計算網關物聯網技術來實現對儲能電池等設備的在線監控和遠程管理。邊緣計算網關可以將儲能數據轉化為可用的信息&#xff0c;并傳輸到儲能系統中&#xff0c;為儲能管理提供優化與調度等數據支持。 邊緣計算網關在智慧儲能系統中起到了關鍵的作用。IR4000邊緣計…

NSAttributedString設置折行方式NSLineBreakByTruncatingTail,計算高度出錯,高度返回異常。

iOS13上&#xff0c;NSAttributedString設置折行方式NSLineBreakByTruncatingTail&#xff0c;計算高度出錯&#xff0c;只返回一行的高度。 NSMutableParagraphStyle *style [[NSMutableParagraphStyle alloc]init]; style.hyphenationFactor 1; // 設置每行的最后單詞是…

探究Kafka原理-1.初識Kafka

&#x1f44f;作者簡介&#xff1a;大家好&#xff0c;我是愛吃芝士的土豆倪&#xff0c;24屆校招生Java選手&#xff0c;很高興認識大家&#x1f4d5;系列專欄&#xff1a;Spring源碼、JUC源碼、Kafka原理&#x1f525;如果感覺博主的文章還不錯的話&#xff0c;請&#x1f44…

音視頻項目—基于FFmpeg和SDL的音視頻播放器解析(十九)

介紹 在本系列&#xff0c;我打算花大篇幅講解我的 gitee 項目音視頻播放器&#xff0c;在這個項目&#xff0c;您可以學到音視頻解封裝&#xff0c;解碼&#xff0c;SDL渲染相關的知識。您對源代碼感興趣的話&#xff0c;請查看基于FFmpeg和SDL的音視頻播放器 如果您不理解本…

Postman API Enterprise 10.18.1 Crack

適合您企業的 Postman API 平臺 掌控您的 API 環境。構建更好的 API。加快產品開發。 無論您處于 API 之旅的哪個階段&#xff0c;Postman 都會為您提供幫助 想讓您團隊的 API 更容易被發現嗎&#xff1f;希望減少開發和質量檢查之間的滯后時間&#xff1f;想要更快地讓新開發…

在Spring Boot中使用ECharts繪制數據圖表

使用ECharts來完成一些花里胡哨的圖表吧&#xff0c;一般這種需求我們在我們的客戶端不太常見&#xff0c;但是&#xff0c;我們在后端進行各種數據統計的時候就會發現ECharts的優點了&#xff0c;比如我們常常做的柱狀圖&#xff0c;折線圖&#xff0c;雷達圖等可視化形式&…

Mac M1 安裝Docker打包arm64的python項目的鏡像包

1、首先安裝Docker&#xff0c;到官網下載&#xff0c;選擇apple chip版 Docker中文網 官網 2、雙擊下載的dmg文件&#xff0c;在彈出框中之間拖拽到右邊 3、打開docker&#xff0c;修改國內鏡像源&#xff0c;位置在配置-DockerEngine "registry-mirrors": ["…

『亞馬遜云科技產品測評』活動征文|AWS 數據庫產品類別及其適用場景詳細說明

授權聲明&#xff1a;本篇文章授權活動官方亞馬遜云科技文章轉發、改寫權&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒體平臺&#xff0c;第三方開發者媒體等亞馬遜云科技官方渠道 目錄 前言、AWS 數據庫產品類別 01、Amazon Aurora 02、Amazon Docum…

基于STM32的手勢識別算法研究與應用

基于STM32的手勢識別算法在人機交互和智能設備控制中具有重要的應用價值。本文將介紹基于STM32的手勢識別算法的研究原理和實現步驟&#xff0c;并提供相應的代碼示例。 1. 手勢識別概述 手勢識別是一種通過分析人體的手部動作和姿勢來識別和理解人的意圖的技術。基于STM32的…

YOLOv5 分類模型 數據集加載 3

YOLOv5 分類模型 數據集加載 3 自定義類別 flyfish YOLOv5 分類模型 數據集加載 1 樣本處理 YOLOv5 分類模型 數據集加載 2 切片處理 YOLOv5 分類模型的預處理&#xff08;1&#xff09; Resize 和 CenterCrop YOLOv5 分類模型的預處理&#xff08;2&#xff09;ToTensor 和 …

scrapy自定義日志

自定義日志系統 首先&#xff0c;在Scrapy的settings.py文件中添加以下代碼&#xff1a; LOG_LEVEL DEBUG # 日志級別 LOG_FILE /path/to/logfile.log # 日志文件路徑 LOG_ENABLED True # 是否啟用日志 LOG_STDOUT False # 是否輸出到標準輸出這些設置將指定Scrapy日…

【PHP】PHP生成全年日歷

&#x1f449;博__主&#x1f448;&#xff1a;米碼收割機 &#x1f449;技__能&#x1f448;&#xff1a;C/Python語言 &#x1f449;公眾號&#x1f448;&#xff1a;測試開發自動化【獲取源碼商業合作】 &#x1f449;榮__譽&#x1f448;&#xff1a;阿里云博客專家博主、5…

5-8輸出水仙花數

#include<stdio.h> int main(){int i,j,k;int n;for(n100;n<1000;n){in/100;jn/10-i*10;kn%10;if(ni*i*ij*j*jk*k*k)printf("%d ",n);}printf("\n");return 0; }

Dubbo從入門到上天系列第十八篇:Dubbo引入注冊中心簡介以及DubboAdmin簡要介紹,為后續詳解Dubbo各種注冊中心做鋪墊!

一&#xff1a;Dubbo注冊中心引言 1&#xff1a;什么是Dubbo的注冊中心&#xff1f; Dubbo注冊中心是Dubbo服務治理中極其重要的一個概念。它主要是用于對Rpc集群應用實例進行管理。 對于我們的Dubbo服務來講&#xff0c;至少有兩部分構成&#xff0c;一部分是Provider一部分是…

uniapp開發小程序-如何判斷小程序是在手機端還是pc端打開

官方說明 https://developers.weixin.qq.com/miniprogram/dev/devtools/pc-dev.html 小程序如何判斷是 PC 平臺&#xff1f; 通過 getSystemInfo 官方接口&#xff08;platform 是 windows&#xff09; 通過 UA&#xff08;PC UA 包含 MiniProgramEnv/Windows&#xff09; …

section header

section header table 是一個section header的集合&#xff0c;每個section header是一個描述section的結構體。在同一個ELF文件中&#xff0c;每個section header大小是相同的。 每個section都有一個section header描述它&#xff0c;但是一個section header可能在文件中沒有…

云計算實驗如何結合AI來提高效率!

隨著AI助手的流行&#xff0c;我們現在無論是學習還是工作都會帶著一個他/她&#xff0c;如何讓AI助手提高我們的工作效率是我們需要進化的方向。下面結合“云計算實驗”來分享一下如何讓AI幫助我們學得更快學得更好。 一、學習某個軟件或復雜命令 比如在學習RockyLinux9.2中…

Android Spannable 使用?注意事項

1、當前示例中間的 "評論"&#xff0c;使用SpannableStringBuilder實現&#xff0c;點擊評論會有高亮效果加粗&#xff0c;但再點擊其它Bar時無法恢復默認樣式。 2、因為SpannableString或SpannableStringBuilder中的效果是疊加的&#xff0c;恢復默認樣式需要先移除…