第十二章 微服务核⼼组件之⽹关

2023-10-27

1.什么是微服务的⽹关和应⽤场景

  • 什么是⽹关
    API Gateway,是系统的唯⼀对外的⼊⼝,介于客户端和服务器端之间的中间层,处理⾮业务功能提供路由请求、鉴权、监控、缓存、限流等功能
    统⼀接⼊:智能路由,AB测试、灰度测试,负载均衡、容灾处理,⽇志埋点(类似Nignx⽇志)
    流量监控:限流处理,服务降级
    安全防护:鉴权处理,监控,机器⽹络隔离
  • 主流的⽹关
    zuul:是Netflix开源的微服务⽹关,和Eureka,Ribbon,Hystrix等组件配合使⽤,依赖组件⽐较多,性能较差
    kong: 由Mashape公司开源的,基于Nginx的API gateway
    nginx+lua:是⼀个⾼性能的HTTP和反向代理服务器,lua是脚本语⾔,让Nginx执⾏Lua脚本,并且⾼并发、⾮阻塞的处理各种请求
    springcloud gateway: Spring公司专⻔开发的⽹关,替代zuul

2.微服务的⽹关SpringCloud Gateway

  • 什么是 SpringCloud Gateway
    Spring官⽅出品,基于Spring5+Reactor技术开发的⽹关
    性能强劲基于Reactor+WebFlux、功能多样
    基于springboot2.x, 直接可以jar包⽅式运⾏
    官⽅⽂档:https://spring.io/projects/spring-cloud-gateway

3.SpringCloud Gateway项⽬创建和依赖添加

创建Gateway项⽬,添加依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

配置文件

server:
  port: 8888
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes: #数组形式
        - id: order-service #路由唯⼀标识
          uri: http://127.0.0.1:8000 #想要转发到的地址
          order: 1 #优先级,数字越⼩优先级越⾼
          predicates: #断⾔ 配置哪个路径才转发
            - Path=/order-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1 #去掉第⼀层前缀
#访问路径 http://localhost:8888/order-server/api/v1/video_order/list
#转发路径 http://localhost:8000/order-server/api/v1/video_order/list
#需要过滤器去掉前⾯第⼀层

测试

在这里插入图片描述

4.SpringCloud Gateway⽹关整合Nacos

原先存在的问题:微服务地址写死,负载均衡没做到
添加Nacos服务治理配置
⽹关添加naocs依赖

        <!--添加nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

启动类开启⽀持

@EnableDiscoveryClient

修改配置⽂件

server:
  port: 8888
spring:
  application:
    name: api-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.104:8848
    gateway:
      routes: #数组形式
        - id: order-service #路由唯⼀标识
          #uri: http://127.0.0.1:8000 #想要转发到的地址
          uri: lb://xdclass-order-service #从nacos获取名称转发,lb是负载均衡轮训策略
          order: 1 #优先级,数字越⼩优先级越⾼
          predicates: #断⾔ 配置哪个路径才转发
            - Path=/order-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1 #去掉第⼀层前缀
      discovery:
        locator:
          enabled: true #开启⽹关拉取nacos的服务

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

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

第十二章 微服务核⼼组件之⽹关 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • 获取文件的锁

    我想在对特定文件开始 threo read 时获取文件上的锁定 以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件 您可以获得一个FileLock https docs oracle com javase 8 docs ap
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 为自定义驱动程序创建 GraphicsDevice

    我正在开发一个在嵌入式系统中使用 Java 的项目 我有用于屏幕和触摸输入的驱动程序 以及用于文本输入的虚拟键盘 我的屏幕驱动程序有一个Graphics2D您可以绘制的对象和repaint Rectangle 更新方法 类似地 触摸驱动器能
  • 为什么 MOVE CURSOR 在 OS X Mountain Lion 上不显示?

    我正在做一个项目 想看看 Swing 提供的每个光标是什么样子的 public class Test public static void main String args JFrame frame new JFrame frame set
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 何时在 hibernate 中使用 DiscriminatorValue 注解

    在 hibernate 中使用 DiscriminatorValue 注释的最佳场景是什么以及何时 这两个链接最能帮助我理解继承概念 http docs oracle com javaee 6 tutorial doc bnbqn html
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu
  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib

随机推荐

  • 数值计算之 插值法(1)多项式插值——拉格朗日插值法

    数值计算之 插值法 1 多项式插值 拉格朗日插值法 前言 什么是插值 多项式插值法 拉格朗日插值法 总结 前言 移动机器人有一个非常重要的任务 轨迹规划 轨迹规划需要满足运动学原理 即在路径规划给出路点后 必须把路点平滑成光滑的轨迹 才能让
  • 对输入图像按比例压缩、居中填充

    摘要 图像在输入神经网络之前 通常需要进行尺寸压缩 如yolov5的输入为640x640 分类网络Resnet 50的输入为224x224 通常地 分类网络直接将输入进行resize处理 而对于目标检测网络 为了防止目标变形 通常采用pad
  • gitlab在merge request 中可能遇到的问题

    1 merge request 中代码冲突 merge的时候 可能存在代码冲突 这时 开发者可从远程仓库master分支重新拉取最新代码进行本地merge 解决冲突后重新提交代码进行review git pull upstream mast
  • sonar 规则总结

    bug类型 1 equals should not be used to test the values of Atomic classes bug 主要 不要使用equals方法对AtomicXXX进行是否相等的判断 Atomic变量永远
  • echarts 省市区联动地图

    地图效果 省地图
  • Java导出Excel 复杂表头

    文章标题 导出表格 依赖 导出表格 导出表格的方式在我的理解有两种 一种是直接用代码控制表头 简单的表头 一种是直接使用模板直接添加数据就可以 复杂的表头 依赖
  • Centos SSh端口号的更改

    前言 开启某服务或软件的端口 要从该服务或软件监听的端口 多以修改配置文件为主 SeLinux和防火墙 FireWall 的安全策略下手 如果使用阿里云 腾讯等第三方服务器还需要对管理控制台的安全组下手 下面进入主题 如果有什么问题请查看下
  • TCP长连接与NAT超时

    TCP长连接 TCP连接建立后只要不关闭 逻辑上连接一直存在 TCP是有保活定时器的 可以打开保活定时器来维持长连接 设置SO KEEPALIVE才会开启 时间间隔默认7200s 也就是2h 这个默认是关闭的 HTTP中的keep aliv
  • 内向者性格&&安静的力量

    前言 作为搞IT技术的 相信很多人都是比较内向的 以下文章正是介绍内向者的 希望大家能够从中认识自己 接受自己 外向的人更倾向从外部世界寻找力量 而内向的人更倾向关注自己的内部世界 安静 内向性格的竞争力 幸福快乐的首要之点 就在于一个人愿
  • valgrind使用心得

    1 definitely lost 有的时候实际上应该是still reachable 2 uninitialised value s 如 int c GetC if c gt 3 问题不出在c 实际是在GetC里的东西没初始化的 3 换行
  • 冒泡排序及其优化

    冒泡排序及其优化 图解冒泡排序 算法排序步骤 依次比较相邻两个元素 如果第一个比第二个大 则交换两个元素位置 对每一对相邻元素做同样的工作 直到最后一对 这样每次最后一对的元素排序后都是最大的 重复以上步骤直到排序完成 基本算法实现 pub
  • Salesforce解散中国团队,国产SaaS软件如何完美替代

    近日 全球最大的SaaS软件公司Salesforce突然宣布 解散中国区团队 同时关闭位于中国香港的办公室 转由阿里云代销业务 Salesforce的中国淘金之路彻底折戟 国产软件替代外资软件 水土不服等多重因素导致巨头败退 作为全球Saa
  • UKN服务器找不到,ukn6eo.top服务器iP

    2020 10 30 2021 05 02 31 13 76 99 2020 10 30 2021 05 02 31 13 97 245 2020 10 30 2021 05 02 69 63 189 16 2020 11 02 2021
  • 【STM32+ESP-12S连接腾讯云物联网开发平台 1】云平台的创建和AT固件烧录

    腾讯云物联网开发平台创建和ESP 12S的固件烧录 前言 一 腾讯云物联网开发平台的创建 1 创建产品 2 配置产品和创建设备 3 设备三元组说明 二 ESP 12S固件烧录 1 固件获取 2 固件烧录 三 连接测试 1 连接WiFi 2
  • tcp与udp

    tcp 服务端回复完SYN ACK之后 就建立连接 1 为什么是三次 而不是两次 服务端回复完SYN ACK之后 就建立连接 这是为了防止因为已失效的请求报文 突然又传到服务器引起错误 意思就是 假设采用两次握手建立连接 客户端向服务端发送
  • Win10编译64位curl(支持https)

    前期准备 1 安装NASM 官网https www nasm us 安装完成需要设置环境变量PATH 2 安装ActivePerl Download Install Perl ActiveState 3 下载openssl zlib cur
  • 矩阵乘法(C语言)

    Description 矩阵乘法是线性代数中最基本的运算之一 给定三个矩阵 请编写程序判断 是否成立 Input 输入包含多组数据 每组数据的格式如下 第一行包括两个整数p和q 表示矩阵A的大小 后继p行 每行有q个整数 表示矩阵A的元素内
  • 在VMware15.5上安装Ubuntu16.04(18.04)的具体流程及可能出现的问题(保姆级)

    在VMware15 5上安装Ubuntu16 04 18 04 的具体流程及可能出现的问题 保姆级 用镜像安装时已经下载好了两个可用的Ubuntu选项分别是Ubuntu16 04和Ubuntu18 04两个版本 下载时注意与两个版本兼容的R
  • 查看字符对应utf-8编码

    查看字符对应utf 8编码 http www mytju com classcode tools encode utf8 asp
  • 第十二章 微服务核⼼组件之⽹关

    1 什么是微服务的 关和应 场景 什么是 关 API Gateway 是系统的唯 对外的 介于客户端和服务器端之间的中间层 处理 业务功能提供路由请求 鉴权 监控 缓存 限流等功能 统 接 智能路由 AB测试 灰度测试 负载均衡 容灾处理