上面的这些问题可以借助API网关来解决。所谓的API网关,就是指系统的统一入口。它封装了应用程序的内部结构,为客户端提供统一服务。
一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等等。
添加上API网关之后,系统的架构图变成了如下所示:
Spring Cloud Gateway旨在为微服务架构提供一种简单有效的统一的 API路由管理方式。
它不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控和限流。
微服务网关的作用提供了统一访问入口,降低了服务受攻击面提供了统一跨域解决方案提供了统一日志记录操作,可以进行统一监控提供了统一权限认证支持提供了微服务限流功能,可以保护微服务,防止雪崩效应发生
二、Gateway搭建1.创建1个api-gateway模块
2.pom依赖
我们使用的网关产品为spring-cloud框架提供的gateway;
服务网关需要调用服务注册中心(Nacos)获取服务提供者的调用地址;
dependencies !--引入gateway网关-- dependency groupId org.springframework.cloud /groupId artifactId spring-cloud-starter-gateway /artifactId /dependency !--Nacos服务发现依赖-- dependency groupId com.alibaba.cloud /groupId artifactId spring-cloud-starter-alibaba-nacos-discovery /artifactId /dependency /dependencies2.创建启动类
package com.zhanggen.gateway;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args);}
3.添加配置文件(application.yaml)
路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息: