国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一起學(xué)習(xí)使用Spring Cloud Netflix之Zuul

FullStackDeveloper / 1059人閱讀

摘要:前言在體系中扮演著統(tǒng)一網(wǎng)關(guān)的角色,負(fù)責(zé)與外部交互。與結(jié)合使用,可以根據(jù)服務(wù)名來(lái)訪問后端的服務(wù),對(duì)于而言,也是一個(gè)。這段代碼表示,如果請(qǐng)求中沒有信息,就會(huì)報(bào)錯(cuò)。

前言

Zuul在Spring Cloud 體系中扮演著統(tǒng)一網(wǎng)關(guān)的角色,負(fù)責(zé)與外部交互。用戶可以通過(guò)不同的URL特征來(lái)訪問不同的后端服務(wù),類似于Nginx代理的效果。Zuul與Eureka結(jié)合使用,可以根據(jù)服務(wù)名來(lái)訪問后端的服務(wù),對(duì)于Eureka而言,Zuul也是一個(gè)Eureka Client。系統(tǒng)的信息流入流出都需要經(jīng)過(guò)Zuul,在Zuul中,我們可以統(tǒng)一監(jiān)控流量,統(tǒng)一安全認(rèn)證,統(tǒng)一報(bào)文組裝等等。

本文來(lái)源于我的博客網(wǎng)站:http://51think.net

一、Zuul網(wǎng)關(guān)在本例中的架構(gòu)

從圖中可以看到,之前博客中提到的srping-cloud-ribbon-client應(yīng)用以及spring-cloud-eureka-myservice應(yīng)用都有參與。這兩個(gè)應(yīng)用和spring-cloud-zuul都屬于Eureka的client,因此都需要在Eureka中進(jìn)行注冊(cè),否則無(wú)法相互調(diào)用。

二、創(chuàng)建Zuul應(yīng)用

1、IDEA創(chuàng)建module,選擇Zuul

2、pom文件中添加web組件以及Eureka組件



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.example
    spring-cloud-zuul
    0.0.1-SNAPSHOT
    spring-cloud-zuul
    Demo project for Spring Boot

    
        1.8
        Greenwich.SR2
    

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-zuul
        
      
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

3、applicaton類加上注解@EnableZuulProxy和@EnableEurekaClient,開啟Zuul功能

@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class SpringCloudZuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudZuulApplication.class, args);
    }

}

4、修改application.yml文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8010/eureka/
server:
  port: 8030
spring:
  application:
    name: cloudZuul
zuul:
  routes:
    ribbonClient:
      path: /ribbonClient/**
      serviceId: ribbonClient

其中 path: /ribbonClient/**表示URL中如果帶有/ribbonClient/將被代理到serviceId為ribbonClient的服務(wù)中去。

三、啟動(dòng)觀察

啟動(dòng)spring-cloud-zuul之后,訪問Eureka面板,觀察cloudZuul是否在服務(wù)列表中。

在之前的ribbon博客中,我們的訪問地址是http://localhost:8020/sayHello?say=helloWorld,現(xiàn)在我們通過(guò)Zuul來(lái)訪問spring-cloud-ribbon-client應(yīng)用,在瀏覽器中使用此地址進(jìn)行訪問:http://localhost:8030/ribbonClient/sayHello?say=helloWorld,可以發(fā)現(xiàn)訪問效果和直接訪問http://localhost:8020/sayHello?say=helloWorld的效果是一致的。

四、使用服務(wù)過(guò)濾

服務(wù)過(guò)濾就是一個(gè)filter,它可以在指定事件中(路由前,路由中,路由后等)執(zhí)行相關(guān)操作。Zuul中提供了一個(gè)filter接口,實(shí)現(xiàn)它即可。

@Component
public class TokenFilter extends ZuulFilter {

        @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();
            Object accessToken = request.getParameter("token");
            if(accessToken == null) {
                ctx.setSendZuulResponse(false);
                ctx.setResponseStatusCode(401);
                try {
                    ctx.getResponse().getWriter().write("token is not exist!");
                }catch (Exception e){}

                return null;
            }
            return null;
    }
}

這段代碼表示,如果請(qǐng)求中沒有token信息,就會(huì)報(bào)錯(cuò)“token is not exist!”。關(guān)注filterType字段,它代表過(guò)濾器的類型,具體如下:
pre:路由之前會(huì)調(diào)用
route:路由轉(zhuǎn)發(fā)的時(shí)候會(huì)調(diào)用
error:處理請(qǐng)求時(shí)發(fā)生錯(cuò)誤時(shí)會(huì)調(diào)用
post:運(yùn)行結(jié)束被調(diào)用

我們?cè)俅沃貑⒁幌聅pring-cloud-zuul,瀏覽器再次訪問http://localhost:8030/ribbonClient/sayHello?say=helloWorld,會(huì)發(fā)現(xiàn)如下錯(cuò)誤提示:

加上token參數(shù)之后,即可正常訪問:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/75846.html

相關(guān)文章

  • 深入理解Spring Cloud與微服務(wù)構(gòu)建【二】 - 2.2 Spring Cloud

    摘要:負(fù)載均衡組件是一個(gè)負(fù)載均衡組件,它通常和配合使用。和配合,很容易做到負(fù)載均衡,將請(qǐng)求根據(jù)負(fù)載均衡策略分配到不同的服務(wù)實(shí)例中。和配合,在消費(fèi)服務(wù)時(shí)能夠做到負(fù)載均衡。在默認(rèn)的情況下,和相結(jié)合,能夠做到負(fù)載均衡智能路由。 2.2.1 簡(jiǎn)介 Spring Cloud 是基于 Spring Boot 的。 Spring Boot 是由 Pivotal 團(tuán)隊(duì)提供的全新 Web 框架, 它主要的特點(diǎn)...

    Rocko 評(píng)論0 收藏0
  • 分布式微服務(wù)架構(gòu)選項(xiàng)

    摘要:分布式架構(gòu)五大核心套件服務(wù)發(fā)現(xiàn)云端服務(wù)發(fā)現(xiàn),一個(gè)基于的服務(wù),用于定位服務(wù),以實(shí)現(xiàn)云端中間層服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移。 1 后端技術(shù)框架我們選擇Spring Cloud作為微服務(wù)的分布式架構(gòu):Spring Cloud vs Dubbo? 背景 Dubbo,是阿里巴巴服務(wù)化治理的核心框架,并被廣泛應(yīng)用于阿里巴巴集團(tuán)的各成員站點(diǎn)。Spring Cloud,是Spring Source的產(chǎn)物...

    Rocture 評(píng)論0 收藏0
  • 分布式微服務(wù)架構(gòu)選項(xiàng)

    摘要:分布式架構(gòu)五大核心套件服務(wù)發(fā)現(xiàn)云端服務(wù)發(fā)現(xiàn),一個(gè)基于的服務(wù),用于定位服務(wù),以實(shí)現(xiàn)云端中間層服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移。 1 后端技術(shù)框架我們選擇Spring Cloud作為微服務(wù)的分布式架構(gòu):Spring Cloud vs Dubbo? 背景 Dubbo,是阿里巴巴服務(wù)化治理的核心框架,并被廣泛應(yīng)用于阿里巴巴集團(tuán)的各成員站點(diǎn)。Spring Cloud,是Spring Source的產(chǎn)物...

    Labradors 評(píng)論0 收藏0
  • Spring Cloud 快速入門

    摘要:服務(wù)注冊(cè)中心一個(gè)服務(wù)注冊(cè)中心,所有的服務(wù)都在注冊(cè)中心注冊(cè),負(fù)載均衡也是通過(guò)在注冊(cè)中心注冊(cè)的服務(wù)來(lái)使用一定策略來(lái)實(shí)現(xiàn)。在客戶端實(shí)現(xiàn)了負(fù)載均衡。 文章參考于史上最簡(jiǎn)單的 SpringCloud 教程 | 終章 Spring Cloud 是一個(gè)微服務(wù)框架,與 Spring Boot 結(jié)合,開發(fā)簡(jiǎn)單。將一個(gè)大工程項(xiàng)目,分成多個(gè)小 web 服務(wù)工程,可以分別獨(dú)立擴(kuò)展,又可以共同合作。 環(huán)境 ...

    fuyi501 評(píng)論0 收藏0
  • Spring Cloud 參考文檔(客戶端負(fù)載均衡器:Ribbon)

    摘要:客戶端負(fù)載均衡器是一個(gè)客戶端負(fù)載均衡器,可以讓你對(duì)和客戶端的行為進(jìn)行大量控制,已經(jīng)使用了,因此,如果你使用,此部分也適用。 客戶端負(fù)載均衡器:Ribbon Ribbon是一個(gè)客戶端負(fù)載均衡器,可以讓你對(duì)HTTP和TCP客戶端的行為進(jìn)行大量控制,F(xiàn)eign已經(jīng)使用了Ribbon,因此,如果你使用@FeignClient,此部分也適用。 Ribbon中的一個(gè)核心概念是命名客戶端,每個(gè)負(fù)載均...

    Songlcy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

FullStackDeveloper

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<