• 68046

    文章

  • 643

    评论

  • 65

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

SpringCloud 微服务 (十三) 服务网关 Zuul 路由

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

本篇延续上篇Zuul基础学习,做一个实践测试

在之前学习的篇章中,一直积累学习,所以这边已经存在注册中心,product服务,order服务,config配置中心等等服务,每次写demo,注册中心和配置中心都是一直先启动,本次学习Zuul也不例外

 

新建一个服务 ,第一步利用IDEA创建

第二步,选择红框中的组件,一般服务我都会加上Web

第三步开始配置,将application.properties文件改成bootstrap.yml,如果忘了为什么这样改,可以回头看看Spring cloud config & Spring cloud bus等内容,内容如下

spring:
  application:
    name: gateway
  cloud:
    config:
      discovery:
        service-id: CONFIG
        enabled: true
      profile: dev

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

第四步,都是套路,在启动类上添加开启组件注解@EnableZuulProxy

package com.cloud.gateway;

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

@SpringBootApplication
@EnableZuulProxy
public class GatewayApplication {

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

说明下目前启动相关服务以及端口->eureka server:8761,config:8000,product:9000,order:9001,docker 中rabbitMQ:5672,gateway:7000-->从gateway网关访问product服务中的接口

目前网关服务中未添加任何过滤器,先试试效果,下图是启动后注册中心的3个服务发现

在product服务中,之前写好的简单查询接口: localhost:9000/product/list 返回一个列表

现在从gateway网关去访问: localhost:7000/product/product/list 就可以访问到了

第一个product是注册中心的application的名字,后面product/list是接口

访问config也是没问题的,访问方式:localhost:7000/config/config/product-dev.yml

但是呢,有个性的我每次都根据service-id来写,明显不是那么合我口味,于是可以添加yml配置

zuul:
  routes: 
    MyProduct: #这个可以自定义
      path: /myProduct/**
      serviceId: product

意思是访问服务中心serviceId是product的服务,访问path方式是/myProduct/**, **代表所有该服务接口,可以浏览器访问试试

如果想要看到所有路由,可以打开actuator监控,在springboot2.0以后,actuator改动比较大,在之前的笔记中有记录相关内容,如果你使用的是2.0之前的版本,配置自己适合的方式就可以,这里以springboot2.0.3版本为例,以下配置,以及监控信息展示,上面是目前的所有路由

management:
  endpoints:
    web:
      exposure:
        include: ["routes"]

还有一种简洁的路由写法,其中ignored是排除接口,set类型的参数,使用- /path方式配置

zuul:
  routes:
    product: /myProduct/**
  ignored-patterns: 
    - /**/product/hello

 

另外说个点,Zuul默认是不接收cookie,需要配置才可以,贴上完整的配置

spring:
  application:
    name: gateway
  cloud:
    config:
      discovery:
        service-id: CONFIG
        enabled: true
      profile: dev

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

zuul:
  routes:
    product: /myProduct/**
  sensitiveHeaders:        #设置空即可,可用于接收cookie
  ignored-patterns:
    - /**/product/hello

management:
  endpoints:
    web:
      exposure:
        include: ["routes"]

 

关于路由,在开发的时候,我们会加服务,加了服务,就要改动配置,都要重新启动什么的,相信大家都知道,用到之前学过的springcloud bus结合MQ实现配置动态刷新springcloud config

配置刷新了,我们还要在代码中也做到动态更新到运行中,所以可以在启动类下面加一段:

@SpringBootApplication
@EnableZuulProxy
public class GatewayApplication {

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

    @ConfigurationProperties("zuul")
    @RefreshScope
    public ZuulProperties zuulProperties(){
        return new ZuulProperties();
    }
}

 

以上是粗略的路由相关的笔记,下来继续学习过滤器相关的内容

---------------------------------------------


 转载至链接:https://my.oschina.net/u/3829444/blog/1842657。

695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

欢迎来到梁钟霖个人博客网站。本个人博客网站提供最新的站长新闻,各种互联网资讯。 还提供个人博客模板,最新最全的java教程,java面试题。在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步!

转载原创文章请注明出处,转载至: 梁钟霖个人博客www.liangzl.com

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤
注册梁钟霖个人博客