SpringCloud学习九(SpringCloud微服务之网关Gateway)

一、SpringCloud Gateway简介

Gateway网关是我们服务的守门神,所有前端访问微服务的统一入口,旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

核心功能特性:

  • 请求路由
  • 集成 Hystrix 断路器
  • 权限控制
  • 限流

加入网关后的服务结构:SpringCloud学习九(SpringCloud微服务之网关Gateway)_第1张图片

路由:gateway加入后,一切请求都必须先经过gateway,因此gateway就必须根据某种规则,把请求转发到某个微服务,这个过程叫做路由。

  • 路由基本组成
    id:路由的唯一标识
    uri:路由的目的地
    predicates:断言:是否满足此路由的条件
    filters:过滤器

权限控制:请求经过路由时,我们可以判断请求者是否有请求资格,如果没有则进行拦截。

限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。

网关的实质:网关中的每一个功能都是由过滤器链完成的。

gateway网关的优点:

  • 安全 ,只有网关系统对外进行暴露,微服务可以隐藏在内网,通过防火墙保护。
  • 易于监控。可以在网关收集监控数据并将其推送到外部系统进行分析。
  • 易于认证。可以在网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证。
  • 减少了客户端与各个微服务之间的交互次数
  • 易于统一授权。

二、gateway快速入门

(1)、引入依赖

        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-gatewayartifactId>
        dependency>

(2)、编写启动类

@SpringBootApplication
public class GatewayApplication {
   

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

3、编写配置(application.yml文件中)

server:
  port: 10010 #服务端口
spring: 
  application:  
    name: gateway-server #指定服务名

映射规则:

server:
  port: 10010 #服务端口
spring:
  application:
    name: gateway-server #指定服务名
  cloud:
    gateway:
      routes:
        - id: user-service # 当前路由的唯一标识
          uri: http://127.0.0.1:8081 # 路由的目标微服务地址
          predicates: # 断言  判断 前端浏览器发送url和当前path是否匹配
            - Path=/user/** # 按照路径匹配的规则
#        - id: order-service # 当前路由的唯一标识
#          uri: http://127.0.0.1:9081 # 路由的目标微服务地址
#          predicates: # 断言  判断 前端浏览器发送url和当前path是否匹配
#            - Path=/order/** # 按照路径匹配的规则

三、面向服务的路由

(1)、添加依赖

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>

(2)、添加Eureka配置

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

(3)、修改映射配置

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
spring:
  cloud:
    gateway:
      routes:
          # id:路由的唯一标识
        - id: user-service-route
          # uri:如果满足路由规则要跳转的路径
          uri: lb://user-service   # lb:(load balance)负载均衡(默认轮询)   user-service:服务的名称
          # predicates:断言 是否满足路由的条件
          predicates:
            

你可能感兴趣的:(SpringCloud,学习,网关)