1. 概述

老话说的好:做人要有幽默感,懂得幽默的人才会活的更开心。

言归正传,今天我们来聊聊 SpringCloud 的网关组件 Gateway,之前我们去访问 SpringCloud 不同服务的接口,都要去找每个服务的 IP地址 和 端口,有了 Gateway 这个组件,我们就可以从一个入口,去访问所有在 Eureka 中注册的服务。

闲话不多说,直接上代码。

2. Gateway 工程的搭建

2.1 主要依赖

        <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

2.2 application.yml 主要配置

server:
port: 44000 spring:
application:
name: my-gateway
cloud:
gateway:
discovery:
locator:
enabled: true eureka:
client:
service-url:
defaultZone: http://zhuifengren1:35000/eureka/,http://zhuifengren2:35001/eureka/ # Eureka Server的地址 management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always

2.3 启动类注解

@SpringBootApplication
@EnableDiscoveryClient
public class MyGateWayApplication { public static void main(String[] args) {
SpringApplication.run(MyGateWayApplication.class, args);
}
}

2.4 启动 Gateway 服务,并访问测试

1)启动 Eureka 服务

2)启动之前章节中讲到的 my-eureka-client 服务

3)启动 Gateway 服务

4)通过 Gateway 服务调用 my-eureka-client 服务暴露的接口

接口地址:http://localhost:44000/MY-EUREKA-CLIENT/eurekaClient/hello

地址格式:http://Gateway服务IP:端口/服务名大写/请求路径

2.5 地址中服务名改为小写

刚刚的实验中,我们发现,通过 Gateway 访问服务接口,服务的名称必须写为大写,才能正确访问接口,有点不习惯,我们可以通过配置将其统一改为小写。

增加如下配置即可:

cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true # service-id 是否用小写

3. 自定义动态路由

3.1 概述

有时我们不想用服务名当做接口的前缀,可以自定义动态路由。

3.2 增加动态路由

POST http://localhost:44000/actuator/gateway/routes/myroute

最后的 myroute 是自定义路由的 ID,保证唯一即可。

参数:

{
"predicates": [
{
"name":"Path",
"args":{
"_genkey_0":"/myroute/**"
}
}
],
"filters": [
{
"name":"StripPrefix",
"args":{
"_genkey_0":"1"
}
}
],
"uri": "lb://MY-EUREKA-CLIENT",
"order": 0
}

参数的含义是,所有以 myroute 开头的URL,统一转发到 MY-EUREKA-CLIENT 服务。

3.3 使用动态路由访问接口

http://localhost:44000/myroute/eurekaClient/hello

3.4 删除动态路由

DELETE http://localhost:44000/actuator/gateway/routes/myroute

4. 综述

今天聊了一下 SpringCloud 的 Gateway 组件,希望可以对大家的工作有所帮助。

欢迎帮忙点赞、评论、转发、加关注 :)

关注追风人聊Java,每天更新Java干货。

5. 个人公众号

追风人聊Java,欢迎大家关注

SpringCloud 2020.0.4 系列之 Gateway入门的更多相关文章

  1. SpringCloud 2020.0.4 系列之 Feign

    1. 概述 老话说的好:任何问题都有不止一种的解决方法,当前的问题没有解决,只是还没有发现解决方法,而并不是无解. 言归正传,之前我们聊了 SpringCloud 的服务治理组件 Eureka,今天我 ...

  2. SpringCloud 2020.0.4 系列之 Stream 消息广播 与 消息分组 的实现

    1. 概述 老话说的好:事情太多,做不过来,就先把事情记在本子上,然后理清思路.排好优先级,一件一件的去完成. 言归正传,今天我们来聊一下 SpringCloud 的 Stream 组件,Spring ...

  3. SpringCloud 2020.0.4 系列之 Stream 延迟消息 的实现

    1. 概述 老话说的好:对待工作要有责任心,不仅要完成自己的部分,还要定期了解整体的进展. 言归正传,我们在开发产品时,常常会遇到一段时间后检查状态的场景,例如:用户下单场景,如果订单生成30分钟后, ...

  4. SpringCloud 2020.0.4 系列之 Stream 消息出错重试 与 死信队列 的实现

    1. 概述 老话说的好:出错不怕,怕的是出了错,却不去改正.如果屡次出错,无法改对,就先记下了,然后找援军解决. 言归正传,今天来聊一下 Stream 组件的 出错重试 和 死信队列. RabbitM ...

  5. SpringCloud 2020.0.4 系列之Eureka

    1. 概述 老话说的好:遇见困难,首先要做的是积极的想解决办法,而不是先去泄气.抱怨或生气. 言归正传,微服务是当今非常流行的一种架构方式,其中 SpringCloud 是我们常用的一种微服务框架. ...

  6. SpringCloud 2020.0.4 系列之服务降级

    1. 概述 老话说的好:做人要正直,做事要正派,胸怀坦荡.光明磊落,才会赢得他人的信赖与尊敬. 言归正传,之前聊了服务间通信的组件 Feign,今天我们来聊聊服务降级. 服务降级简单的理解就是给一个备 ...

  7. SpringCloud 2020.0.4 系列之 Bus

    1. 概述 老话说的好:会休息的人才更会工作,身体是革命的本钱,身体垮了,就无法再工作了. 言归正传,之前我们聊了 SpringCloud 的 分布式配置中心 Config,文章里我们聊了config ...

  8. SpringCloud 2020.0.4 系列之 JWT用户鉴权

    1. 概述 老话说的好:善待他人就是善待自己,虽然可能有所付出,但也能得到应有的收获. 言归正传,之前我们聊了 Gateway 组件,今天来聊一下如何使用 JWT 技术给用户授权,以及如果在 Gate ...

  9. SpringCloud 2020.0.4 系列之服务降级的其他用法与熔断

    1. 概述 老话说的好:控制好自己的情绪,才能控制好自己的人生.冲动是魔鬼,冷静才最重要. 言归正传,之前聊了在 Feign 调用时,如何给整个 Feign接口类 增加降级策略. 今天我们来聊一下 H ...

随机推荐

  1. pip3 install beautifulsoup4 出现错误 There was a problem confirming the ssl certificate

    chenhuimingdeMacBook-Pro:groceryList Mch$ sudo pip3 install beautifulsoup4 The directory '/Users/Mch ...

  2. Python生成桌面应用

    1.cd进入project所在根目录 2.pyinstaller -F demo.py --noconsole 3.自定义图标 选择ico格式图标发在project目录 4.pyinstaller - ...

  3. 主动开启进程与join方法

    使用multiprocessing.Process来开启进程 import os import time from multiprocessing import Process def eat(): ...

  4. 推荐一款 Python 微服务框架 - Nameko

    1. 前言 大家好,我是安果! 考虑到 Python 性能及效率性,Python Web 端一直不温不火,JAVA 和 Golang 的微服务生态一直很繁荣,也被广泛用于企业级应用开发当中 ​本篇文章 ...

  5. Spring MVC面试复习整理

    Spring MVC Spring MVC 是Spring Framework 提供的 web 组件 它的实现基于 MVC 的设计模式:Model(模型层).View(视图层).Controller( ...

  6. 使用率激增250%,这份报告再将 Serverless 推向幕前

    ​ 作者 | 望宸 来源 | Serverless 公众号 相比去年,国外 Serverless 的适用群体在迅速扩大,函数执行时长不断增加,使用方式也越加成熟,开发者工具也更加开放.本文是对 Dat ...

  7. 题解 P6454 麻将 加强版

    题目传送门 题目大意 不想写了,直接看题面吧. 思路 被这个题搞自闭了,因为读错题目想一个非常恶心的东西想了一场考试,然后就删代码,然后就被骂了.哎. 需要注意的是:我们只能选一次雀头 于是,不难看出 ...

  8. 题解 GT考试

    题目传送门 题目大意 给出\(n,m,k\),以及一个长度为\(m\)的数字串\(s_{1,2,...,m}\),求有多少个长度为\(n\)的数字串\(X\)满足\(s\)不出现在其中的个数模\(k\ ...

  9. 题解 「2017 山东一轮集训 Day5」苹果树

    题目传送门 题目大意 给出一个 \(n\) 个点的图,每个点都有一个权值 \(f_i\) ,如果 \(f_i=-1\) 表示 \(i\) 这个点是坏的.定义一个点是有用的当且仅当它不是坏的,并且它连的 ...

  10. Java读取属性配置文件-properties

    在项目开发中,我们难免将一些可变的参数放在程序以外,作为一个单独的文件,即配置文件,这样方便项目在不同的使用环境部署时.或者说需要不同时,可以通过简单配置这些程序以外的文件来修改程序里的变量. 常用的 ...