1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      在Springcloud中怎么用zuul來實現(xiàn)網(wǎng)關(guān)功能-創(chuàng)新互聯(lián)

      這篇文章給大家分享的是有關(guān)在Springcloud中怎么用zuul來實現(xiàn)網(wǎng)關(guān)功能的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

      目前創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、滿洲網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

      個人分類:  Spring Cloud

      編輯

      一、簡介

      ? ? 在Springcloud中用zuul來實現(xiàn)網(wǎng)關(guān)功能,客戶端的請求首先經(jīng)過負載均衡Ngnix,再到達服務(wù)網(wǎng)關(guān)(zuul集群),然后再到具體的服務(wù)。Zuul的主要功能是路由轉(zhuǎn)發(fā)和過濾器。路由功能是微服務(wù)的一部分,比如/api/server1轉(zhuǎn)發(fā)到到server1服務(wù)。zuul默認和Ribbon結(jié)合實現(xiàn)了負載均衡的功能。愿意了解源碼的朋友直接求求交流分享技術(shù):二一四七七七五六三三 

      二、搭建

      ? ?首先是POM文件 

      
                  org.springframework.cloud
                  spring-cloud-starter-eureka
              
              
                  org.springframework.cloud
                  spring-cloud-starter-zuul
              
              
                  org.springframework.boot
                  spring-boot-starter-web
              

      ?然后在applicaton類加上注解@EnableZuulProxy,開啟zuul的功能 

      @SpringBootApplication
      @EnableZuulProxy
      @EnableEurekaClient
      @RefreshScope
      public class HfzZuulApplication {
       
          public static void main(String[] args) {
              SpringApplication.run(HfzZuulApplication.class, args);
          }
      }

      yml配置如下 

      eureka:
        client:
          serviceUrl:
            defaultZone: http://name:pass@IP/eureka/
        instance:
          ip-address: Ip地址
          prefer-ip-address: true
      server:
        port: 8769
      spring:
        application:
          name: service-zuul
        sleuth:
          sampler:
            percentage: 1.0
        cloud:
          config:
            discovery:
              enabled: true
              service-id: CONFIG-SERVER
            label: master
            profile: dev
            name: hfz-zuul
            username: name
            password: pass

      ?以上是在項目中配置的,為了使項目更加靈活,所以將路由的配置放在github上,這樣可以動態(tài)讀取 

      zuul:  
      routes:  
        api-a:    
          path: /api-a/**     
           serviceId: service-ribbon  
             api-b:    
               path: /api-b/** 
                  serviceId: service-feign

      以/api-a/ 開頭的請求都轉(zhuǎn)發(fā)給service-ribbon服務(wù);以/api-b/開頭的請求都轉(zhuǎn)發(fā)給service-feign服務(wù); 

      三、服務(wù)過濾

      zuul不僅可以路由,并且還能通過過濾來攔截一些服務(wù),可以用來做安全驗證。 

      public class MyFilter extends ZuulFilter{
       
      private static Logger log = LoggerFactory.getLogger(MyFilter.class);
      @Override
      public String filterType() {
          return "pre";
      }
       
      @Override
      public int filterOrder() {
          return 0;
      }
       
      @Override
      public boolean shouldFilter() {
          return true;
      }
       
      @Override
      public Object run() {
          RequestContext ctx = RequestContext.getCurrentContext();
          HttpServletRequest request = ctx.getRequest();
          log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));
          Object accessToken = request.getParameter("token");
          if(accessToken == null) {
              log.warn("token is empty");
              ctx.setSendZuulResponse(false);
              ctx.setResponseStatusCode(401);
              try {
                  ctx.getResponse().getWriter().write("token is empty");
              }catch (Exception e){}
       
              return null;
          }
          log.info("ok");
          return null;
       }
      }

      filterType:返回一個字符串代表過濾器的類型,在zuul中定義了四種不同生命周期的過濾器類型,具體如下: 
      pre:路由之前
      routing:路由之時
      post: 路由之后
      error:發(fā)送錯誤調(diào)用
      filterOrder:過濾的順序
      shouldFilter:邏輯判斷,是否要過濾
      run:過濾器的具體邏輯控制
      接下來就可以測試訪問了。 

      技術(shù)架構(gòu)圖如下: 資料和源碼來源 

      在Springcloud中怎么用zuul來實現(xiàn)網(wǎng)關(guān)功能

      感謝各位的閱讀!關(guān)于“在Springcloud中怎么用zuul來實現(xiàn)網(wǎng)關(guān)功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


      新聞標題:在Springcloud中怎么用zuul來實現(xiàn)網(wǎng)關(guān)功能-創(chuàng)新互聯(lián)
      路徑分享:http://www.ef60e0e.cn/article/ddcpsj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        西贡区| 杭锦旗| 金山区| 旬阳县| 嘉义市| 曲水县| 平果县| 阳新县| 温泉县| 任丘市| 佛山市| 南和县| 定南县| 昌吉市| 齐河县| 简阳市| 客服| 绩溪县| 诸城市| 临武县| 巴中市| 湖州市| 民丰县| 靖远县| 兴隆县| 新疆| 磐石市| 泰安市| 宝清县| 石嘴山市| 固原市| 莲花县| 乳源| 巴南区| 高淳县| 冕宁县| 华蓥市| 义马市| 扎鲁特旗| 东丰县| 都江堰市|