zoukankan      html  css  js  c++  java
  • idea创建zuul网关实现路由功能入门实例

    zuul这个框架现在以及停止更新了,但是我感觉学习框架需要了解其实现原理,知道是解决了哪些问题,面试问到的时候最起码知道这是干啥的,其余的都是扯淡。。。

    spring cloud zuul 是作为微服务的网关出现的,微服务网关的作用就是解决客户端调用不同的微服务时,不能单独直连各个微服务假如直连的话,就会面临每个接收的微服务都需要自己的一套会话保持处理,过滤器拦截处理,签名校验等等问题,代码的冗余度会很高。打个比方微服务就好比医院提供负责体检的各个门诊,那网关就类似于去挂号。只有先经过挂号拿到挂号单,就可以直接去各个科室体检,各个科室类似于各个微服务。

    sping cloud zuul提供了路由转发和过滤器两个功能,这篇随笔只介绍路由转发

    路由转发就是加入服务配置了由A映射到B,那么当客户端访问A时,经过路由转发就相当于访问了B

    创建一个SpringBoot项目,引入zuul的项目依赖,需要注意对应的版本

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

    在应用的启动类中需要加入@EnableZuulProxy注解 

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

    在配置文件中添加

    spring.application.name=api-zuul
    server.port=8554
    zuul.routes.api-a.path=/api-a/**
    zuul.routes.api-a.url=http://localhost:8056/

    启动服务

    访问http://localhost:8554/api-a/consumer/calldemo4就相当于访问了http://localhost:8056/consumer/calldemo4,注意不要加上应用名。

    以上都是传统的路由转发,在微服务中引用了注册中心的话,利用eureka的实例,进行路由转发的实现将更加灵活。

    先引入maven坐标

     <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
       <version>1.4.2.RELEASE</version>
     </dependency>

    在应用主类上添加@EnableZuulProxy注解

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

    配置文件:

    spring.application.name=api-zuul
    server.port=8554
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka
    zuul.routes.api-a.path=/api-a/**
    zuul.routes.api-a.url=http://localhost:8056/
    zuul.routes.api-b.path=/api-b/**
    zuul.routes.api-b.url=eureka-demo-consumer

    查看eureka注册中心,发现服务已经注册上了

    访问http://localhost:8554/api-b/consumer/calldemo4 

    将代码传到gitee:cloud_demo: springcloud样例 (gitee.com)

    生于忧患,死于安乐
  • 相关阅读:
    Web开发(二)HTML
    Web开发(一)基础
    Python基础(十二)并发编程02
    Python基础(十一)并发编程01
    Python基础(十)socket编程
    Python基础(九)异常
    计算机基础
    Python基础(八)面向对象02
    jmeter使用正则表达式提取数据
    jmeter+ant 实现自动化接口测试环境配置
  • 原文地址:https://www.cnblogs.com/songlove/p/15769215.html
Copyright © 2011-2022 走看看