SpringCloud微服務項目實戰(zhàn) - 網(wǎng)關zuul詳解及搭建

上一篇介紹了服務的調用,這篇接著之前的話題才菠,來說說SpringCloud中zuul的使用及搭建網(wǎng)關的那點事。

首先贡定,我們要知道什么是網(wǎng)關赋访? 網(wǎng)關,是一個系統(tǒng)中前置的統(tǒng)一入口,介于客戶端和服務器端之間的中間層蚓耽,主要用來處理非業(yè)務功能渠牲,提供路由請求、鑒權步悠、監(jiān)控签杈、緩存、限流等功能鼎兽〈鹄眩客戶端發(fā)起的請求首先通過網(wǎng)關,進行非業(yè)務功能處理谚咬,在根據(jù)路徑的路由鹦付,定位到具體的服務節(jié)點上。

同時系統(tǒng)使用服務路由的功能择卦,可以在對外提供服務時睁壁,只暴露網(wǎng)關中配置的調用地址,而調用方就不需要了解后端具體的微服務主機互捌。可以有效的保護真實的服務地址信息行剂。Zuul是一個微服務網(wǎng)關秕噪,首先是一個微服務。也是會在Eureka注冊中心中進行服務的注冊和發(fā)現(xiàn)厚宰。也是一個網(wǎng)關腌巾,請求應該通過Zuul來進行路由。Zuul網(wǎng)關不是必要的铲觉。是推薦使用的澈蝙。SpringCloud zuul的相關介紹

1,為什么要使用微服務網(wǎng)關撵幽?

不同的微服務一般會有不同的網(wǎng)絡地址灯荧,而客戶端可能需要調用多個服務接口才能完成一個業(yè)務需求,若讓客戶端直接與各個微服務通信盐杂,會有以下問題:

1)客戶端會多次請求不同微服務逗载,增加了客戶端復雜性;

2)存在跨域請求链烈,處理相對復雜厉斟;

3)認證復雜,每個服務都需要獨立認證强衡;

4)難以重構擦秽,多個服務可能將會合并成一個或拆分成多個;

2,使用網(wǎng)關的優(yōu)缺點感挥?

優(yōu)點:

  1. 所有的外部請求先經(jīng)過微服務網(wǎng)關進行交互缩搅,無需調用特定微服務接口,簡化了開發(fā);

  2. 服務網(wǎng)關=路由轉發(fā)+過濾器

  • 路由轉發(fā):接收請求,轉發(fā)到后端的微服務上;

  • 過濾器:可在服務網(wǎng)關中可以完成一系列的橫切功能(權限校驗)

缺點:增加了網(wǎng)關,多了一層轉發(fā)链快,服務性能會下降;

3誉己,使用zuul 的作用?Zuul可以通過加載動態(tài)過濾機制域蜗,從而實現(xiàn)以下各項功能:

  • 驗證與安全保障: 識別面向各類資源的驗證要求并拒絕那些與要求不符的請求巨双。
  • 審查與監(jiān)控: 在邊緣位置追蹤有意義數(shù)據(jù)及統(tǒng)計結果,從而為我們帶來準確的生產(chǎn)狀態(tài)結論霉祸。
  • 動態(tài)路由: 以動態(tài)方式根據(jù)需要將請求路由至不同后端集群處筑累。
  • 壓力測試: 逐漸增加指向集群的負載流量狮荔,從而計算性能水平颤枪。
  • 負載分配: 為每一種負載類型分配對應容量,并棄用超出限定值的請求余素。
  • 靜態(tài)響應處理: 在邊緣位置直接建立部分響應奔穿,從而避免其流入內部集群镜沽。
  • 多區(qū)域彈性: 跨越AWS區(qū)域進行請求路由,旨在實現(xiàn)ELB使用多樣化并保證邊緣位置與使用者盡可能接近贱田。

4缅茉,zuul的工作原理?

zuul的核心是一系列的filters, 其作用可以類比Servlet框架的Filter男摧,或者AOP蔬墩。zuul把Request route到 用戶處理邏輯 的過程中,這些filter參與一些過濾處理耗拓,比如Authentication拇颅,Load Shedding等。

Zuul提供了一個框架乔询,可以對過濾器進行動態(tài)的加載樟插,編譯,運行竿刁。

Zuul的過濾器之間沒有直接的相互通信岸夯,他們之間通過一個RequestContext的靜態(tài)類來進行數(shù)據(jù)傳遞的。RequestContext類中有ThreadLocal變量來記錄每個Request所需要傳遞的數(shù)據(jù)们妥。

Zuul的過濾器是由Groovy寫成猜扮,這些過濾器文件被放在Zuul Server上的特定目錄下面,Zuul會定期輪詢這些目錄监婶,修改過的過濾器會動態(tài)的加載到Zuul Server中以便過濾請求使用旅赢。

下面有幾種標準的過濾器類型:

Zuul大部分功能都是通過過濾器來實現(xiàn)的齿桃。Zuul中定義了四種標準過濾器類型,這些過濾器類型對應于請求的典型生命周期煮盼。

1) PRE:這種過濾器在請求被路由之前調用短纵。我們可利用這種過濾器實現(xiàn)身份驗證、在集群中選擇請求的微服務僵控、記錄調試信息等香到。

2) ROUTING 務。這種過濾器用于構建發(fā)送給微服務的請求报破,并使用Apache HttpClient或Netfilx Ribbon請求微服務悠就。

3) POST:這種過濾器在路由到微服務以后執(zhí)行。這種過濾器可用來為響應添加標準的HTTP Header充易、收集統(tǒng)計信息和指標梗脾、將響應從微服務發(fā)送給客戶端等。

4) ERROR:在其他階段發(fā)生錯誤時執(zhí)行該過濾器盹靴。

內置的特殊過濾器

zuul還提供了一類特殊過濾器炸茧,分別為:StaticResponseFilter和SurgicalDebugFilter;

  • StaticResponseFilter:StaticResponseFilter允許從Zuul本身生成響應稿静,而不是將請求轉發(fā)到源梭冠。

  • SurgicalDebugFilter:SurgicalDebugFilter允許將特定請求路由到分隔的調試集群或主機。

自定義的過濾器

除了默認的過濾器類型改备,Zuul還允許我們創(chuàng)建自定義的過濾器類型控漠。

5,Zuul和Nginx的區(qū)別相同點:Zuul和Nginx都可以實現(xiàn)負載均衡绍妨、反向代理(隱藏真實ip地址),過濾請求柬脸,實現(xiàn)網(wǎng)關的效果不同點:

  • Nginx–c語言開發(fā)

  • Zuul–java語言開發(fā)

  • Zuul負載均衡實現(xiàn):采用ribbon+eureka實現(xiàn)本地負載均衡

  • Nginx負載均衡實現(xiàn):采用服務器實現(xiàn)負載均衡

  • Nginx相比zuul功能會更加強大他去,因為Nginx整合一些腳本語言(Nginx+lua)

  • Nginx適合于服務器端負載均衡

  • Zuul適合微服務中實現(xiàn)網(wǎng)關

Zuul服務搭建

我們先在父級項目里引入zuul的依賴服務

再創(chuàng)建Zuul微服務模塊,并添加pom依賴如下:

添加yml配置:

然后添加啟動類:

啟動所有服務:

測試:

推薦閱讀:

SpringCloud微服務項目實戰(zhàn)?-?微服務調用詳解(附面試題)

SpringCloud微服務項目實戰(zhàn)倒堕,服務注冊與發(fā)現(xiàn)(附面試題)

Spring Cloud微服務項目實戰(zhàn)--Eureka服務搭建

掃碼關注公眾號灾测,發(fā)送關鍵詞獲取相關資料:

  1. 發(fā)“Springboot”領取電商項目實戰(zhàn)源碼;

  2. 發(fā)“SpringCloud”領取學習實戰(zhàn)資料;

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市垦巴,隨后出現(xiàn)的幾起案子媳搪,更是在濱河造成了極大的恐慌,老刑警劉巖骤宣,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秦爆,死亡現(xiàn)場離奇詭異,居然都是意外死亡憔披,警方通過查閱死者的電腦和手機等限,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門爸吮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人望门,你說我怎么就攤上這事形娇。” “怎么了筹误?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵桐早,是天一觀的道長。 經(jīng)常有香客問我厨剪,道長哄酝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任丽惶,我火速辦了婚禮炫七,結果婚禮上,老公的妹妹穿的比我還像新娘钾唬。我一直安慰自己万哪,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布抡秆。 她就那樣靜靜地躺著奕巍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪儒士。 梳的紋絲不亂的頭發(fā)上的止,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音着撩,去河邊找鬼诅福。 笑死,一個胖子當著我的面吹牛拖叙,可吹牛的內容都是我干的氓润。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼薯鳍,長吁一口氣:“原來是場噩夢啊……” “哼咖气!你這毒婦竟也來了?” 一聲冷哼從身側響起挖滤,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤崩溪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斩松,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伶唯,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年惧盹,在試婚紗的時候發(fā)現(xiàn)自己被綠了抵怎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奋救。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖反惕,靈堂內的尸體忽然破棺而出尝艘,到底是詐尸還是另有隱情,我是刑警寧澤姿染,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布背亥,位于F島的核電站,受9級特大地震影響悬赏,放射性物質發(fā)生泄漏狡汉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一闽颇、第九天 我趴在偏房一處隱蔽的房頂上張望盾戴。 院中可真熱鬧,春花似錦兵多、人聲如沸尖啡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衅斩。三九已至,卻和暖如春怠褐,著一層夾襖步出監(jiān)牢的瞬間畏梆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工奈懒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奠涌,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓磷杏,卻偏偏與公主長得像溜畅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茴丰,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354