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

Easter79
• 阅读 646

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

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

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

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

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

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

第三步开始配置,将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个服务发现

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

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

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

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

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

访问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"]

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

还有一种简洁的路由写法,其中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();
    }
}

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Nepxion Discovery 5.5.0 发布
!(https://oscimg.oschina.net/oscnet/f81c043194ef4732880459d00c1a720e.png)发布日志功能更新:增加基于Opentracing调用链的支持,目前支持UberJaeger,实现在SpringCloudGateway、Zuul和服务上的灰度
Easter79 Easter79
3年前
SpringCloud常用组件
springcloud中有五大核心组件Eureka、Ribbon、Feign、Hystrix、Zuul,简单记录如下。Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。EurekaClient组件专门负责将服务的信息注册到EurekaServer中,而EurekaServer是一个注册中心,里面有一个注册表,保存了各服务所在
Stella981 Stella981
3年前
Spring Cloud Alibaba Nacos 服务配置中心和注册中心
学习在SpringCloud中使用Nacos实现服务配置中心和注册中心,类似SpringCloudConfig和SpringCloudNetflixEureka提供的功能。1概述SpringCloudAlibaba是阿里巴巴提供的一套微服务开发一站式解决方案。主要提供的功能:分布式配置中心
Stella981 Stella981
3年前
Golang注册Eureka的工具包goeureka发布
1.简介提供Go微服务客户端注册到Eureka中心。点击:github地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2FSimonWang00%2Fgoeureka),欢迎各位多多star!(已通过测试验证,用于正式生产部署)2.原理
Easter79 Easter79
3年前
SpringCloud微服务(05):Zuul组件,实现路由网关控制
一、Zuul组件简介1、基础概念Zuul网关主要提供动态路由,监控,弹性,安全管控等功能。在分布式的微服务系统中,系统被拆为了多个微服务模块,通过zuul网关对用户的请求进行路由,转发到具体的后微服务模块中。2、Zuul的作用1)按照不同策略,将请求转发到不同的服务上去;
Easter79 Easter79
3年前
SpringCloud 微服务 (十四) 服务网关 Zuul 过滤器(Pre&Post)
壹上篇学习了zuul路由,这边继续学习,粗糙的记录zuul过滤器的用法贰现在对请求url做个约定,在请求url上没有带参数key123的url全部过滤掉①localhost:7000/product/list?key1234        不过滤②localhost:7000/product/list         
Easter79 Easter79
3年前
SpringCloud介绍
自己通俗的理解只能是Http协议调用,Dubbo可以支持多种协议就是RPC远程调用就是提供服务注册,服务发现,断路器,网关系统和自动配置的工具,底层采用http协议实现采用Eureka注册中Ribbon实现负载均衡Feignhttp协议调用工具Hystrix断路器Zuul网关系统就是把API服务通过注册中心
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k