Springboot 实践(11)Spring Cloud 与zuul 路由配置与应用

        前文讲解springboot cloud与consul的服务注册与发现,为多微服务程序互联互通做了准备;那么,各个微服务之间是直接调用IP或者域名实现接口调用,还是有其他方式呢?其实,可以通过搭建zuul服务,实现通过路由调用不同微服务。

        Zuul是Netflix开源的微服务网关;Spring Cloud对Zuul进行了整合与增强,Zuul默认使用的HTTP客户端是Apache HTTPClient,也可以使用RestClient或okhttp3.OkHttpClient。 Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/demo/test转发到到demo服务。

        zuul的核心是一系列的filters, 其作用类比Servlet框架的Filter,或者AOP。zuul把请求路由交到用户处理逻辑的过程中,这些filter参与一些过滤处理,比如Authentication,Load Shedding等

        Zuul使用一系列不同类型的过滤器,使我们能够快速灵活地将功能应用于我们的边缘服务。这些过滤器可帮助我们执行以下功能:

☆ 身份验证和安全性 - 确定每个资源的身份验证要求并拒绝不满足这些要求的请求

☆ 洞察和监控 - 在边缘跟踪有意义的数据和统计数据,以便为我们提供准确的生产视图

☆ 动态路由 - 根据需要动态地将请求路由到不同的后端群集

☆ 压力测试 - 逐渐增加群集的流量以衡量性能。

☆  Load Shedding - 为每种类型的请求分配容量并删除超过限制的请求

☆ 静态响应处理 - 直接在边缘构建一些响应,而不是将它们转发到内部集群

        下面我们讲解在项目中如何配置zuul动态路由。为了更好的验证上文讲解的服务注册与发现、及不同路由之间的跳转,我们重新建立一个新工程,命名为SpringbootAction-two,工程创建过程请参考文章“Springboot 实践(1)MyEclipse2019创建maven工程”,此处不做赘述!

1、新建SpringbootAction-two项目

        项目SpringbootAction-two,主要实现服务注册、不连接数据库,端口使用2886(区别于SpringbootAction-one的2885端口),项目配置过程,如下:

(1)配置pom.xml文件

  • Copy项目SpringbootAction-one中pom.xml文件,由于不连接数据库,注释如下代码:

  

   

        mysql

        mysql-connector-java

   

   

   

        com.alibaba

        druid-spring-boot-starter

        1.1.10

(2)添加springboot启动函数

Copy项目SpringbootAction-one中ActionApp.java文件,修改配置注解,修改后如下:

//配置默认不启动数据链接;

@SpringBootApplication(scanBasePackages= {"com.SJL"},exclude = {

        DataSourceAutoConfiguration.class,

        DataSourceTransactionManagerAutoConfiguration.class,

        HibernateJpaAutoConfiguration.class})

@ComponentScan(basePackages= {"com.SJL"})

@EnableResourceServer  //配置启动资源服务器

@ServletComponentScan(basePackages= {"com.SJL"})

(3)添加配置文件

☆ Copy项目SpringbootAction-one中CorsConfig.java(跨域访问)、OAuthResourcesServerConfig.java(资源服务器配置)、SwaggerConfig.java(swagger-ui配置)、WebSecurityConfig.java(security配置)文件。

☆ 添加登录代码

☆ 添加登录跳转页面mainfunction.html(mainfunction主界面html页面名称)

(4) 启动项目

2、改造SpringbootAction-one项目

       (1)配置pom.xml文件

添加zuuljar包 

            org.springframework.cloud

            spring-cloud-starter-netflix-zuul

            2.0.0.RELEASE

 

            org.springframework.security.oauth.boot

            spring-security-oauth2-autoconfigure

            2.0.1.RELEASE

       

(2)修改application.xml,添加如下路由设置:

zuul:

  host:

    socket-timeout-millis: 60000

    connect-timeout-millis: 60000

  #需要忽略的头部信息,不在传播到其他服务

  sensitive-headers: Access-Control-Allow-Origin

  ignored-headers: Access-Control-Allow-Origin,H-APP-Id,Token,APPToken

  routes:

#路由配置完成之后,到WebSecurity放行配置路径

    SpringbootAction-one:

      path: /one/**

      serviceId: SpringbootAction-one

SpringbootAction-two:

      path: /two/**

      serviceId: SpringbootAction-two

(3)为启动类添加注解@EnableZuulProxy

(4)启动项目

SpringbootAction-one与SpringbootAction-two启动成功后,服务注册页面希纳是如下:

Springboot 实践(11)Spring Cloud 与zuul 路由配置与应用_第1张图片

 

3、路由测试

(1)SpringbootAction-one项目测试

在浏览器中,输入http://localhost:2885/index,浏览器返回如下:

Springboot 实践(11)Spring Cloud 与zuul 路由配置与应用_第2张图片

 

(2)SpringbootAction-two项目测试

在浏览器中,输入http://localhost:2885/two/index,浏览器返回如下:

Springboot 实践(11)Spring Cloud 与zuul 路由配置与应用_第3张图片

 

备注:访问两个微服务使用的域名端口号均为http://localhost:2885,在访问SpringbootAction-two微服务时,使用“/two/index”进行路由跳转。

Springboot 实践(11)Spring boot 与zuul 配置与应用到此讲解结束;下文讲解spring cloud config配置与运用,实现yml文件的集中配置。

你可能感兴趣的:(spring,boot,spring,cloud,后端,zuul,路由配置)