最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Spring Cloud Zuul 服務(wù)網(wǎng)關(guān)

 更新時(shí)間:2017年12月15日 16:21:08   作者:鐘艾伶  
本篇文章主要介紹了詳解Spring Cloud Zuul 服務(wù)網(wǎng)關(guān),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

有了Eureka服務(wù)注冊(cè)發(fā)現(xiàn)、Hystrix斷路器、Ribbon服務(wù)調(diào)用負(fù)載均衡,以及spring cloud config 集群配置中心,似乎一個(gè)微服務(wù)框架已五臟俱全,last but not least,一個(gè)服務(wù)網(wǎng)關(guān)卻不可或缺。

Spring Cloud Zuul路由是微服務(wù)架構(gòu)的不可或缺的一部分,提供動(dòng)態(tài)路由,監(jiān)控,彈性,安全等的邊緣服務(wù)。Zuul是Netflix出品的一個(gè)基于JVM路由和服務(wù)端的負(fù)載均衡器。

Zuul介紹

在整個(gè)Spring Cloud微服務(wù)框架里,Zuul扮演著”智能網(wǎng)關(guān)“的角色。一方面,Zuul是接入網(wǎng)關(guān),起到反向代理的作用,是外部消費(fèi)者請(qǐng)求內(nèi)部服務(wù)的唯一入口。另一方面,Zuul也具備過濾功能,通過在運(yùn)行時(shí)注入過濾規(guī)則可實(shí)現(xiàn)用戶鑒權(quán)、動(dòng)態(tài)路由、灰度發(fā)布、A/B測(cè)試、負(fù)載限流等功能。

Zuul的大部分功能都是通過過濾功能來完成的,Zuul可以提供四種標(biāo)準(zhǔn)類型的過濾,如下圖所示:

1) Pre: 過濾規(guī)則在路由之前起作用。可以利用“Pre”過濾器實(shí)現(xiàn)用戶鑒權(quán),記錄請(qǐng)求日志等;

2) Routing:過濾規(guī)則在路由時(shí)發(fā)生作用??梢岳谩癛outing”過濾器實(shí)現(xiàn)動(dòng)態(tài)路由、灰度發(fā)布、A/B測(cè)試、負(fù)載限流等。

3) Post:過濾規(guī)則在路由之后發(fā)生作用??梢岳?Post"過濾器收集統(tǒng)計(jì)信息和指標(biāo),將微服務(wù)的相應(yīng)寫入Http響應(yīng)并返回給服務(wù)消費(fèi)者;

4) Error:過濾規(guī)則路由過程中發(fā)生錯(cuò)誤時(shí)發(fā)生作用??梢岳肊rror過濾器記錄錯(cuò)誤日志,并對(duì)錯(cuò)誤進(jìn)行二次處理等。

在過濾器之間用RequestContext傳遞消息。RequestContext存儲(chǔ)的內(nèi)容包括路由目標(biāo)地址、錯(cuò)誤信息、請(qǐng)求信息、響應(yīng)信息等。Zuul的過濾規(guī)則也可以用基于JVM的語言編寫,包括Java、Python、Groovy等。

一、Zuul 實(shí)例

在上篇demo創(chuàng)建好注冊(cè)中心、服務(wù)提供方的基礎(chǔ)之上,再來演示一下zuul網(wǎng)關(guān)服務(wù)

1、創(chuàng)建網(wǎng)關(guān)類 

@EnableZuulProxy 
@SpringCloudApplication  
//整合@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker 
public class ZuulApplication { 
 
  public static void main(String[] args) { 
    new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args); 
  } 
} 

2、添加properties配置文件

spring.application.name=api-gateway 
server.port=5555 
 
zuul.routes.api-a.path=/api-a/** 
zuul.routes.api-a.serviceId=compute-service 
 
zuul.routes.api-b.path=/api-b/** 
zuul.routes.api-b.serviceId=compute-service 
 
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/ 

同樣也指向eureka服務(wù)注冊(cè)中心地址,api-a.serviceId,b-serviceId 指向服務(wù)提供者名稱

3、訪問效果

原來直接通過http://COMPUTE-SERVICE/add?a=10&b=20鏈接直接訪問compute-service服務(wù)實(shí)例,現(xiàn)在則可直接localhost:5555/api-a/add?a=1&b=2網(wǎng)關(guān)地址訪問compute-service服務(wù)。同樣zuul網(wǎng)關(guān)也提供服務(wù)負(fù)載均衡功能,將請(qǐng)求均發(fā)到service服務(wù)實(shí)例。

二、什么是網(wǎng)關(guān)?為何需要使用網(wǎng)關(guān)?

通過上圖,對(duì)外提供的服務(wù),在無網(wǎng)關(guān)的情況下,API接口直接暴露給服務(wù)調(diào)用方,當(dāng)調(diào)用方增多,不同業(yè)務(wù)調(diào)用方各不相同,勢(shì)必需要添加定制化訪問權(quán)限、校驗(yàn)等邏輯。當(dāng)添加API網(wǎng)關(guān)后,再第三方調(diào)用端和服務(wù)提供方之間就創(chuàng)建了一面墻,這面墻直接與調(diào)用方通信進(jìn)行權(quán)限控制,后將請(qǐng)求均衡分發(fā)給后臺(tái)服務(wù)端,正如無需直接訪問compute-service的add方法,而是通過api-a/add鏈接將請(qǐng)求傳遞給service實(shí)例。Zuul就是提供負(fù)載均衡-反向代理-權(quán)限認(rèn)證的這么一個(gè)API gateway。

類似于Nginx在應(yīng)用服務(wù)最前端添加一堵保護(hù)墻,zuul的負(fù)載均衡是針對(duì)將請(qǐng)求分發(fā)給集群中某臺(tái)服務(wù)或者某個(gè)服務(wù)實(shí)例。而前面介紹過的ribbon也是主打服務(wù)負(fù)載功能,它所針對(duì)的是服務(wù)消費(fèi)者將調(diào)用請(qǐng)求分發(fā)到某具體服務(wù)提供實(shí)例。兩者均做負(fù)載均衡,實(shí)際是在系統(tǒng)不同的層級(jí)上進(jìn)行。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringMVC處理數(shù)據(jù)輸出的實(shí)例代碼

    SpringMVC處理數(shù)據(jù)輸出的實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于SpringMVC處理數(shù)據(jù)輸出的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • java.net.SocketException: Connection reset 解決方法

    java.net.SocketException: Connection reset 解決方法

    最近糾結(jié)致死的一個(gè)java報(bào)錯(cuò)java.net.SocketException: Connection reset 終于得到解決
    2013-03-03
  • SpringBoot使用Druid連接池進(jìn)行優(yōu)化完整指南

    SpringBoot使用Druid連接池進(jìn)行優(yōu)化完整指南

    在 Spring Boot 中使用 Druid 連接池進(jìn)行極致優(yōu)化,需要從??核心參數(shù)調(diào)優(yōu)??,??監(jiān)控體系搭建,??安全增強(qiáng)??等多個(gè)維度綜合考慮,下面是詳細(xì)優(yōu)化策略,希望對(duì)大家有所幫助
    2025-07-07
  • springboot 顯示打印加載bean耗時(shí)工具類的案例

    springboot 顯示打印加載bean耗時(shí)工具類的案例

    文章介紹了Spring框架的Aware接口及其應(yīng)用場(chǎng)景,如獲取BeanFactory、Environment等資源信息,并通過案例演示了Spring Boot中監(jiān)控Bean加載耗時(shí)的工具類實(shí)現(xiàn),用于性能分析與調(diào)試,感興趣的朋友跟隨小編一起看看吧
    2025-07-07
  • 2020年支持java8的Java反編譯工具匯總(推薦)

    2020年支持java8的Java反編譯工具匯總(推薦)

    這篇文章主要介紹了2020年支持java8的Java反編譯工具匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot搭建go-cqhttp機(jī)器人的方法實(shí)現(xiàn)

    SpringBoot搭建go-cqhttp機(jī)器人的方法實(shí)現(xiàn)

    本文主要介紹了SpringBoot搭建go-cqhttp機(jī)器人的方法實(shí)現(xiàn)
    2021-12-12
  • Java基于虹軟實(shí)現(xiàn)人臉識(shí)別、人臉比對(duì)、活性檢測(cè)等

    Java基于虹軟實(shí)現(xiàn)人臉識(shí)別、人臉比對(duì)、活性檢測(cè)等

    本文主要介紹了Java基于虹軟實(shí)現(xiàn)人臉識(shí)別、人臉比對(duì)、活性檢測(cè)等,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java監(jiān)聽POST請(qǐng)求的示例詳解

    Java監(jiān)聽POST請(qǐng)求的示例詳解

    要監(jiān)聽POST請(qǐng)求,我們可以使用Java中的HttpServlet類,以下是一個(gè)使用Servlet API監(jiān)聽POST請(qǐng)求的完整示例,通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-12-12
  • Spring的初始化前中后詳細(xì)解讀

    Spring的初始化前中后詳細(xì)解讀

    這篇文章主要介紹了Spring的初始化前中后詳細(xì)解讀,Spring?框架是一個(gè)非常流行的?Java?框架,它提供了一種輕量級(jí)的、可擴(kuò)展的方式來構(gòu)建企業(yè)級(jí)應(yīng)用程序,在?Spring?的生命周期中,有三個(gè)重要的階段,即初始化前、初始化、初始化后,需要的朋友可以參考下
    2023-09-09
  • Java中try-with-resources的使用詳解

    Java中try-with-resources的使用詳解

    try-with-resources 是 Java 開發(fā)中資源管理的首選方式,大大減少了資源泄漏的風(fēng)險(xiǎn),提高了代碼的可讀性和可維護(hù)性,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2026-01-01

最新評(píng)論

大化| 兴义市| 竹溪县| 麦盖提县| 大竹县| 曲松县| 靖宇县| 河东区| 远安县| 青阳县| 湘乡市| 团风县| 公安县| 徐州市| 上高县| 淳安县| 宜川县| 聂荣县| 邳州市| 弥渡县| 邢台市| 长寿区| 河池市| 阿城市| 扎赉特旗| 江油市| 大厂| 宁强县| 河北区| 乌恰县| 大新县| 比如县| 南通市| 巩义市| 浠水县| 长沙县| 石台县| 开阳县| 卓资县| 衡水市| 岳池县|