快捷搜索: 王者荣耀 脱发

Spring Cloud Alibaba--gateway微服务详解之网关(二)

1、网关介绍

上篇对微服务中的nacos注册中心进行集成讲解。nacos主要作用是管理多服务之间复杂关系的组件。微服务是非常庞大且问题突出的架构,HTTP协议具有跨源资源共享 (CORS) Cross- Origin Resource Sharing机制,而处于安全考虑往往前端架构都会对跨域进行拦截,此时前端继续调用微服务中的其它任何一个服务都会被拦截无法访问。虽然可以通过配置的方式处理,但就会出现和微服务一样的问题,配置繁琐且不好管理。

2、项目集成网关

本文使用Spring版本:

SpringBoot:2.7.5;

Spring Cloud:2021.0.5;

Spring Cloud Alibaba:2021.1;

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

本文使用的配置文件为bootstrap方式,并未用到Spring默认的application配置,两者区别感兴趣可以问度娘。本项目使用认证中心接口演示网关的接口统一管理下发。

在gateway项目中主配置文件bootstrap.yml中配置网关服务:

spring:
  application:
    name: oto-gateway
  profiles:
    active: dev
server:
  port: 9999

spring:
  cloud:
    nacos:
      # 注册中心
      discovery:
        server-addr: http://localhost:8848
      # 共享的配置文件
      config:
        server-addr: http://localhost:8848
        file-extension: yaml
        shared-configs[0]:
          data-id: oto-common.yaml
          refresh: true

在nacos中还有一些网关有关的配置:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true # 启用服务发现
          lower-case-service-id: true
      routes:
        - id: 认证中心
          uri: lb://oto-auth
          predicates:
            - Path=/oto-auth/**
          filters:
            - StripPrefix=1

在nacos中配置项目配置信息可以及时生效,所以基本不变的配置信息可以放在项目中配置,可能发生变动的通通放到nacos中去动态配置。

由于我们本篇主要讲解演示gateway,所以其它配置信息都被我干掉了,因为太多了怕影响大家阅读。配置文件中的内容啥意思,这里就不再一个一个讲了非常简单随便百度都有解释。

在网关启动类中添加nacos服务发现与注册注解:

@SpringBootApplication
@EnableDiscoveryClient
public class OtoGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(OtoGatewayApplication.class, args);
    }
}

至此网关部分代码完成,超级简单。

我们启动的网关端口为9999,认证中心端口为8000。

现在我们可以打开postman来测试端口是否可以调用。

从测试结果来看我们直接访问认证中心localhost:8000/ras/publicKey,获取公钥的接口可以成功拿到公钥。接下来我们通过网关来获取公钥。

本篇只演示讲解关于网关的集成和配置使用,等后续讲到认证中心的时候在认证中心讲网关的认证、鉴权功能。

经验分享 程序员 微信小程序 职场和发展