SpringCloud实战 | 第四篇:SpringCloud整合Gateway实现API网关
一. 前言
微服务实战系列是基于开源微服务项目 有来商城youlai-mall 版本升级为背景来开展的,本篇则是讲述API网关使用Gateway替代Zuul,有兴趣的朋友可以进去给个star,非常感谢。
二. 什么是微服务网关?
微服务网关是位于服务之前或者应用程序之前的一个层面,用于保护、增强和控制微服务的访问。
其常见的作用有:
- 鉴权校验:验证是否认证和授权
- 统一入口:提供所有微服务的入口点,起到隔离作用,保障服务的安全性
- 限流熔断
- 路由转发
- 负载均衡
- 链路追踪
三. 网关如何选型?
至于为什么使用Gateway而放弃Zuul?
SpringCloud 生态提供了两种API网关产品,分别是Netflix开源的Zuu1和Spring自己开发的SpringCloud Gateway,SpringCloud以Finchely版本为分界线,之前版本使用Zuul作为API网关,之后更推荐使用Gateway。
Netflix已经在2018年开源了Zuul2,但是SpringCloud已经退出了Gateway,并且在github标识没有集成Zuul2的计划。
SpringCloud Gateway和Zuul对比及技术选型?
四. 项目信息
有来商城youlai-mall 完整项目结构图
本篇文章涉及项目模块
工程名 | 端口 | 描述 |
---|---|---|
nacos-server | 8848 | 注册中心和配置中心 |
youlai-gateway | 9999 | API网关 |
youlai-admin | 8080 | 管理平台 |
版本声明
Nacos Server: 1.3.2
SpringBoot: 2.3.0.RELEASE
SpringCloud: Hoxton.SR5
SpringCloud Alibaba: 2.2.1.RELEASE
五. 项目实战
1.添加SpringCloud Gateway依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2.bootstrap.yml配置信息
server:
port: 9999
spring:
application:
name: youlai-gateway
cloud:
gateway:
discovery:
locator:
enabled: true # 启用自动根据服务ID生成路由
lower-case-service-id: true # 设置路由的路径为小写的服务ID
routes:
- id: youlai-auth
uri: lb://youlai-auth
predicates:
- Path=/youlai-auth/**
filters:
- StripPrefix=1 # 移除前缀 youlai-auth
- id: youlai-admin
uri: lb://youlai-admin
predicates:
- Path=/youlai-admin/**
filters:
- StripPrefix=1
3.微服务接口
youlai-admin添加一个接口方法用来测试网关转发能力
4.网关测试
依次启动项目nacos-server,youlai-admin,youlai-gateway
可以看到当我们请求网关的服务路径http://localhost:9999/youlai-admin/users的时候,路由根据匹配规则
将以/youlai-admin为前缀的请求路径转发到服务youlai-admin实例上去了。
六. 结语
至此SpringCloud整合Gateaway就成功了,当然这里只是验证了API网关的路由转发功能。后面会写一篇关于SpringCloud Gateaway整合Oauth2实现网关鉴权功能。
SpringCloud实战 | 第四篇:SpringCloud整合Gateway实现API网关的更多相关文章
- Docker实战 | 第四篇:Docker启用TLS加密解决暴露2375端口引发的安全漏洞,被黑掉三台云主机的教训总结
一. 前言 在之前的文章中 IDEA集成Docker插件实现一键自动打包部署微服务项目,其中开放了服务器2375端口监听,此做法却引发出来一个安全问题,在上篇文章评论也有好心的童鞋提示,但自己心存侥幸 ...
- SpringCloud实战 | 第五篇:SpringCloud整合OpenFeign实现微服务之间的调用
一. 前言 微服务实战系列是基于开源微服务项目 有来商城youlai-mall 版本升级为背景来开展的,本篇则是讲述SpringCloud整合OpenFeign实现微服务之间的相互调用,有兴趣的朋友可 ...
- 跟我学SpringCloud | 第十四篇:Spring Cloud Gateway高级应用
SpringCloud系列教程 | 第十四篇:Spring Cloud Gateway高级应用 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 ...
- SpringBoot进阶教程 | 第四篇:整合Mybatis实现多数据源
这篇文章主要介绍,通过Spring Boot整合Mybatis后如何实现在一个工程中实现多数据源.同时可实现读写分离. 准备工作 环境: windows jdk 8 maven 3.0 IDEA 创建 ...
- SpringCloud实战 | 第三篇:SpringCloud整合Nacos实现配置中心
前言 随着eureka的停止更新,如果同时实现注册中心和配置中心需要SpringCloud Eureka和SpringCloud Config两个组件;配置修改刷新时需要SpringCloud Bus ...
- SpringCloud教程 | 第四篇:断路器(Hystrix)
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...
- SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...
- 【SpringCloud】第四篇:断路器(Hystrix)
前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...
随机推荐
- 阙乃祯:网龙在教育领域Cassandra的使用
网龙是一家游戏公司,以前是做网络在线游戏的,现在开始慢慢转型,开始从事在线教育. 在线教育已经做了5-6年时间了.为什么我们会用Cassandra呢?那我们就来介绍今天的议题. 首先介绍我们的业务背景 ...
- HashMap 21问!!
1:HashMap的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点.当链表长度超过8时,链表转换为红黑树. transient Node<K,V>\[\] t ...
- java Semaphore实现ABC三个线程循环打印
Semaphore位于java.util.concurrent包下.其中有两个重要的方法acquire()和release().acquire用来获取一个信号量,并且是阻塞型的,如果当前还有可用的信号 ...
- JDBC理论知识
JDBC理论知识 JDBC基础 JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统.通用的SQL数据库存取和操作的公共接口(一组API), 定义了用来访问数 ...
- 手把手教Linux驱动3-之字符设备架构详解,有这篇就够了
一.Linux设备分类 Linux系统为了管理方便,将设备分成三种基本类型: 字符设备 块设备 网络设备 字符设备: 字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程 ...
- 团队作业1——团队展示&选题(银河超级无敌舰队)
一.团队展示 1.队名: 银河超级无敌舰队 2.队员学号: 姓名 学号 郭奕材(组长) 3118004959 刘婉儿(PM) 3218004994 辜仰淦 3118004957 王煜墉 3118004 ...
- Word操作之参考文献自动关联和引用
转载:https://blog.csdn.net/qq_40078121/article/details/88681605 编号选项->定义新编号格式: 选择插入->交叉引用选项: 然后选 ...
- Advances and Open Problems in Federated Learning
挖个大坑,等有空了再回来填.心心念念的大综述呀(吐血三升)! 郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 项目地址:https://github.com/open-intellige ...
- Java多线程_线程池
作用我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为 ...
- Android(java)开发之将double类型,强制保留到小数点后两位解决方法。
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 前提:当我们进行double数据类型与double进行运算的时候,可能会遇到 得到小数点后好多位,但是 ...