<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          spring-cloud應(yīng)用網(wǎng)關(guān)之zuul

          共 3282字,需瀏覽 7分鐘

           ·

          2021-08-09 02:31

          前言

          應(yīng)用網(wǎng)關(guān)這個組件,想必大家應(yīng)該都不陌生,特別是在當(dāng)下微服務(wù)盛行的互聯(lián)網(wǎng)時代,應(yīng)用網(wǎng)關(guān)有著非常重要的作用,也是微服務(wù)必不可少的組件之一。

          通常我們將應(yīng)用網(wǎng)關(guān)放在企業(yè)應(yīng)用的最外層,作為企業(yè)應(yīng)用的第一道大門,所有服務(wù)都經(jīng)過應(yīng)用網(wǎng)關(guān)來訪問,這樣做有很多好處,比如更安全,所有應(yīng)用只對外暴漏應(yīng)用網(wǎng)關(guān)的服務(wù)映射地址,隱藏服務(wù)實際地址、部署節(jié)點等信息,確保服務(wù)系統(tǒng)安全性;更易于擴(kuò)展,通過應(yīng)用網(wǎng)關(guān),我們可以把集成很多其他功能,比如權(quán)限中心、用戶中心、服務(wù)負(fù)載中心等服務(wù),這樣其他服務(wù)只需要接入應(yīng)用網(wǎng)關(guān)即可使用相關(guān)公共服務(wù)提供的服務(wù),而不用單獨集成。好了,關(guān)于應(yīng)用網(wǎng)關(guān)我們暫時就說這么多,下面我們看下zuul網(wǎng)關(guān)的簡單應(yīng)用。

          ZUUL

          創(chuàng)建項目

          首先,我們要先創(chuàng)建一個spring boot項目。然后引入zuuleureka的相關(guān)依賴。

          核心依賴

          下面就是zuul的核心依賴,必須引入。

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

          引入zuul的依賴后,我發(fā)現(xiàn)zuul還依賴了ribbonfeignhystrix等組件,說明zuul本身也為我們提供負(fù)載均衡的相關(guān)實現(xiàn),關(guān)于這一點,后面我們會展示。

          eureka依賴

          引入eureka的客戶端依賴是因為zuul應(yīng)用網(wǎng)關(guān)的核心實現(xiàn)其實是基于eureka實現(xiàn)的,沒有eureka的支持,zuul本身是無法發(fā)現(xiàn)服務(wù)具體地址的,關(guān)于這一點,有興趣的小伙伴可以親測下。

          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
              <version>2.2.9.RELEASE</version>
          </dependency>
          基本配置

          我們只需要在項目主類加上@EnableZuulProxy即可啟用zuul應(yīng)用網(wǎng)關(guān)

          @SpringBootApplication
          @EnableZuulProxy
          public class SpirngCloudZuulDemoApplication {

              public static void main(String[] args) {
                  SpringApplication.run(SpirngCloudZuulDemoApplication.classargs);
              }

          }

          同時,點開@EnableZuulProxy注解,我們會發(fā)現(xiàn),其實它默認(rèn)為我們集成并啟用了熔斷器,當(dāng)然從最前面的依賴也可以看出這一點。

          關(guān)于啟用Hystrix斷路器,從業(yè)務(wù)上也很好理解,應(yīng)用網(wǎng)關(guān)作為對外提供服務(wù)的窗口,在前后端交互方面是絕對的挑大梁角色,如果因為某個服務(wù)長時間未響應(yīng),導(dǎo)致請求阻塞,最后導(dǎo)致網(wǎng)關(guān)宕機(jī),這種情景是不敢想象的,網(wǎng)關(guān)一掛,意味著企業(yè)服務(wù)都涼涼了,所以集成斷路器就很有必要了。

          這里就是應(yīng)用網(wǎng)關(guān)的配置文件了,配置內(nèi)容也很簡單,一個是指定端口,一個是設(shè)定eureka注冊中心的地址。用80端口的好處,就是可以省掉端口,就很方便了

          server.port=80
          eureka.client.service-url.defaultZone=http://localhost:8999/eureka/

          訪問測試

          下面我們來進(jìn)行一些簡單的測試,首先啟動我們的注冊中心,為了方便測試,這里我們就啟動一個注冊中心,同時我們啟動應(yīng)用網(wǎng)關(guān)服務(wù)spring-cloud-zuul和產(chǎn)品服務(wù)product-service

          在產(chǎn)品服務(wù)中,我們有一個簡單的controller接口,這個接口就是上次我們測試feign負(fù)載均衡組件的時候用的,這里就直接用了。

          下面我們通過應(yīng)用網(wǎng)關(guān)訪問下我們的產(chǎn)品服務(wù),地址如下:

          http://localhost/product-service/feign

          這里解釋下我們上面的地址,localhost是應(yīng)用網(wǎng)關(guān)的服務(wù)地址,product-service是我們要訪問的服務(wù)id,這個id是我們eureka中注冊的服務(wù)id,也就是我們服務(wù)中配置的spring.application.name的值,/feign就是我們接口的地址了。這里再啰嗦一下,通過zuul網(wǎng)關(guān)訪問的服務(wù),必須在eureka中心注冊,否則無法發(fā)現(xiàn)服務(wù)。

          下面就是我們訪問結(jié)果:

          和我們直接訪問服務(wù)實際地址返回的結(jié)果也是一致的:

          同時在后端控制臺,我們會發(fā)現(xiàn)zuul的負(fù)載均衡默認(rèn)是通過ribbon實現(xiàn)的:

          內(nèi)容擴(kuò)展

          服務(wù)配置

          下面是zuul應(yīng)用網(wǎng)關(guān)的一些特殊配置:

          # 微服務(wù)映射規(guī)則
          # 配置訪問規(guī)則
          zuul.routes.product-service.path=/p/**
          # 配置服務(wù)地址
          #zuul.routes.product-service.url=http://baidu.com/
          zuul.routes.product-service.url=http://localhost:9001/
          # 指定服務(wù)id
          zuul.routes.product-service.service-id=product-service

          上面這些配置是一些特殊的訪問規(guī)則,下面簡單解釋下:

          第一行配置是設(shè)定product-service的訪問規(guī)則,也就是說只要我們的訪問地址符合/p/**的匹配規(guī)則,也就是說我們可以通過/p來訪問我們的服務(wù),而不必再指定serviceId

          第二行配置設(shè)置的是product-service的服務(wù)地址;

          第三行配置設(shè)定的是服務(wù)的service-id

          只是上面這種配置式的訪問規(guī)則,并不會觸發(fā)負(fù)載均衡,只是單純的請求轉(zhuǎn)發(fā)。關(guān)于這一點,各位小伙伴可以訪問同一個服務(wù)試下,配置式的訪問規(guī)則,服務(wù)訪問的時候只會訪問我們設(shè)定的url,而通過serviceId的方式訪問,則會默認(rèn)走負(fù)載均衡:

          總結(jié)

          好了,zuul應(yīng)用網(wǎng)關(guān)的相關(guān)知識點暫時就先分享到這里,我們目前就先分享一些簡單的應(yīng)用,后期有機(jī)會的話,我們再進(jìn)一步挖掘。

          最近一段時間,分享知識節(jié)奏有點快,到今天差不多一周的時間,我們已經(jīng)分享了eurekafeignfibbonhystrixzuul等組件,雖然節(jié)奏快,但是內(nèi)容方面我覺得應(yīng)該算是盡可能詳實了吧,當(dāng)然很多內(nèi)容的深度可能還不夠,但是現(xiàn)階段我們的目標(biāo)只是了解和應(yīng)用這些常用組件,至于各個組件的實現(xiàn)原理和高級用法,那是我的下階段目標(biāo),所以暫時就先這樣。

          項目源碼還是在老地方獲取,不清楚的小伙伴可以留言!

          - END -


          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本黄色免费视频 | 99色热 | 亚洲污污污 | 韩国日本三级在线 | 超碰在线97啪啪啪 |