Spring Cloud之—— Zuul(网关)

简介

路由是微服务架构的组成部分。 例如,/可以映射到您的Web应用程序,/ api/users映射到用户服务,/api/shop映射到商店服务。 Zuul是Netflix基于JVM的路由器和服务器端负载均衡器。

Netflix使用Zuul进行以下操作:
认证
洞察
压力测试
金丝雀测试
动态路由
服务迁移
负载脱落
安全
静态响应处理
主动/主动流量管理

Zuul的规则引擎允许任何JVM语言编写规则和过滤器,内置支持Java和Groovy。

配置属性zuul.max.host.connections已被两个新属性zuul.host.maxTotalConnections和zuul.host.maxPerRouteConnections取代,它们分别默认为200和20。

所有路由的默认Hystrix隔离模式(ExecutionIsolationStrategy)是SEMAPHORE。 如果首选此隔离模式,则可以将zuul.ribbonIsolationStrategy更改为THREAD。

Spring Cloud之—— Zuul(网关)_第1张图片
Zuul 是通过Eureka 调用的组件并做为EurekaClient 端一起使用,所以提前启动Eureka 服务,请看上一篇博客

构建项目

  • 跟我们之前构建项目一样, 使用idea 工具直接创建一个新的SpringBoot 项目,在选择依赖的界面勾选Cloud Discovert -> Zuul 依赖,创建完成后的pom.xml 配置文件内容如下:
		
		<dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-zuulartifactId>
        dependency>
        
		<dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
        dependency>

  • 在主启动类上添加Zuul 的注解@EnableZuulProxy ,如下所示:
@EnableZuulProxy
public class ZuulApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
    }

}
  • 因为Zuul 是一个网关,它和nginx 一样只负责转发请求,所以我们得启动需要转发到客户端并注册进Eureka 的服务,这里我默认启动一个服务(服务的ApplicationNameHelloZuul),访问地址为:localhost:8080/hello ,访问结果(页面显示):hello world!

Spring Cloud之—— Zuul(网关)_第2张图片

  • application.properties配置文件内容
server.port=8081
# zuul标识你服务的名字,这里是自己定义,一般方便和规范来讲还是跟自己服务的名字一样
# /hello/** 需要拦截8081所有以hello开头的请求
zuul.routes.zuul.path=/zuul/**
# zuul标识你服务的名字,这里是自己定义,一般方便和规范来讲还是跟自己服务的名字一样
# HelloZuul是转发服务的ApplicationName
zuul.routes.zuul.service-id=HelloZuul

运行测试

浏览器访问地址为:localhost:8081/zuul/hello 会转发到localhost:8080/hello相当于访问localhost:8080/hello

你可能感兴趣的:(架构)