SpringCloud: zuul路由网关,gateway

前言:

  在微服务架构中的两大核心就是注册中心和路由网关,此篇介绍的就是springclloud netfix中负责路由网关的组件,zuul

一,什么是zuul

  zuul包含了对请求的路由和过滤两个主要功能

  其中路由和功能负责外部请求转发到具体服务实例上,是实现外部统一入口的基础,而过滤功能负责对请求的处理过程进行干预,实现请求校验,服务聚合等功能的基础;

  zuul对Eureka进行整合,将zuul自身注册为eureka服务治理下的应用,同时从eureka获得其他服务的信息,就是说消费者获取服务是要先通过zuul跳转获得

总结:

  zuul将eureka管理的微服务又封装了一层,所有消费者要获取服务都要通过zuul去转发,因此客户端是得不到真实的服务地址的,客户端访问的是指定服务zuul地址,提高了系统的安全性

  通俗的说Zuul属于服务提供者,只不过提供的是路由网关的服务

二,配置zuul

新建一个服务用来实现zuul

导入相关依赖

<dependencies>

        <!--zuul,路由网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <!--hystrix-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--dashboard流监控-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <!--ribbon=负载均衡-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--eureka,注册中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <!--实体类+web-->
        <dependency>
            <groupId>com.king</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>
View Code

yaml配置

server:
  port: 9527

#微服务id
spring:
  application:
    name: spring-zuul

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
#实例id
  instance:
    instance-id: zuul9527.com
    #显示ip
    prefer-ip-address: true

#zuul
zuul:
  routes:
    mydept.serviceId: springcloud-provider-dept
    mydept.path: /mydept/**
  ignored-services: "*"  #不能在使用这个路径访问了,ignored:忽略,隐藏全部的真实项目地址
#  prefix: 设置统一的前缀


info:
  app.name: springCloud-zuul-gateway
  company.name: king
View Code

主启动类配置,@EnableZuulProxy //开启网关代理

@SpringBootApplication
@EnableZuulProxy   //开启网关代理
public class ZuulApplication_9527 {

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

总环:zuul可以简单理解为在众多微服务外面又包裹了一层,同时屏蔽内部细节,封装的思想

原文地址:https://www.cnblogs.com/CL-King/p/14349188.html