【SpringCloud-Eureka】Gateway网关-创新互联

Gateway概念

湖南网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联公司2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

特征

核心流程

Eureka服务注册

生产端

Gateway网关

验证网关


Gateway概念

路由(Route)是GateWay中最基本的组件之一,表示一个具体的路由信息载体,主要由下面几个部分组成:

  1. id:路由唯一标识,区别于其他的route

  2. url: 路由指向的目的地URL,客户端请求最终被转发到的微服务

  3. order: 用于多个Route之间的排序,数值越小越靠前,匹配优先级越高

  4. predicate:断言的作用是进行条件判断,只有断言为true,才执行路由

  5. filter: 过滤器用于修改请求和响应信息

特征

(1)基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0

(2)集成 Hystrix 断路器

(3)集成 Spring Cloud DiscoveryClient

(4)Predicates 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters

(5)具备一些网关的高级功能:动态路由、限流、路径重写

这里尤其需要注意三个关键术语:

①Filter(过滤器):

和Zuul的过滤器在概念上类似,可以使用它拦截和修改请求,并且对上游的响应,进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例。

②Route(路由):

网关配置的基本组成模块,和Zuul的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。

③Predicate(断言):

这是一个 Java 8 的 Predicate,可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。断言的输入类型是一个 ServerWebExchange。

核心流程

Eureka服务注册

在做Gateway网关服务前,我们需要先注册一个服务中心,否则无法使用网关。这里我使用的是Eureka这个服务注册中心。

第一步:首先构建Eureka模块,命名随意。可以通过Maven也可以使用Spring来构建项目。

第二步:修改pom.xml,引入依赖。

org.springframework.cloudspring-cloud-starter-netflix-eureka-serverorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-actuatororg.projectlomboklombokorg.springframework.bootspring-boot-starter-testjunitjunittest

第三步:在application.yml中进行配置

server:
  port: 7001

eureka:
  instance:
    hostname: eureka7001.com #Eureka服务器的实例名称
  client:
    register-with-eureka: false #不向注册中心注册自己
    fetch-registry: false #不需要去检索服务
    service-url:
      #设置与EurekaServer交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://localhost:7001/eureka/

第四步:启动类上添加注解

@SpringBootApplication
@EnableEurekaClient //此注解是用于在Eureka注册客户端使用
public class Gateway1221 {
    public static void main(String[] args) {
        SpringApplication.run(Gateway1221.class,args);
    }
}

第五步:直接启动这个类,然后在网站输入:localhost:7001即可进入以下网页

生产端

既然已经完成了注册服务中心的构建,那么我们还需要构建一个生产端的来注册进Eureka中。

第一步:创建模块 命名随意。

第二步:在pom.xml中引入依赖

org.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-actuatororg.mybatis.spring.bootmybatis-spring-boot-startercom.alibabadruid-spring-boot-starter1.1.23mysqlmysql-connector-javaorg.springframework.bootspring-boot-starter-jdbcorg.projectlomboklombokorg.springframework.bootspring-boot-starter-testtest

第三步:在application.yml中进行配置

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
    
eureka:
  client:
    register-with-eureka: true #表明将自己注册进EurekaServer
    fetch-registry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/
  instance:
    instance-id: payment8001 #注册的服务名称

第四步:在启动类上添加注解

@SpringBootApplication
@EnableEurekaClient  //此注解是用于在Eureka注册客户端使用
public class Payment8001Application {
    public static void main(String[] args) {
        SpringApplication.run(Payment8001Application.class,args);
    }
}

第五步:写controller层的逻辑(由于简化开发 在此不写业务层逻辑)

@RestController
public class PaymentController {
	@GetMapping("/payment/get/{id}")
    public String getPaymentById(@PathVariable("id") Long id){
        return "查询成功,id为:" + id;
    }
}

第五步:启动此类 在Eureka注册中心上可以发现cloud-payment-service被注册进去了

Gateway网关

第一步:构建模块

第二步:在pom.xml中引入依赖

org.springframework.cloudspring-cloud-starter-gatewayorg.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.projectlomboklomboktrueorg.springframework.bootspring-boot-starter-test

第三步:修改application.yml

server:
  port: 1221

spring:
  application:
    name: cloud-gateway
  cloud:
    #配置路由
    gateway:
      #这里可以配置多个路由
      routes:
        - id: payment_routh #路由的id
          uri: http://localhost:8001 #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/get/** #断言 路径相匹配的进行路由

eureka:
  instance:
    hostname: cloud-gateway
  client:
    register-with-eureka: true #表明将自己注册进EurekaServer
    fetch-registry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/

第四步:启动类上添加注解

@SpringBootApplication
@EnableEurekaClient //此注解是用于在Eureka注册客户端使用
public class Gateway1221 {
    public static void main(String[] args) {
        SpringApplication.run(Gateway1221.class,args);
    }
}

第五步:启动Gateway类,Eureka中也可以发现又注册进了一个客户端

验证网关

直接调用生产端的方法,网址:localhost:8001/payment/get/200

通过网关去调用生产端,网址:localhost:1221/payment/get/200

可以发现网关的功能已经实现了,可以隐藏注册进服务的生产端端口号

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:【SpringCloud-Eureka】Gateway网关-创新互联
文章路径:http://csdahua.cn/article/deehji.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流