简单介绍
gateway是spring Could推出,基于Spring5、springboot2.0、Project React,底层使用netty通讯,性能比较高的网关组件
为什么需要网关呢? 如果没有网关的话,调用方需要配置各种的服务,配置了网关之后,只需要统一访问网关,然后由网关请求具体的服务,调用方提供服务的实例是无感知的,而且网关还可以处理路由、安全、日志、监控等与业务无关的功能,使得业务开发更加纯净。
比较重要的概念:
1、路由:由id,目标uri,一系列断言(predicate),过滤器组成,如果断言为true(即匹配),则讲请求发送到真实服务上去。
2、断言(predicate):即匹配规则,可以匹配所http请求的所有内容,匹配成功,就发送请求到真实服务
3、过滤器:在请求被请求前(pre)修改请求头或请求后修改响应体。
配置路由
配置路由有两种方式:1、使用配置文件 2、使用配置类
步骤
导入pom依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<!-- gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- 注册中心eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
主启动类:
@SpringBootApplication
@EnableEurekaClient //开启eureka客服端
public class GetawayMain9527 {
public static void main(String[] args) {
SpringApplication.run(GetawayMain9527.class,args) ;
}
}
使用配置文件的方式:
server:
port: 9527
//eureka注册中心配置
eureka:
client:
fetch-registry: true
register-with-eureka: true
service-url:
defaultZone: http://localhost:7001/eureka/
spring:
application:
name: getaway
cloud:
discovery:
enabled: true //开启动态路由配置,根据服务名称负载均衡
gateway:
routes:
- id: payment
//uri: http://localhost:8001
uri: lb://pay //负载均衡的服务名称
predicates:
- Path=/payment/**
使用配置类的方式:
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator customrouteLocator(RouteLocatorBuilder builder){
RouteLocatorBuilder.Builder routes = builder.routes();
routes.route("baidu", r -> r.path("/guonei").uri("http://news.baidu.com")).build();
return routes.build() ;
}
}
通过上面的配置,访问http://localhost:9527就会路由到http://new.baidu.com/guonei
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。