实现 Gateway | 学习笔记

简介: 快速学习实现 Gateway。

开发者学堂课程【Spring Cloud Alibaba Nacos 详解(下)实现 Gateway 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/725/detail/12945


实现 Gateway

 

内容介绍:

一、Zuul 介绍

二、搭建网关工程


一、Zuul 介绍

什么是网关?

原来的单体架构,所有的服务都是本地的, UI  可以直接调用,现在按功能拆分成独立的服务,跑在独立的一般都在独立的虚拟机上的 Java 进程了。

客户端 UI 如何访问?他的后台有 N 个服务,前台就需要记住管理N个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不服务我们拆分的理念,特别当前台是移动应用的时候,通常业务变化的节奏更快。另外, N 个小服务的调用也是一个不小的网络开销。

图片.png

有了网关作为服务统一入口 ,就可以避免上述问题,不仅如此,服务网关是在微服务前边设置-道屏障,请求先到服务网关,网关会对请求进行过虑、校验、路由等处理。

有了服务网关可以提高微服务的安全性,网关校验请求的合法性,请求不合法将被拦截,拒绝访问。

●提供统一服务入口,让微服务对前台透明

●聚合后台的服务,节省流量,提升性能

●提供安全,过滤,流控等API管理功能

什么是 Zuul ?

Spring Cloud Zuu l是整合 Netflix 公司的 Zuu 开源项目实现的微服务网关,它实现了请求路由、负载均衡、校验过虑等功能。

Zuul Nginx 怎么配合使用?

Zuul Nginx 在实际项目中需要配合使用,如下图, Nginx 的作用是反向代理、负载均衡, Zuul 的作用是保障微服务的安全访问,拦截微服务请求,校验合法性及负载均衡。

图片.png

 

 

二、搭建网关工程

1.初始化 api-gateway Maven 工程

<dependency>

<groupId>com. Alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos -config</

artifactId>

</dependency>

<dependency>

<groupId>com. alibaba. cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery

</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot - starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-zuul</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

</dependencies>

2.api-gateway 配置

要配置一个文件叫 bootstrap

server:

port: 56010 #启动端口 命令行注入

spring:

application:

name: api-gateway

main:

allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4

cluster-name: DEFAULT

config:

server-addr: 127.0.0.1:8848  # 配置中心地址

file-extension: yaml

namespacec67e497-a698-4d6d-9bb1-cfac5f5b51c4 #开发环境

groupNACOS_MICROSERVICE_GROUP # xx业务组

网关的路由配置采用 nacos 远程配置,在 nacos 控制台开发环境中新增api-gateway.yaml 配置,配置组为 TEST_GROUP,配置内容如下:

zuul:

routes:

application1:

stripPreFixfalse

path/application1/**

将请求为 /application/ 开头的请求路由至 application1 服务,保留请求中 url 中的/application/

我们可以直接在 nacos 上配置路由,配置内容如上。

3.api-gateway 启动

注意在启动类上使用 @EnableZuulProxy 注解标识此工程为 Zuul 网关,启动类代码如下:

@SpringBootApplication

@EnableDiscoveryClient

@EnableZuulProFy

public class ApiGatewayBootstrap {

public static void main(String[] args) {

SpringApplication.run(ApiGatewayBootstrap.class, args);

}

Service1Bootstrap 启动后,应用 api-gateway 将出现在 Nacos 服务列表中。

我们请求56010,会得到下图结果,说明网关起作用了

图片.png

相关文章
|
负载均衡 Nacos 数据安全/隐私保护
SpringCloud(Gateway 网关负载均衡) | 学习笔记
快速学习 SpringCloud(Gateway 网关负载均衡)
SpringCloud(Gateway 网关负载均衡) | 学习笔记
|
6月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
293 0
|
Java Spring
|
数据采集 监控 Java
熔断限流与关网 Gateway|学习笔记(三)
快速学习熔断限流与关网 Gateway
熔断限流与关网 Gateway|学习笔记(三)
|
前端开发 Java 中间件
MyCat - 环境搭建 - 微服务网关 gateway 搭建 | 学习笔记
快速学习 MyCat - 环境搭建 - 微服务网关 gateway 搭建
MyCat - 环境搭建 - 微服务网关 gateway 搭建 | 学习笔记
|
Java 开发者 Spring
Gateway 内置路由断言|学习笔记
快速学习 Gateway 内置路由断言
Gateway 内置路由断言|学习笔记
|
监控 Java API
Gateway 概念及执行流程|学习笔记
快速学习 Gateway 概念及执行流程
Gateway 概念及执行流程|学习笔记
|
Java 开发者 微服务
Gateway 过滤器简介|学习笔记
快速学习 Gateway 过滤器简介
Gateway 过滤器简介|学习笔记
|
Java 数据安全/隐私保护 开发者
Gateway 全局过滤器|学习笔记
快速学习 Gateway 全局过滤器
Gateway 全局过滤器|学习笔记
|
负载均衡 Java Nacos
Gateway 局部过滤器|学习笔记
快速学习 Gateway 局部过滤器
Gateway 局部过滤器|学习笔记