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实现网关鉴权功能。
- 肥桃的Java学习记录15:List接口的子类,ArrayList 和 LinkedList
- 三年渣渣的诉说!面试大厂Java开发,这10道Spring问题不得不懂!
- java安装教程
- 【深入理解Java虚拟机】Java虚拟机运行时数据区
- 硬抗阿里支付宝高级Java岗三面(底层+高并发+集群+分布式+调优等)
- 在Spring中拦截器的使用
- Gradle - 使用 Java 预览特性
- 肥桃的Java学习记录14:泛型和通配符
- 肥桃的Java学习记录13:Date类 Calendar类
- 《spring源码解读》 - IoC 之解析 import 标签
- Spring Validation-用注解代替代码参数校验
- JAVA基础——面向对象与面向过程
- 大学四年零基础自学Java的路线
- 3种 Springboot 全局时间格式化方式,别再写重复代码了
- Jenkins--pipline 流水线部署Java后端项目
- CMD运行JAVA出现编码GBK的不可映射字符处理方法(转载)
- JAVA简易计算器
- JAVA-递归
- 【Spring注解驱动开发】你敢信?面试官竟然让我现场搭建一个AOP测试环境!
- JAVA-可变参数