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

Easter79
• 阅读 281

本篇延续上篇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();
    }
}

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

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

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
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个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Easter79 Easter79
1年前
SpringCloud常用组件
springcloud中有五大核心组件Eureka、Ribbon、Feign、Hystrix、Zuul,简单记录如下。Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。EurekaClient组件专门负责将服务的信息注册到EurekaServer中,而EurekaServer是一个注册中心,里面有一个注册表,保存了各服务所在
Stella981 Stella981
1年前
Spring Cloud Alibaba Nacos 服务配置中心和注册中心
学习在SpringCloud中使用Nacos实现服务配置中心和注册中心,类似SpringCloudConfig和SpringCloudNetflixEureka提供的功能。1概述SpringCloudAlibaba是阿里巴巴提供的一套微服务开发一站式解决方案。主要提供的功能:分布式配置中心
Stella981 Stella981
1年前
Golang注册Eureka的工具包goeureka发布
1.简介提供Go微服务客户端注册到Eureka中心。点击:github地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2FSimonWang00%2Fgoeureka),欢迎各位多多star!(已通过测试验证,用于正式生产部署)2.原理
Easter79 Easter79
1年前
SpringCloud微服务(05):Zuul组件,实现路由网关控制
一、Zuul组件简介1、基础概念Zuul网关主要提供动态路由,监控,弹性,安全管控等功能。在分布式的微服务系统中,系统被拆为了多个微服务模块,通过zuul网关对用户的请求进行路由,转发到具体的后微服务模块中。2、Zuul的作用1)按照不同策略,将请求转发到不同的服务上去;
Easter79 Easter79
1年前
SpringCloud介绍
自己通俗的理解只能是Http协议调用,Dubbo可以支持多种协议就是RPC远程调用就是提供服务注册,服务发现,断路器,网关系统和自动配置的工具,底层采用http协议实现采用Eureka注册中Ribbon实现负载均衡Feignhttp协议调用工具Hystrix断路器Zuul网关系统就是把API服务通过注册中心
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue