Teng's blog Teng's blog
首页
Java
H5前端
GitHub (opens new window)
首页
Java
H5前端
GitHub (opens new window)
  • 快速入门
    • 服务网关
    • 关于Spring Cloud Gateway
    • 搭建
      • 配置pom
      • 配置application.properties
      • 添加启动类
  • Framework-SpringCloudGateway
Shetengteng
2021-12-08

快速入门

# 服务网关

由于微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题

  • 客户端会多次请求不同的微服务,增加了客户端的复杂性
  • 存在跨域请求,在一定场景下处理相对复杂
  • 认证复杂,每个服务都需要独立认证
  • 难以重构,随着项目的迭代,可能需要重新划分微服务
    • 如可能将多个服务合并成一个或者将一个服务拆分成多个
    • 如果客户端直接与微服务通信,那么重构将会很难实施
  • 某些微服务可能使用了防火墙 / 浏览器不友好的协议,直接访问会有一定的困难

以上这些问题可以借助 API 网关解决

API 网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过API 网关这一层

  • API 的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由 API 网关来做
  • 既提高业务灵活性又不缺安全性

# 关于Spring Cloud Gateway

  • 是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关
  • Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式
  • 作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul
  • 提供统一的路由方式
  • 基于Filer链的方式提供了网关基本的功能
    • 如:安全、监控/埋点、限流等

# 搭建

# 配置pom

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<!-- 服务注册 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
1
2
3
4
5
6
7
8
9
10

# 配置application.properties

# 服务端口
server.port=80
# 服务名
spring.application.name=xxx

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

#使用服务发现路由
spring.cloud.gateway.discovery.locator.enabled=true
1
2
3
4
5
6
7
8
9
10

# 添加启动类

package com.s.yygh;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
          SpringApplication.run(Application.class, args);
       }
}
1
2
3
4
5
6
7
8
9
10
11
12
Last Updated: 2022/01/16, 11:29:51
Theme by Vdoing | Copyright © 2021-2022 Shetengteng | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式