青柠开车Spring Cloud(五) —— spring cloud的窗口zuul(路由和过滤器)

项目源码github地址

什么是zuul

zuul在之前我举得例子中,担任的是警察的角色。准确的说zuul可以是一个窗口,任何访问业务模块的请求都经过zuul进行转发。

官方定义:Zuul是Netflix开源的微服务网关,他可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul组件的核心是一系列的过滤器,这些过滤器可以完成以下功能:

  • 身份认证和安全: 识别每一个资源的验证要求,并拒绝那些不符的请求
  • 审查与监控:
  • 动态路由:动态将请求路由到不同后端集群
  • 压力测试:逐渐增加指向集群的流量,以了解性能
  • 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求
  • 静态响应处理:边缘位置进行响应,避免转发到内部集群
  • 多区域弹性:跨域AWS Region进行请求路由,旨在实现ELB(ElasticLoad Balancing)使用多样化

快速入门

spring-cloud创建spring-cloud-zuul模块项目,如下图:

zuul项目基本配置

  • pom.xml引入zuul的jar包

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
</dependencies>
  • application.properties配置

server.port= 8561
# 服务名称
spring.application.name=gateway_zuul
# 访问路径
server.servlet.context-path=/zuul

# spring-web 项目的路由配置
zuul.routes.web.path=/**
zuul.routes.web.url=http://127.0.0.1:8661/
zuul.routes.web.sensitiveHeaders="*"
  • ZuulApplication.java中加入@EnableZuulProxy注解

/**
 * @author : R&M www.rmworking.com/blog
 *         2018/9/16 22:37
 *         spring-cloud
 *         org.qnloft.zuul
 */
@EnableZuulProxy
@SpringBootApplication
public class ZuulApplication {

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

现在尝试访问http://127.0.0.1/zuul/index,会出现HelloWorldController中返回的结果。

zuul加入eureka-server中,实现高可用

  • pon.xml中加入eureka-client的jar包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • application.properties中加入eureka-server的地址

eureka.client.serviceUrl.defaultZone= http://localhost:8761/eureka/
  • ZuulApplication.java中加入@EnableEurekaClient注解
posted @ 2018-09-16 23:55  青柠Loft  阅读(614)  评论(0编辑  收藏  举报
qnloft 青柠的Blog