成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringCloud系列之Zuul網(wǎng)關(guān)和Zuul過(guò)濾器

開(kāi)發(fā) 架構(gòu)
Zuul是SpringCloud全家桶的微服務(wù)網(wǎng)關(guān)。所有從app或者網(wǎng)站(第三方)來(lái)的請(qǐng)求都會(huì)經(jīng)過(guò)Zuul到達(dá)后端的Netflix應(yīng)用程序。

Zuul網(wǎng)關(guān)

什么是Zuul網(wǎng)關(guān)?

Zuul是SpringCloud全家桶的微服務(wù)網(wǎng)關(guān)。所有從app或者網(wǎng)站(第三方)來(lái)的請(qǐng)求都會(huì)經(jīng)過(guò)Zuul到達(dá)后端的Netflix應(yīng)用程序。作為一個(gè)邊界性質(zhì)的應(yīng)用程序,Zuul提供了動(dòng)態(tài)路由、監(jiān)控、彈性負(fù)載和安全功能。

Zuul底層利用filter實(shí)現(xiàn)如下功能:

  1. 認(rèn)證和安全,識(shí)別每個(gè)需要認(rèn)證的資源,拒絕不服務(wù)要求的請(qǐng)求。
  2. 性能檢測(cè),在服務(wù)邊界追蹤并統(tǒng)計(jì)數(shù)據(jù),提供精確的生產(chǎn)視圖。
  3. 動(dòng)態(tài)路由,根據(jù)需要將請(qǐng)求動(dòng)態(tài)路由到后端集群。
  4. 壓力測(cè)試,逐漸增加對(duì)集群的流量以及了解其性能。
  5. 負(fù)載卸載,預(yù)先為每種類(lèi)型的請(qǐng)求分配容量,當(dāng)請(qǐng)求超過(guò)流量時(shí)自動(dòng)丟棄。靜態(tài)資源處理,直接在邊界返回某種響應(yīng)。
  6. 靜態(tài)資源處理,直接在Zuul處理靜態(tài)資源并響應(yīng),而并非轉(zhuǎn)發(fā)這些請(qǐng)求到內(nèi)部集群中。
  7. 多區(qū)域彈性,跨越AWS區(qū)域進(jìn)行請(qǐng)求路由,旨在實(shí)現(xiàn)ELB使用多樣化并保證邊緣位置與使用者盡可能接近。

Zuul網(wǎng)關(guān)Demo

引入jar包:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>

配置文件:application.yml。

server:
port: 7004 # 端口
spring:
application:
name: zuul-getway # 服務(wù)名
eureka:
client:
service-url:
defaultZone: http://jack:666@localhost:8764/eureka/ # 需要注冊(cè)到eureka
instance:
instance-id: ${spring.application.name}:${server.port}
zuul:
routes:
order-service: /od/** # 對(duì)某個(gè)服務(wù)自定義路由規(guī)則
serviceId: order-service # 這個(gè)配置可以實(shí)現(xiàn)負(fù)載均衡,默認(rèn)是輪詢(xún)
# 設(shè)置某些服務(wù)不要進(jìn)行反向代理 進(jìn)行路由,多個(gè)服務(wù)用逗號(hào)隔開(kāi)
ignored-services: order-service, user-service
prefix: /api # 請(qǐng)求路徑的前綴

查看是否注冊(cè)到eureka。

Eureka注冊(cè)中心

訪問(wèn)路徑:

localhost:7004/api/od/getOrder?token=1235。

(后面帶token是因?yàn)槲遗渲昧藀re過(guò)濾器,下面會(huì)介紹)。

Zuul過(guò)濾器

Zuul四種過(guò)濾器類(lèi)型,這些類(lèi)型對(duì)應(yīng)請(qǐng)求的生命周期

  • pre(前置):在請(qǐng)求被路由之前調(diào)用。可利用這種過(guò)濾器來(lái)實(shí)現(xiàn)身份認(rèn)證、在集群中選擇請(qǐng)求的微服務(wù),記錄調(diào)試等。
  • routing(路由):將請(qǐng)求路由到微服務(wù)。用于構(gòu)建發(fā)送給微服務(wù)的請(qǐng)求,并使用apache httpclient或netflix ribbon請(qǐng)求微服務(wù)。
  • post(后置):在路由到微服務(wù)后執(zhí)行。可用于響應(yīng)添加標(biāo)準(zhǔn)的http header、收集統(tǒng)計(jì)信息和指標(biāo)、將響應(yīng)從微服務(wù)發(fā)送到客戶(hù)端。
  • error(錯(cuò)誤):在其他階段發(fā)送錯(cuò)誤時(shí)執(zhí)行該過(guò)濾器。

注:除了默認(rèn)的過(guò)濾器類(lèi)型以外Zuul還允許創(chuàng)建自定義的過(guò)濾器類(lèi)型。

如何禁用過(guò)濾器?

很簡(jiǎn)單,只需設(shè)置zuul.ClassName.filterType.disable=true ,即可禁用SimpleClassName所對(duì)應(yīng)的過(guò)濾器。例如:zuul.TokenFilter.pre.disable=true; 即可禁用TokenFilter過(guò)濾器。

pre過(guò)濾器

例子: 鑒權(quán)認(rèn)證。如果參數(shù)帶了token就允許訪問(wèn)。

/**
* pre過(guò)濾器
* @Author Big.Hu
*/
@Component
public class TokenFilter extends ZuulFilter {
@Override
public Object run() {
System.err.println("執(zhí)行pre前置過(guò)濾器。。。。。。。。。");
RequestContext currentContext = RequestContext.getCurrentContext();
HttpServletRequest request = currentContext.getRequest();
StringBuffer requestURL = request.getRequestURL();
System.out.println("requestURL:" + requestURL);
// 獲取請(qǐng)求的參數(shù)
String token = request.getParameter("token");
if (StringUtils.isEmpty(token)) {
// 如果參數(shù)為空則過(guò)濾該請(qǐng)求,不對(duì)其進(jìn)行路由
currentContext.setSendZuulResponse(false);
// 設(shè)置錯(cuò)誤碼:401
currentContext.setResponseStatusCode(HttpStatus.SC_UNAUTHORIZED);
currentContext.set("SUCCESS", false);
} else {
// 不過(guò)濾該請(qǐng)求,對(duì)其進(jìn)行路由
currentContext.setSendZuulResponse(true);
// 設(shè)置成功碼:200
currentContext.setResponseStatusCode(HttpStatus.SC_OK);
currentContext.set("SUCCESS", true);
}
System.out.println("token:" + token);
return null;
}
/**
* 當(dāng)前filter類(lèi)型:pre、post、route、error
*/
@Override
public String filterType() {
return FilterConstants.PRE_TYPE;
}
/**
* 表示當(dāng)前filter優(yōu)先級(jí)
*/
@Override
public int filterOrder() {
return FilterConstants.PRE_DECORATION_FILTER_ORDER - 1;
}
/**
* 是否執(zhí)行該過(guò)濾器?
**/
@Override
public boolean shouldFilter() {
return true;
}
}

POST過(guò)濾器

例: 在返回的時(shí)候設(shè)置一個(gè)cookie。

/**
* Post過(guò)濾器
* @Author Big.Hu
*/
@Component
public class PostFilter extends ZuulFilter {
/**
* POST過(guò)濾器:在route和error過(guò)濾器之后執(zhí)行
*/
@Override
public String filterType() {
return FilterConstants.POST_TYPE;
}
@Override
public int filterOrder() {
return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
System.err.println("執(zhí)行Post過(guò)濾器。。。。。。。。。");
RequestContext currentContext = RequestContext.getCurrentContext();
HttpServletResponse response = currentContext.getResponse();
Cookie cookie = new Cookie("name", "Jack.Hu");
cookie.setMaxAge(60 * 60 * 24);
response.addCookie(cookie);
return null;
}
}

訪問(wèn)路徑:

localhost:7004/api/od/getOrder。

(沒(méi)帶token參數(shù))請(qǐng)求被pre過(guò)濾器過(guò)濾掉了。

不帶token請(qǐng)求

帶上token參數(shù)請(qǐng)求成功!

帶token請(qǐng)求

再按f12看post過(guò)濾器設(shè)置的cookie。

查看cookie

控制臺(tái):

控制臺(tái)

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2017-04-12 14:43:01

Spring ClouZuul過(guò)濾器

2017-05-04 22:30:17

Zuul過(guò)濾器微服務(wù)

2023-07-17 08:02:44

ZuulIO反應(yīng)式

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2020-11-18 11:26:45

SpringCloudZuulJava

2024-08-05 10:03:53

2022-05-20 12:14:50

ZuulSpringClou

2017-10-18 16:00:14

SpringCloudZuul路徑

2017-07-18 14:10:31

大數(shù)據(jù)Apache Flum過(guò)濾器

2024-11-04 08:45:48

布隆過(guò)濾器元數(shù)據(jù)指紋值

2024-12-06 14:34:00

Spring過(guò)濾器

2021-07-05 15:22:03

Servlet過(guò)濾器客戶(hù)端

2024-01-05 09:04:35

隆過(guò)濾器數(shù)據(jù)結(jié)構(gòu)哈希函數(shù)

2011-03-07 09:33:18

FileZilla

2009-07-08 15:30:56

Servlet過(guò)濾器

2009-07-14 09:09:08

Swing模型過(guò)濾器

2009-07-08 16:07:04

Servlet過(guò)濾器配

2009-09-29 13:55:23

Hibernate設(shè)置

2011-06-29 16:14:59

Qt 事件 過(guò)濾器

2023-04-14 09:01:25

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人久久一区 | 视频一区在线观看 | 国产欧美一区二区三区免费 | 中文字幕高清免费日韩视频在线 | 亚洲国内精品 | 久久久av中文字幕 | 操视频网站 | 日韩精品一区二区三区在线播放 | 色婷婷久久久久swag精品 | 国产精品免费一区二区 | 国产69精品久久久久777 | 免费精品 | 91亚洲欧美 | 精品久久久久久亚洲综合网站 | 狠狠涩 | www国产亚洲精品久久网站 | 在线观看精品 | 色毛片 | 一级aaaaaa毛片免费同男同女 | m豆传媒在线链接观看 | 欧美 中文字幕 | av片免费 | 欧美网站一区 | 国产精品极品美女在线观看免费 | 亚洲成人国产精品 | 亚洲风情在线观看 | www.youjizz.com日韩 | 6080yy精品一区二区三区 | 天天综合干| 欧美国产日韩一区 | 91视频在线观看 | 欧美xxxx色视频在线观看免费 | 精品欧美一区二区精品久久久 | 久久丁香| 日韩福利电影 | 91中文字幕在线 | 在线高清免费观看视频 | 日本高清视频网站 | 日韩成人在线视频 | 精品不卡 | 精品成人佐山爱一区二区 |