Gateway服务的搭建

2023-11-15

1)Gateway的作用

网关的核心功能特性

  • 请求路由

  • 权限控制

  • 限流

架构图:

权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。

路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡。

限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。

2)创建gateway服务,引入依赖

引入依赖

<!--网关-->
<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>

3)编写启动类

package cn.jcf.gateway;

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);
	}
}

4)编写基础配置和路由规则

创建application.yml文件,内容如下:

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/开头就符合要求

4)网关搭建步骤:

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

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

路由配置包括:

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gateway服务的搭建 的相关文章

  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • 解决错误:日志已在具有多个实例的atomikos中使用

    我仅在使用atomikos的实时服务器上遇到问题 在我的本地服务器上它工作得很好 我在服务器上面临的问题是 init 中出错 日志已在使用中 完整的异常堆栈跟踪 java lang RuntimeException Log already
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • hibernate总是自己删除表中的所有数据

    您好 我正在开发一个 spring mvc 应用程序 它使用 hibernate 连接到存储文件的 mysql 数据库 我有两个方法 一个方法添加我选择的特定文件路径中的所有文件 另一种方法调用查询以返回从 mysql 存储的文件列表 问题
  • 如何在jsp代码中导入java库?

    我有以下jsp代码 我想添加 java io 等库 我怎样才能做到这一点
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • Clip 在 Java 中播放 WAV 文件时出现严重延迟

    我编写了一段代码来读取 WAV 文件 大小约为 80 mb 并播放该文件 问题是声音播放效果很差 极度滞后 你能告诉我有什么问题吗 这是我的代码 我称之为doPlayJframe 构造函数内的函数 private void doPlay f
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 反思 Groovy 脚本中声明的函数

    有没有一种方法可以获取 Groovy 脚本中声明的函数的反射数据 该脚本已通过GroovyShell目的 具体来说 我想枚举脚本中的函数并访问附加到它们的注释 Put this到 Groovy 脚本的最后一行 它将作为脚本的返回值 a la
  • 如何在 JFreeChart TimeSeries 图表上显示降雨指数和温度?

    目前 我的 TimeSeries 图表每 2 秒显示一个位置的温度 现在 如果我想每2秒显示一次降雨指数和温度 我该如何实现呢 这是我的代码 import testWeatherService TestWeatherTimeLapseSer
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • 使用 SAX 进行 XML 解析 |如何处理特殊字符?

    我们有一个 JAVA 应用程序 可以从 SAP 系统中提取数据 解析数据并呈现给用户 使用 SAP JCo 连接器提取数据 最近我们抛出了一个异常 org xml sax SAXParseException 字符引用 是无效的 XML 字符
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是

随机推荐

  • 你真的会用read()读【普通文件】吗?

    原型如下 include
  • 如何将json字符串写入table表格中

    JSON JavaScript Object Notation 是一种轻量级的数据交换格式 可以方便的将后台复杂的数据带回到前台进行展示 那么如何把json字符串写入到table表格之中呢 json简单说就是javascript中的对象和数
  • 美通企业日报

    今日看点 2019时尚育儿
  • java 常见错误合集

    java lang NullPointerException 这个异常都是因为调用null对象的方法 就是一个对象还没有没有正常初始化 就先调用它的方法比如 Object obj null obj toString 这就会抛出 这个异常
  • java中strictfp么意思_java中的strictfp的作用

    自Java2以来 Java语言增加了一个关键字strictfp 虽然这个关键字在大多数场合比较少用 但是还是有必要了解一下 strictfp 的意思是FP strict 也就是说精确浮点的意思 在Java虚拟机进行浮点运算时 如果没有指定s
  • 基于STM32控制的数字BUCK电路及程序编写

    本文芯片采用STM32G474CBT6 采用STM32cubeMX进行程序生成 BUCK电路拓扑结构 如图所示 BUCK变换器主要由电源VDC 场效应管MOSFET 续流二极管VD 电感L以及滤波电容C和负载RES组成 当MOSFET开通时
  • linux pxe安装视频,Linux利用PXE安装虚拟机的方法

    之前和友人聊天 知道可以利用PXE安装虚拟机 相信很多用户都和小编一样还不是很清楚 在这小编就把学习到的方法分享给大家 方法如下 1 1 dnsmasq apt get install dnsmasq vim etc dnsmasq con
  • elasticsearch sort script实现字段值等于某值排名靠前

    什么是script语言 script语言是es提供的一种支持自定义编程的用于复杂查询的脚本语言 主要类型有painless expressions等 需求描述 实际业务场景需要将某字段等于某值的排在前面 其他数据靠后 比如 雇员属性 nam
  • 阿里跟腾讯又㕛叒打起来了,这次是在东南亚

    腾讯与阿里的先头部队 已经在东南亚开始新的战争 在这之中 电商的争夺尤其激烈 神经浪游者 作者威廉 吉布森说 未来已来 只是分布得不太均匀 互联网的分布尤其如此 先是欧美 之后中国 如今 投资人和从业者纷纷押注 昔日的好时光将在东南亚将重现
  • sqlite3 提示 not found

    在android开发中使用adb shell下的sqlite3命令来查看SQLite数据库时 出现了 sqlite3 not found 错误 在网上搜索了一下问题的原因 原来是模拟器或真机中的 system xbin 目录下少了sqlit
  • 华为OD机试 - 工作安排 - 动态规划(Java 2023Q1 100分)

    目录 一 题目描述 二 输入描述 三 输出描述 四 动态规划 五 解题思路 六 Java算法源码 七 效果展示 1 输入 2 输出 3 说明 华为OD机试 2023B卷题库疯狂收录中 刷题点这里 一 题目描述 小明每周上班都会拿着自己的工作
  • vue设置全局过滤器

    src目录下新建文件夹filters 新建文件index js内容为 const timefilters getdate data console log data getdatetime data console log data exp
  • 十大Web网站漏洞扫描工具

    1 Nikto 这是一个开源的Web服务器扫描程序 它可以对Web服务器的多种项目 包括3500个潜在的危险文件 CGI 以及超过900个服务器版本 还有250 多个服务器上的版本特定问题 进行全面的测试 其扫描项目和插件经常更新并且可以自
  • 信号槽的返回值(QMetaObject::invokeMethod的用法)——Qt

    前言 之前从未想过信号槽是可以有返回值的 因为虽然信号发出去了 但是它在事件循环中 什么时候执行还不一定 这个想法固然是对的 但是这也不是不能实现的 我查了网上的一些资料 发现差不多有一下三种方法 1 信号槽里加指针或引用 这个不推荐 隐患
  • 并发处理

    1 并发活动 进程的引入 操作系统的特性之一是并发与共享 即在系统中 内存 同时存在几个相互独立的程序 这些程序在系统中既交叉地运行 又要共享系统中的资源 这就会引起一系列的问题 包括 对资源的竞争 运行程序之间的通信 程序之间的合作与协同
  • 分布式锁的实现

    目录 分布式锁 分布式锁的引出 单体锁存在的问题 共享数据不安全 超卖现象 锁的理解 拓展 分流 拓展 分流Nginx简单理解 分布式锁的引出 分布式锁的设计思路 分布式锁的常见应用场景 分布式锁方案 数据库的分布式锁如何实现 Redis分
  • 《手把手教你》系列练习篇之4-python+ selenium自动化测试(详细教程)

    1 简介 今天我们继续前边的练习 学习和练习一下 如何使用webdriver方法获取当前测试页面的URL 如何获取当前页面的title 如何打开浏览器的一个新建页面 如何操作单选按钮等等 这些小练习 来巩固基础 2 webdriver方法获
  • WebGL 实践篇(二)—— 屏幕坐标与裁剪坐标,片段着色器中的颜色定义

    一 裁剪坐标系 canvas坐标系以及屏幕坐标系 裁剪坐标 WebGL坐标系 的范围 1 1 原点在中间 x正值向右 y正值向上 屏幕坐标 原点在左上角 x正值向右 y正值向下 canvas坐标 与屏幕坐标相比 原点向右向下偏移 x y正值
  • 如何安装Jenkins并配置插件(清华源)

    Linux启动jenkins 将 jenkins war 放在 usr local jenkins 目录下 执行命令启动 Jenkins 1 nohup java jar jenkins war httpPort 8000 安装Jenkin
  • Gateway服务的搭建

    1 Gateway的作用 网关的核心功能特性 请求路由 权限控制 限流 架构图 权限控制 网关作为微服务入口 需要校验用户是是否有请求资格 如果没有则进行拦截 路由和负载均衡 一切请求都必须先经过gateway 但网关不处理业务 而是根据某