首页 /  技术专区  /  SpringCloud 宽屏模式 >

Zuul:路由网关

什么是Zuul?

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

其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合, 将ZuuI自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

注意: Zuul服务最终还是会注册进Eureka

提供:代理+路由+过滤三大功能!

Zuul能干嘛?

●路由

●过滤


代码:

1.新建Module,springcloud-zuul-9527。

image.png

2.复制springcloud-consumer-hystrix-dashboard里面的依赖到springcloud-zuul-9527并新增zuul依赖。

image.png

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

3.配置application.yml

image.png

server:
  port: 9527

spring:
  application:
    name: springcloud-zuul

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
    instance:
      instance-id: zuul9527.com
      prefer-ip-address: true

info:
  app.name: allen-springcloud
  company.name: blog.allen.com

4.配置主启动类。

image.png

package com.allen.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

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

5.启动测试

image.png

可以通过9527和服务名称来直接访问。image.png

但是这样也出现了问题,我们暴露了微服务的名称,接下来我们配置zuul隐藏微服务的真实名称。

image.png

zuul:
  routes:
    mydept.serviceId: springcloud-provider-dept
    mydept.path: /mydept/**
  #ignored-services: springcloud-provider-dept #不能使用这个路径访问了
  ignored-services: "*" #隐藏全部原有微服务名称
  prefix: /allen #设置统一的前缀

接下来重启服务,进行测试。

image.png

这样就可以根据自己定义的名称进行调用接口了。


头像
0/200
图片验证码