第十二章 微服务核⼼组件之⽹关

1.什么是微服务的⽹关和应⽤场景

  • 什么是⽹关
    API Gateway,是系统的唯⼀对外的⼊⼝,介于客户端和服务器端之间的中间层,处理⾮业务功能提供路由请求、鉴权、监控、缓存、限流等功能
    统⼀接⼊:智能路由,AB测试、灰度测试,负载均衡、容灾处理,⽇志埋点(类似Nignx⽇志)
    流量监控:限流处理,服务降级
    安全防护:鉴权处理,监控,机器⽹络隔离
  • 主流的⽹关
    zuul:是Netflix开源的微服务⽹关,和Eureka,Ribbon,Hystrix等组件配合使⽤,依赖组件⽐较多,性能较差
    kong: 由Mashape公司开源的,基于Nginx的API gateway
    nginx+lua:是⼀个⾼性能的HTTP和反向代理服务器,lua是脚本语⾔,让Nginx执⾏Lua脚本,并且⾼并发、⾮阻塞的处理各种请求
    springcloud gateway: Spring公司专⻔开发的⽹关,替代zuul

2.微服务的⽹关SpringCloud Gateway

  • 什么是 SpringCloud Gateway
    Spring官⽅出品,基于Spring5+Reactor技术开发的⽹关
    性能强劲基于Reactor+WebFlux、功能多样
    基于springboot2.x, 直接可以jar包⽅式运⾏
    官⽅⽂档:https://spring.io/projects/spring-cloud-gateway

3.SpringCloud Gateway项⽬创建和依赖添加

创建Gateway项⽬,添加依赖

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

配置文件

server:
  port: 8888
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes: #数组形式
        - id: order-service #路由唯⼀标识
          uri: http://127.0.0.1:8000 #想要转发到的地址
          order: 1 #优先级,数字越⼩优先级越⾼
          predicates: #断⾔ 配置哪个路径才转发
            - Path=/order-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1 #去掉第⼀层前缀
#访问路径 http://localhost:8888/order-server/api/v1/video_order/list
#转发路径 http://localhost:8000/order-server/api/v1/video_order/list
#需要过滤器去掉前⾯第⼀层

测试

第十二章 微服务核⼼组件之⽹关_第1张图片

4.SpringCloud Gateway⽹关整合Nacos

原先存在的问题:微服务地址写死,负载均衡没做到
添加Nacos服务治理配置
⽹关添加naocs依赖

        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>

启动类开启⽀持

@EnableDiscoveryClient

修改配置⽂件

server:
  port: 8888
spring:
  application:
    name: api-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.104:8848
    gateway:
      routes: #数组形式
        - id: order-service #路由唯⼀标识
          #uri: http://127.0.0.1:8000 #想要转发到的地址
          uri: lb://xdclass-order-service #从nacos获取名称转发,lb是负载均衡轮训策略
          order: 1 #优先级,数字越⼩优先级越⾼
          predicates: #断⾔ 配置哪个路径才转发
            - Path=/order-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1 #去掉第⼀层前缀
      discovery:
        locator:
          enabled: true #开启⽹关拉取nacos的服务

测试
第十二章 微服务核⼼组件之⽹关_第2张图片在这里插入图片描述

你可能感兴趣的:(AlibabaCloud笔记,微服务,microservices,java)