【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建

这篇具有很好参考价值的文章主要介绍了【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章,主要介绍微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建。

目录

一、Gateway服务网关

1.1、什么是Gateway

1.2、Gateway基础环境搭建

(1)基础环境介绍

(2)引入依赖

(3)添加路由配置信息

(4)运行测试

1.3、Gateway三个核心概念

1.4、Gateway配置信息

(1)routes路由信息配置

(2)defaultFilters默认过滤器配置

(3)predicates断言配置

1.5、高可用网关环境搭建

(1)搭建nginx环境

(2)创建两个Gateway工程


一、Gateway服务网关

1.1、什么是Gateway

在微服务架构里面,会存在很多的微服务应用程序,这些服务集群部署在一起对外提供服务,一般实际开发中,都会通过一个公共的入口地址将微服务应用暴露给客户端,这个公共的入口将其单独作为一个微服务应用,这个应用程序就叫做:服务网关,常见的网关有:zuul、Gateway等,其中Gateway的出现就是为了替代zuul网关。基于网关,可以实现统一用户认证、统一权限校验、接口限流、服务降级、接口调用统计、协议适配等功能。

gateway搭建,微服务笔记,微服务,gateway,Gateway服务网关,微服务网关,路由配置

有五种实现网关功能的方案,分别是:

  • 第一种:nginx + Lua。
  • 第二种:Kong。
  • 第三种:Traefik。
  • 第四种:Spring Cloud Netflix Zuul。
  • 第五种:Spring Cloud Gateway。

1.2、Gateway基础环境搭建

(1)基础环境介绍

这篇文章搭建的基础环境主要包含下面几个工程:

  • 注册中心:eureka服务端(直接使用前几篇文章的应用程序)。
  • 服务提供者:搭建一个服务消费者(consumer-client)、一个服务提供者(provider-client)(直接使用前几篇文章的应用程序)。
  • 网关工程(gateway-server):搭建Gateway网关工程(这篇文章需要创建的新工程)。

(2)引入依赖

  • 创建一个【gateway-server】工程,引入【gateway】依赖。
<!-- 引入 Gateway 依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

(3)添加路由配置信息

server:
  port: 8888
spring:
  application:
    name: gateway-server
  # 配置 gateway 路由信息
  cloud:
    gateway:
      # 指定路由信息
      routes:
        - id: consumer-client # 路由唯一标识,一般和微服务应用名称相同即可
          # 目标路由的服务地址,这里采用的是静态路由(将微服务的地址写死在配置文件里面)
          uri: http://localhost:8081/
          # 配置断言,也就是请求的URI满足哪些规则,才可以匹配当前这个routes路由信息
          predicates:
            # 这里使用路由断言,所有 /api/consumer 开头的请求,都将转发到 http://localhost:8081/ 这个服务上面
            - Path=/api/consumer/**

(4)运行测试

依次启动eureka、consumer-client、provider-client、gateway-server四个工程,打开postman,访问gateway-server网关工程访问接口【http://localhost:8888/api/consumer/getUserInfo?username=csdn2023】,此时可以正常返回响应结果,就表示网关工程的基础环境就搭建成功。

gateway搭建,微服务笔记,微服务,gateway,Gateway服务网关,微服务网关,路由配置

1.3、Gateway三个核心概念

Gateway网关中,有三个重要的核心概念,分别是:路由Routes、断言Predicates、过滤器Filter。路由Routes是Gateway网关中最基本的一个组成部分,它主要负责定义微服务的路由信息,它是由路由ID、目标URI、一组断言、一组过滤器组成的。

当客户端一个请求到达Gateway网关的时候,首先会被Gateway Handler Mapping处理,根据URI找到能够匹配的Routes路由信息,然后将路由信息发送到Global Web Handler进行微服务应用程序的接口调用,调用之前会经过一系列的Filter,接口调用成功之后,也会经过一系列的Filter,最终返回给客户端,这就是Gateway网关的一个大致工作原理。

断言是指定路由信息满足哪些规则时候,才会匹配成功,简单的理解为,断言就是一系列的if判断语句,只有当前客户端请求满足条件的时候,才能够找到这个路由信息,然后根据这个路由信息去调用微服务。

过滤器Filter是在调用微服务的过程中,可以在过滤器中增加一些额外的操作,比如:增加header头信息、去掉某些请求参数等等,有两种类型的过滤器:Gateway Filter路由过滤器 和 Global Filter全局过滤器。

1.4、Gateway配置信息

在GatewayProperties类中定义了Gateway网关相关的配置信息,其中大致包含:routes、defaultFilters、streamingMediaTypes等信息,如下所示:

gateway搭建,微服务笔记,微服务,gateway,Gateway服务网关,微服务网关,路由配置

(1)routes路由信息配置

其中routes是最关键的配置信息,用于定义路由信息,每一个路由信息都被抽象成了RouteDefination对象,这个类中包含:id、uri、order、predicates、filters、metadata。

id用于指定路由的唯一标识,一般和微服务名称相同即可;uri用于指定目标微服务的服务地址(可以指定具体的服务地址,也可以结合注册中心实现动态路由功能);order用于指定多种路由中的优先级;predicates用于指定断言;filters用于设置过滤器;metedata用于设置元数据信息。

gateway搭建,微服务笔记,微服务,gateway,Gateway服务网关,微服务网关,路由配置

(2)defaultFilters默认过滤器配置

Gateway给我们提供了一些默认的过滤器,使用的时候通过defaultFilters属性指定,每一个过滤器对象被抽象成一个FilterDefination类。

gateway搭建,微服务笔记,微服务,gateway,Gateway服务网关,微服务网关,路由配置

(3)predicates断言配置

predicates属性用于指定路由的断言,满足断言的URI将匹配当前这个路由信息。断言可以有多个,只要满足其中一个条件,就可以匹配当前这个路由信息,按照顺序依次匹配,只要前面匹配成功了,后面的断言就不会执行了,每一个断言对象都被抽象成了一个PredicateDefination类。

gateway搭建,微服务笔记,微服务,gateway,Gateway服务网关,微服务网关,路由配置

1.5、高可用网关环境搭建

在高并发的场景下,一台Gateway网关服务没办法处理大量的请求,如果此时Gateway服务宕机了,那么整个微服务系统也将不可用,所以为了提高服务的可用性,需要对Gateway部署多台服务结点,也就是集群部署Gateway网关。

那这里就有一个问题啦,客户端应该和哪个Gateway进行交互呢???为了解决这个问题,就需要借助于Nginx服务器来实现请求的分发,将请求依次分发到不同的Gateway网关中,从而实现高可用的网关环境。

gateway搭建,微服务笔记,微服务,gateway,Gateway服务网关,微服务网关,路由配置

(1)搭建nginx环境


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream gateway {
        server 127.0.0.1:8888;
        server 127.0.0.1:9999;
    }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /api-gateway {
            # 负载均衡
            proxy_pass http://gateway;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

(2)创建两个Gateway工程

要实现Gateway网关的高可用,就需要部署多台网关工程,然后通过nginx请求转发,指定通过哪一台Gateway网关进行请求处理。采用这种模式搭建的Gateway网关,就可以实现高可用,即使其中一台Gateway宕机了,也有其他的Gateway可以继续提高服务。

到此, Gateway服务网关的基础环境、高可用网关环境搭建就搭建完啦。

综上,这篇文章结束了,主要介绍微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建。文章来源地址https://www.toymoban.com/news/detail-732925.html

到了这里,关于【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用 Gateway 搭建网关服务及实现动态路由?

    网关作为微服务中非常重要的一部分,是必须要掌握的;本文记录一下我是如何使用Gateway搭建网关服务及实现动态路由的,帮助大家学习如何快速搭建一个网关服务,了解路由相关配置,鉴权的流程及业务处理,有兴趣的一定看到最后,非常适合没接触过网关服务的同学当作

    2024年02月09日
    浏览(59)
  • springboot整合spring cloud gateway搭建网关服务

    spring cloud netflix zuul、spring cloud gateway是最常见的微服务网关,通过网关,我们可以在请求到达后端指定服务之前/后端服务处理完业务响应数据之后对响应进行对请求/响应进行处理。 比如常见的参数校验、接口鉴权等等,在后端服务的拦截器和过滤器能做的事在网关都可以做

    2024年02月07日
    浏览(50)
  • SpringCloud基础篇-10-服务网关-Gateway

    上一代网关Zuul 官网 SpringCloudGateway官网,变化很大,以实际为准 Gateway是在Spring生态系统之上构建的API网关服务,基于Spring5SpringBoot2和ProjectReactor等技术。 Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等 SpringCl

    2024年04月11日
    浏览(41)
  • Java之SpringCloud Alibaba【七】【Spring Cloud微服务网关Gateway组件】

    Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】 跳转 Java之SpringCloud Alibaba【二】【微服务调用组件Feign】 跳转 Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】 跳转 Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】 跳转 Java之SpringCloud Alibaba【五】【微服务

    2024年02月06日
    浏览(60)
  • springboot和flask整合nacos,使用openfeign实现服务调用,使用gateway实现网关的搭建(附带jwt续约的实现)

    插件 版本 jdk 21 springboot 3.0.11 springcloud 2022.0.4 springcloudalibaba 2022.0.0.0 nacos 2.2.3(稳定版) python 3.8 先创建目录,分别创建config,logs,data目录,单独创建一个容器  将配置文件拷贝出来(主要是application.properties和logback.xml) 修改mysql的信息(修改文件application.properties) 再次运行

    2024年02月07日
    浏览(48)
  • 分布式组件 gateway 网关

    网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制。 bootstrap.yml nacos config 导入的依赖 详细的后面在介绍

    2024年03月27日
    浏览(51)
  • SpringCloud之网关组件Gateway学习

    Spring Cloud Gateway是Spring Cloud的⼀个全新项目,目标是取代Netflix Zuul,它基于Spring5.0+SpringBoot2.0+WebFlux(基于高性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul,官方测试,Gateway是Zuul的1.6倍,旨在为微服务架构提供种简单有效的统⼀的API路由管

    2024年03月24日
    浏览(40)
  • Gateway网关组件(在Spring Cloud整合Gateway(idea19版本))

            Spring Cloud Gateway官网:Spring Cloud Gateway         局域网中就有网关这个概念,局域网接收数据或发送数据都要通过网关,比如使用VMware虚拟机软件搭建虚拟机集群的时候,往往我们需要选择IP段中的⼀个IP作为网关地址,网关可以对请求进行控制,提升我们系统的安

    2024年02月16日
    浏览(41)
  • 【微服务笔记17】微服务组件之Gateway实现动态路由、配置路由规则、路由过滤器

    这篇文章,主要介绍微服务组件之Gateway实现动态路由、配置路由映射规则、路由过滤器。 目录 一、动态路由配置 1.1、动态URI路由配置 (1)引入eureka客户端依赖 (2)添加路由配置 1.2、服务名称转发配置 二、断言配置规则 2.1、路由断言工厂类 2.2、Path路径匹配 2.3、Query请求

    2023年04月23日
    浏览(45)
  • Gateway网关搭建

    #如何看待「前端已死论」?#   目录 一、网关 二、搭建网关服务步骤 2.1 创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖,然后创建启动类 2.2 编写路由配置及nacos地址 2.3 测试 三、 总结 一、网关 网关是一个独立的服务,搭建网关服务时需要引用两个依赖 网

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包