zoukankan      html  css  js  c++  java
  • SpringCloud Alibaba实战 -引入服务网关Gateway

    https://www.cnblogs.com/three-fighter/p/14971538.html

    http://javadaily.cn/articles/2020/01/16/1579160378591.html

    SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。

    Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

    • Nginx: Nginx由内核和模块组成,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件与客户端请求进行 URL 匹配,用于启动不同的模块去完成相应的工作。
    • Kong: Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求
    • Zuul 是 Netflix 开源的微服务网关组件,它可以和 Eureka、Ribbon、Hystrix 等组件配合使用。社区活跃,融合于 SpringCloud 完整生态,是构建微服务体系前置网关服务的最佳选型之一。
    • Spring Cloud Gateway 是Spring Cloud的一个全新的API网关项目,目的是为了替换掉Zuul1。Gateway可以与Spring Cloud Discovery Client(如Eureka)、Ribbon、Hystrix等组件配合使用,实现路由转发、负载均衡、熔断等功能,并且Gateway还内置了限流过滤器,实现了限流的功能。

    • bootstap.yml:在配置文件里除了应用名称,我们还配置了Nacos的相关配置,不太清楚的同学可以查看上一节。
    复制代码
    ###服务名称(服务注册到nacos名称,如serviceId)
    spring:
    cloud:
    nacos:
    discovery:
    server-addr: http://www.XXXX.com:8848
    namespace: de4a857c-8341-4d3d-a1e0-f2e64eaf8c97
    config:
    server-addr: http://www.XXXXX.com:8848
    file-extension: yaml
    #name: ${spring.application.name}
    prefix: ${spring.application.name} #nacos 配置中心文件前缀
    group: DEFAULT_GROUP
    #变更刷新
    refresh: true
    remote-first: true
    enabled: true
    namespace: de4a857c-8341-4d3d-a1e0-f2e64eaf8c97

     

     

    我们在里面进行了路由转发的配置,也就是routes,我们来看一看这些配置项都是什么意思:

    • id: 路由的唯一标识,用以和其它Route区分
    • uri: 请求要转发到的地址,lb 指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
    • predicates: 路由需要满足的条件,也是个数组(这里是的关系)
    • filters: 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改

    在这个配置项里,我们定义了user 开头的请求,分发到user-service这个服务。

    接下来我们看看效果吧!

    到此,我们已经引入了Spring Cloud Gateway作为微服务网关,并完成了基本的路由转发的功能。

    除了基本的路由转发,服务网关还可以完成权限校验、限流、API校验等功能,后续我们会继续深入,敬请期待!

     

    server:
    port: 8001

    #开启actuator管理api http://localhost:8080/actuator/gateway/routes
    management:
    endpoints:
    web:
    exposure:
    include: "*"

    ###服务名称(服务注册到nacos名称,如serviceId)
    spring:
    cloud:
    gateway:
    discovery:
    locator:
    # 是否可以通过其他服务的serviceId来转发到具体的服务实例。默认为false
    # 为true,自动创建路由,路由访问方式:http://Gateway_HOST:Gateway_PORT/大写的serviceId/**,
    # 其中微服务应用名默认大写访问
    enabled: true
    #为true表示服务名称(小写)
    lower-case-service-id: true
    routes:
    - id: box-mall-gather
    uri: lb://box-mall-gather
    predicates:
    - Path=/open/mall/**
    filters:
    # 表示截取路径的个数
    - StripPrefix=1
    #- AddRequestHeader=X-Request-Foo, Bar #对请求头部添加X-Request-Foo = Bar 信息
    #- AddRequestParameter=foo, bar #对匹配的请求,会额外添加foo=bar的请求参数
    #- AddResponseHeader=X-Response-Foo, Bar #响应返回时会额外添加X-Response-Foo:Bar的header返回

    - id: box-transaction-service
    uri: lb://box-transaction-service
    predicates:
    - Path=/open/trade/**
    filters:
    # 表示截取路径的个数
    - StripPrefix=1

    - id: box-member-service
    uri: lb://box-member-service
    predicates:
    - Path=/open/member/**
    filters:
    # 表示截取路径的个数
    - StripPrefix=1

    - id: box-marketing-service
    uri: lb://box-marketing-service
    predicates:
    - Path=/open/marketing/**
    filters:
    # 表示截取路径的个数
    - StripPrefix=1

    - id: box-merchants-service
    uri: lb://box-merchants-service
    predicates:
    - Path=/open/merchants/**
    filters:
    # 表示截取路径的个数
    - StripPrefix=1

    - id: box-items-service
    uri: lb://box-items-service
    predicates:
    - Path=/open/items/**
    filters:
    # 表示截取路径的个数
    - StripPrefix=1


    ################### redis start ##########################
    redis:
    database: 1
    host: 47.103.104.148
    port: 6379
    password: life201911
    timeout: 500
    pool:
    # 连接池最大连接数(使用负值表示没有限制
    max-active: 20
    # 连接池最大阻塞等待时间(使用负值表示没有限制
    max-wait: -1
    # 连接池中的最大空闲连接
    max-idle: 8
    # 连接池中的最小空闲连接
    min-idle: 0

    ################### my config start ##########################
    box:
    gateway:
    ###不需要验证白名单
    white:
    List:
    - /member/appAuth/login
    - /member/appAuth/regist
    - /mall/user/initLogin
    - /member/oldBoxLife/getScoreDetailList
    - /member/oldBoxLife/getScoreDetailUsedList
    - /member/oldBoxLife/getMemberScoreRecord
    - /member/oldBoxLife/getMemberScoreRecordUsed
    - /member/oldBoxLife/regist
    - /member/oldBoxLife/login
    - /mall/merchants/brand/list
    - /mall/merchants/market/list
    - /member/oldBoxLife/getBoxsMemberByUid
    - /mall/oldBoxLife/getUserMemberPoint
    - /mall/integral/getIndexGoodsList
    - /mall/integral/getPracticalGoodsList
    - /mall/coupon/getExchangeCouponTypeList
    - /mall/integral/getGoodsDetail
    config:
    ## 测试环境签名调试 生产设置false
    debug: true
    ## 验签公钥
    publicKey: MIGfMA0GCSqGSIb3DQEBAQUA11A4GNADCBiQKBgQC+bjf2zNvnUYdZNciVLleJrZqk2jPpafFth/ock5TwvyEK//JKKLu3nC3CjB0FZiDV6FDpY/T404hPpNhgMT+F/i8PAbsJ11ssCx/YZySA9kKbx0fnvYRQCmx+TMDocId08ZkCZjbIGsc1YibsE2sR+T25p+FkMRpF9wCEh+pvUQIDAQAB
    ## 加签私钥
    privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL5uN/bM2+dRh1k1yJUuV4mtmqTaM+lp8W2H+hyTlPC/IQr/8koou7ecLcKMHQVmINXoUOlj9PjTiE+k2GAxP4X+Lw8BuwnXWywLH9hnJID2QpvHR+e9hFAKbH5MwOhwh3TxmQJmNsgaxzViJuwTaxH5Pbmn4WQxGkX3AISH6m9RAgMBAAECgYAe4ndXIrCDmrht4ogukb6GyM4s8Gq8737Feek5m0HrrcPpKcuc9XBEfiL5y4mlZ114PpzWzZ/WkstfoEmMKzDymzBL03HfA+fFu8oQYkE4634I4vQEa75lVIuaiccWpLvZukqkUFBd80cUeb086zM5H72ex3iJYuNBv+1Lhl/AkQsQJBAPCdeQ6/NtkVV7tC9xFjIyfZZmed48uSOHqMxW0sdl0WNjpiwbO7oLTHdQnyLmF8x4u0cZDCUNloJWglnq1pEq0CQQDKm0ukoFbFquP5FwTkS60o8ffTRdE+lHKtWI3t2DFvGc9Gt98VRb/xBEbZe1uvvBAxRI5SL1Bd+irAusyyw4e1AkAfrkxDMdAR8ypzAJUxV+FIHOrL19Ene6AuGpzgDAulpAgN1fT1Kk41n1F8tsN+mIRZk6+kRMGKbpkGRnXHFV+dAkBSAsp7uOtm1+WvzkGMp5VQHaHTQ0+PpUdGI7JPtFNORYRBe+wxECrBxJlpLyXN3LIxPy7c1YoSgFEN8o8pTTyBAkEA2YvOI2/04tRApZdPFrCqOq5AWefk12znDVrWayKk9BKHhVrqNnJvvNLC99j3N/7wfSVRTShRnm75Bs/OXuBatw==

    小蚊子大人
  • 相关阅读:
    [APM] OneAPM 云监控部署与试用体验
    Elastic Stack 安装
    xBIM 综合使用案例与 ASP.NET MVC 集成(一)
    JQuery DataTables Selected Row
    力导向图Demo
    WPF ViewModelLocator
    Syncfusion SfDataGrid 导出Excel
    HTML Table to Json
    .net core 2.0 虚拟目录下载 Android Apk 等文件
    在BootStrap的modal中使用Select2
  • 原文地址:https://www.cnblogs.com/ywsheng/p/14971994.html
Copyright © 2011-2022 走看看