摘要:獲取當(dāng)前請(qǐng)求的請(qǐng)求上下文記錄請(qǐng)求進(jìn)入時(shí)間需要最后一個(gè)執(zhí)行的后續(xù)更新做一個(gè)好人。
Zuul(Router and Filter)
WIKI: 傳送門
認(rèn)證,鑒權(quán)(Authentication/Security)
預(yù)判(Insights)
壓力測(cè)試(Stress Testing)
灰度/金絲雀測(cè)試(Canary Testing)
動(dòng)態(tài)路由(Dynamic Routing)
服務(wù)遷移(Service Migration)
降低負(fù)載(Load Shedding)
靜態(tài)響應(yīng)處理(Static Response handling)
主動(dòng)/主動(dòng)交換管理(Active/Active traffic management)
關(guān)鍵配置:
The configuration property zuul.host.maxTotalConnections and zuul.host.maxPerRouteConnections, which default to 200 and 20 respectively.
三步曲創(chuàng)建法:
org.springframework.cloud spring-cloud-starter-netflix-zuul org.springframework.cloud spring-cloud-starter-netflix-eureka-client
@SpringCloudApplication @EnableZuulProxy //啟用網(wǎng)關(guān) 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: "*" # 過濾所有請(qǐng)求,除了下面routes中聲明過的服務(wù) routes: sponsor: #在路由中自定義服務(wù)路由名稱 path: /ad-sponsor/** serviceId: mscx-ad-sponsor #微服務(wù)name strip-prefix: false search: #在路由中自定義服務(wù)路由名稱 path: /ad-search/** serviceId: mscx-ad-search #微服務(wù)name strip-prefix: false prefix: /gateway/api strip-prefix: false #不對(duì) prefix: /gateway/api 設(shè)置的路徑進(jìn)行截取,默認(rèn)轉(zhuǎn)發(fā)會(huì)截取掉配置的前綴
我們來編寫一個(gè)記錄請(qǐng)求時(shí)間周期的過濾器,根據(jù)Filter的三種類型:Pre filters,routing filters 和Post filters,我們需要定義2個(gè)filter,用來記錄開始和結(jié)束時(shí)間,很明顯,我們需要實(shí)現(xiàn)Pre & Post2個(gè)過濾器。
@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 { //獲取當(dāng)前請(qǐng)求的請(qǐng)求上下文 RequestContext requestContext = RequestContext.getCurrentContext(); //記錄請(qǐng)求進(jìn)入時(shí)間 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() { //需要最后一個(gè)執(zhí)行的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
后續(xù)更新---
做一個(gè)好人。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75587.html
摘要:在前面的過程中,我們創(chuàng)建了個(gè)服務(wù)發(fā)現(xiàn)我們使用作為服務(wù)發(fā)現(xiàn)組件,學(xué)習(xí)了的使用。加依賴加注解改配置使用項(xiàng)目三部曲,我們可以快速添加一個(gè)新組件,并正常使用這個(gè)我沒有在項(xiàng)目中實(shí)現(xiàn),但是大家可以和一樣,三部曲搞定。 在前面的過程中,我們創(chuàng)建了4個(gè)project: 服務(wù)發(fā)現(xiàn) 我們使用Eureka 作為服務(wù)發(fā)現(xiàn)組件,學(xué)習(xí)了Eureka Server,Eureka Client的使用。 Eureka...
摘要:所以,沒必要過分糾結(jié)這種信息,咬文嚼字有時(shí)候反而會(huì)適得其反。若初通用錯(cuò)誤信息異常類請(qǐng)求參數(shù)異常用戶已存在用戶不存在在下面創(chuàng)建一個(gè)工具類用來對(duì)用戶進(jìn)行加密來獲取信息。工具類若初加密參考創(chuàng)建用戶的實(shí)現(xiàn),依次實(shí)現(xiàn)其他表操作。 DAO層設(shè)計(jì)實(shí)現(xiàn) 這里我們使用Spring DATA JPA來實(shí)現(xiàn)數(shù)據(jù)庫操作,當(dāng)然大家也可以使用Mybatis,都是一樣的,我們依然以用戶表操作為例: /** * A...
摘要:綜述經(jīng)調(diào)研,使用解決方案的占多數(shù),已經(jīng)能滿足絕大多數(shù)公司需求。但除了一些超級(jí)公司外,比如阿里,京東,他們是自己擼的一套網(wǎng)關(guān)。 綜述 經(jīng)調(diào)研,使用Spring Cloud Zuul解決方案的占多數(shù),已經(jīng)能滿足絕大多數(shù)公司需求。但除了一些超級(jí)公司外,比如阿里,京東,他們是自己擼的一套網(wǎng)關(guān)。此外,點(diǎn)評(píng)直接采用的nginx負(fù)載均衡前置網(wǎng)關(guān),而沒用第七層網(wǎng)關(guān),原因據(jù)說是七層網(wǎng)關(guān)會(huì)影響性能,但由于...
摘要:對(duì)的配置和行為進(jìn)行定制修改匹配路由請(qǐng)求規(guī)則注冊(cè)自定義的和添加靜態(tài)資源處理器添加自定義視圖控制器添加自定義方法參數(shù)處理器配置消息轉(zhuǎn)換器清空所有轉(zhuǎn)換器做一個(gè)好人。博客園掘金簡(jiǎn)書頭條知乎 一個(gè)大的系統(tǒng),在代碼的復(fù)用肯定是必不可少的,它能解決: 統(tǒng)一的響應(yīng)處理(可以對(duì)外提供統(tǒng)一的響應(yīng)對(duì)象包裝) showImg(https://segmentfault.com/img/remote/146000...
摘要:工作流程項(xiàng)目依賴監(jiān)控面板引入服務(wù)調(diào)用的組件依賴引入服務(wù)消費(fèi)者的依賴數(shù)據(jù)庫鏈接依賴工具類集合類操作日志監(jiān)聽解析開源工具類庫中的配置相關(guān)依賴圖片壓縮 工作流程 showImg(https://i.loli.net/2019/07/29/5d3ee1829df4d57461.png); 項(xiàng)目依賴 org.springframewo...
閱讀 363·2024-11-06 13:38
閱讀 738·2024-09-10 13:19
閱讀 866·2024-08-22 19:45
閱讀 1363·2021-11-19 09:40
閱讀 2598·2021-11-18 13:14
閱讀 4266·2021-10-09 10:02
閱讀 2283·2021-08-21 14:12
閱讀 1268·2019-08-30 15:54