gateway网关详解_网关怎么设置才能上网

gateway网关详解_网关怎么设置才能上网本文介绍了微服务中Gateway的使用,正在学习Gateway或者准备学习的大佬看过来哟

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言:
最近在学习微服务相关的知识,看了黑马的相关课程,将关于Gateway的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象?
如果文章有什么需要改进的地方还请大佬多多指教?
小威先感谢大家的支持了?
在这里插入图片描述

?个人主页:小威要向诸佬学习呀
?个人简介:大家好,我是小威,一个想要与大家共同进步的男人??
目前状况?:目前大二,在一家满意的公司实习??

?如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
?欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬?

牛客部分使用反馈,个人感觉还不错,帮我找到了心仪的公司,希望各位伙伴儿们通过它也能提高不少???

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

?网关介绍

网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。

网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层。
在这里插入图片描述

因此综上所述:

网关(Gateway)是将两个使用不同协议的网络段连接在一起的设备。
网关的作用就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换。

Gateway网关是我们服务的守门神,所有微服务的统一入口

?网关实现

在SpringCloud中网关的实现主要包括两种:gateway和zuul

Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

?Gateway的使用

Gateway网关的使用步骤如下:

  1. 创建SpringBoot工程gateway,引入网关依赖
  2. 编写启动类
  3. 编写基础配置和路由规则
  4. 启动网关服务进行测试

第一步,引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos的服务依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

第二步,编写启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GatewayApplication { 
   

	public static void main(String[] args) { 
   
		SpringApplication.run(GatewayApplication.class, args);
	}
}

第三步,在ymal中编写配置和规则

server:
  port: 10010 # 网关端口
spring:
  application:
    name: gateway # 服务的名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos的地址
    gateway:
      routes: # 网关路由配置
        - id: user-service # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
          uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求

我们将符合Path 规则的一切请求,都代理到 uri参数指定的地址。

在这里插入图片描述

?网关入门小结

总结:

网关搭建步骤:

  1. 创建项目,引入nacos服务发现和gateway依赖

  2. 配置application.yml,包括服务基本信息、nacos地址、路由

路由配置包括:

  1. 路由id:路由的唯一标示

  2. 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡

  3. 路由断言(predicates):判断路由的规则,

  4. 路由过滤器(filters):对请求或响应做处理

?断言工厂

Spring Cloud Gateway 内置了许多路由断言工厂,可以通过配置的方式直接使用,也可以组合使用多个路由断言工厂。

例如:
Path 路由断言工厂
Path 路由断言工厂接收一个参数,根据 Path 定义好的规则来判断访问的 URI 是否匹配。

```yaml
spring:
  cloud:
    gateway:
      routes:
        - id: host_route
    uri: http://example.test
    predicates:
      - Path=/blog/detail/{ 
   segment}

Method 路由断言工厂
Method 路由断言工厂接收一个参数,即要匹配的 HTTP 方法。

spring:
  cloud:
    gateway:
      routes:
        - id: method_route
  uri: http://baidu.com
  predicates:
    - Method=GET

Cookie路由断言工厂
通过cookie和一个正则表达式作为断言条件的路由工厂,只要满足该条件就可以访问到该地址。

spring:
cloud:
gateway:
routes:
- id: between_route # 路由 Id,唯一
uri: https://example.org # 目标 URI, 路由到微服务的地址
predicates:
- Cookie=chocolate, ch.p # 使用Cookie路由断言工厂,配置cookie,正则表达式(可以没有)

配置解读:此路由将匹配具有一个名为chocolate的cookie的请求,该cookie的值匹配ch.p正则表达式

当然断言工厂有十几个,我们只需要掌握Path这种路由工程就可以了。
也有一些其他的工厂,我们下篇文章讨论。

在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论?
最后再次给大家安利一波牛客,点击刷题神器
注册牛客,快来和博主一起刷题吧嘿嘿嘿? 再次感谢各位小伙伴儿们的支持?

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183065.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月11日 下午7:16
下一篇 2022年10月11日 下午7:16


相关推荐

  • oracle快速web开发教学视频教程,Oracle SQL培训教程:从实践中学习Oracle SQL及Web快速应用开发-读书笔记…

    oracle快速web开发教学视频教程,Oracle SQL培训教程:从实践中学习Oracle SQL及Web快速应用开发-读书笔记…字符集的不同使日期型的显示有问题解决 altersession DATE LANGUAGE AMERICAN 解锁 scott 账户 alterusersco DISTINCT 去掉重复的行基本查询语句的格式 SELECT DISTINCT 列表 FROM 表名 其中列表 列名 表达式

    2026年3月16日
    2
  • python之pygame安装教程_Pygame安装教程

    python之pygame安装教程_Pygame安装教程1、python–version查看安装的Python版本,pip–version查看安装的pip版本,升级pip命令:python-mpipinstall–upgradepip如果已经下载了安装文件就使用:pipinstall文件名如果没有下载就使用:python-mpipinstall–user模块名,系统自动下载2、如果没有安装pip,先安装pi…

    2022年5月24日
    48
  • 二部图(二分图)总结

    二部图(二分图)总结1 二部图二部图又叫二分图 是图论中的一种特殊模型 设 G V E 是一个无向图 如果顶点 V 可分割为两个互不相交的子集 A B 并且图中的每条边 i j 所关联的两个顶点 i 和 j 分别属于这两个不同的顶点集 iinA jinB 则称图 G 为一个二分图 简单来说 如果图中点可以被分为两组 并且使得所有边都跨越组的边界 则这就是一个二分图 准确地说 把一个图的顶点划分为两个不相交子集 使得

    2026年3月19日
    3
  • 计算机中阶符、阶码、数符、尾数的意思

    计算机中阶符、阶码、数符、尾数的意思一个浮点数 a 由两个数 m 和 e 来表示 a m b e 在任意一个这样的系统中 我们选择一个基数 b 记数系统的基 和精度 p 即使用多少位来存储 m 即尾数 是形如 d ddd ddd 的 p 位数 每一位是一个介于 0 到 b 1 之间的整数 包括 0 和 b 1 如果 m 的第一位是非 0 整数 m 称作规格化的 有一些描述使用一个单独的符号位 s 代表 或者 来表示正负 这样 m 必须是正的 e 是指数 结构由此可以

    2026年3月17日
    1
  • 单目摄像机标定程序「建议收藏」

    单目摄像机标定程序「建议收藏」我自己写了一个摄像机标定程序,核心算法参照learningopencv,但是那个程序要从命令行预先输入参数,且标定图片要预先准备好,我觉得不太好,我就自己写了一个,跟大家分享下。若有纰漏,希望大家指正!#include”stdafx.h”#include”cv.h”#include”highgui.h”#include#includeusingname

    2025年6月13日
    6
  • flv.js 直播_前端视频播放插件

    flv.js 直播_前端视频播放插件关于使用flvjs文章目录关于使用flvjs1.创建2.事件处理3.踩到的坑1.创建HTML<videoid=”largeVideo”style=”width:100%;height:600px”class=”centeredVideo”controlsautoplaymutedwidth=”1015″

    2025年5月25日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号