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)

    生于忧患,死于安乐
  • 相关阅读:
    为什么linux有足够的内存还进行swap?
    vmstat命令的使用
    Windows远程服务器不能复制粘贴
    Windows可以ping通百度,但是用浏览器打不开网页
    java形式参数分别是基本类型和引用类型的调用
    Ubuntu16.04安装Python3.6 和pip
    Python2/3共存,pip2/3共存
    multiprocessing模块
    Python-进程与线程
    鼠标不能动,插上了但没反应
  • 原文地址:https://www.cnblogs.com/songlove/p/15769215.html
Copyright © 2011-2022 走看看