Gateway组件使用(一)

Gateway组件使用

什么是服务网关
1.说明

  • 网关统一服务入口,可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、防报文重放于数据篡改、功能调用的业务
    鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或者计费等等
  • 网关 = 路由转发 + 过滤器
    路由转发:接收一切外界请求,转发到后端的微服务上去
    在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及控制等,这些都可以通过过滤器完成
    2.为什么需要网关
  • 网关可以实现服务的统一管理
  • 网关可以解决微服务中通用代码的冗余问题(如权限控制、流量监控、限流等)—>负载均衡

gateway(spring)

1.gateway简介:这个项目提供了一个在springmvc之上构建API网关的库。springcloudgateway旨在提供一种简单有效的方法来路由到api,
并为api提供横切关注点,比如:安全性、监控/度量和弹性
2.特性

  • 基于springboot2.x 和 spring webFlux 和 Reactor 构建 响应式异步非阻塞 IO 模型
  • 动态路由
  • 请求过滤

开发网关动态路由

  • 1.网关配置有两种方式一种式快捷方式(Java代码编写网关),一种式完全展开方式(配置文件方式)【推荐】
  • 2.gateway组件也需要注册在consul注册中心,所以创建springboot项目需要引入consul依赖、actuator健康检测依赖、gateway网关依赖*【由于gateway依赖中有web相关依赖,所以不用引入web依赖了,不然会报错】*
  • 3.创建项目引入网关依赖
		<!-- 网关依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
  • 4.快捷方式配置路由 (两种方式)
    a.使用application.xml文档编写网关配置
server:
  port: 7979

spring:
  application:
    name: CATEWAY
  cloud:
    consul:
      host: localhost
      port: 8500
    gateway:
      routes:
        - id: student_route         #指定路由唯一标识
          uri: http://localhost:8086   #指定路由服务的地址
          predicates:
            - Path=/student/**

        - id: school_route         #指定路由唯一标识
          uri: http://localhost:8087   #指定路由服务的地址
          predicates:
            - Path=/school/student/**

b.使用java方式配置路由

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder routeLocatorBuilder) {
	RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
	return routes.route("path_route1", r -> r.path("/guonei")
			.uri("https://news.baidu.com/guonei"))
			.build();
}
  • 5.启动类中注解
@SpringBootApplication
@EnableDiscoveryClient  //consul
public class GatewayApplication {...}

网关在路由转发时如何实现请求负载均衡

  • 1.现有网关配置存在问题?
server:
  port: 7979

spring:
  application:
    name: CATEWAY
  cloud:
    consul:
      host: localhost
      port: 8500
    gateway:
      routes:
        - id: student_route         #指定路由唯一标识
          uri: http://localhost:8086   #指定路由服务的地址
          predicates:
            - Path=/student/**

问题:现有网关配置方式在uri的属性中路径直接写死为服务的某一个节点,这样没有办法实现请求的负载均衡

  • 2.如何配置网关转发实现负载均衡
 gateway:
      routes:
        - id: student_route         #指定路由唯一标识
          uri: lb://STUDENT   #实现请求的负载均衡处理
          predicates:
            - Path=/student/**

使用uri: lb://STUDENT #实现请求的负载均衡处理【注意:lb是load balance负载均衡 ,STUDENT是服务id】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值