当前位置: 首页 > news >正文

6.springcloud微服务架构搭建 之 《springboot集成Gateway》

5.springcloud微服务架构搭建 之 《springboot集成Hystrix》

目录

1.gateway介绍

2.项目引入gateway

3.yml配置gateway参数

5.自定义全局Filter

6.测试


1.gateway介绍

        服务网关(Spring Cloud Gateway)是Spring Cloud官方推出的 第二代网关框架,用于替代第一代网关Netflix Zuul,其不仅提供统 一的路由方式,并且基于Filter链的方式提供了网关的基本功能。服 务网关建立在Spring Framework 5之上,使用非阻塞模式,并且支持 长连接Websocket。Netflix Zuul是基于Servlet的,采用HttpClient 进行请求转发,使用阻塞模式。在性能上,服务网关优于Netflix Zuul,并且服务网关几乎实现了Netflix Zuul的全部功能。在使用和 功能上,用服务网关替换掉Netflix Zuul的成本上是非常低的,几乎 可以实现无缝切换。

        服务网关作为整个分布式系统的流量入口,有着举足轻重的作 用,列举如下。

  •         协议转换,路由转发。
  •         流量聚合,对流量进行监控,日志输出。
  •         作为整个系统的前端工程,对流量进行控制,有限流的作用。
  •         作为系统的前端边界,外部流量只能通过网关才能访问系统。
  •         可以在网关层做权限判断。 可以在网关层做缓存。

2.项目引入gateway

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>lilock-modules</artifactId><groupId>lilock.cn</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>lilock-service-gateway</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- getway 配置 loadbalancer 之后lb才会生效--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

3.yml配置gateway参数

server:port: 9090spring:application:name: lilock-service-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848namespace: devregister-enabled: truegroup: DEFAULT_GROUPgateway:discovery:locator:lower-case-service-id: trueenabled: trueroutes:- id: lilock-service-useruri: lb://lilock-service-userpredicates:- Path=/api-user/**filters:- StripPrefix=1 #替换前缀,如果是/api-user/访问的地址,则会通过/api-user/获取到对应服务lilock-service-user,再通过lilock-service-user获取到对应的服务IP和端口,完成一次完整请求main:allow-bean-definition-overriding: true

4.测试

5.自定义全局Filter

 

package lilock.cn.gateway.filter;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;@Component
public class RequestTimeFilter implements GlobalFilter, Ordered {private static Logger log = LoggerFactory.getLogger(RequestTimeFilter.class);private static final String REQUEST_TIME_BEGIN = "requestBeginTime";@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {exchange.getAttributes().put(REQUEST_TIME_BEGIN,System.currentTimeMillis());return chain.filter(exchange).then(Mono.fromRunnable(()->{Long startTime = (Long) exchange.getAttributes().get(REQUEST_TIME_BEGIN);if(null != startTime){log.info(exchange.getRequest().getURI().getRawPath() + ":" + (System.currentTimeMillis() - startTime) + "ms");}}));}@Overridepublic int getOrder() {return HIGHEST_PRECEDENCE + 2;}
}

 

6.测试

 

 

相关文章:

6.springcloud微服务架构搭建 之 《springboot集成Gateway》

5.springcloud微服务架构搭建 之 《springboot集成Hystrix》 目录 1.gateway介绍 2.项目引入gateway 3.yml配置gateway参数 5.自定义全局Filter 6.测试 1.gateway介绍 服务网关&#xff08;Spring Cloud Gateway&#xff09;是Spring Cloud官方推出的 第二代网关框架&#…...

[N1CTF 2018]eating_cms_

目录 信息收集 代码审计 parse_url解析漏洞 信息收集 进入即是登录页面&#xff0c;抓包一看应该是SQL注入&#xff0c;但是空格、%、|等等啥的都被waf了,不太好注入&#xff0c;先信息收集一波 花一分钟扫下目录&#xff0c;发现一个viminfo和register.php Viminfo文件…...

《Spring系列》第13章 Aop切面(二) 代理创建

前言 本篇文章主要介绍AOP的源码&#xff0c;要想看懂AOP&#xff0c;那么就看AOP给容器中注入了什么组件&#xff0c;这个组件什么时候工作&#xff0c;这个组件的功能是什么&#xff1f; EnableAspectJAutoProxy会向IOC容器中注入一个后置处理器&#xff0c;它会在Bean的创…...

算法-贪心

贪心算法1信息学竞赛课堂贪心算法2贪心法实际生活中&#xff0c;经常需要求一些问题的“可行解”和“最优解”&#xff0c;这就是所谓的“最优化”问题。一般来说&#xff0c;每个最优化问题都包含一组“限制条件”和一个“目标函数”&#xff0c;符合限制条件的问题求解方案称…...

【数据结构与算法】树(Tree)【详解】

文章目录前言树一、树的基本概念1、树的定义2、基本术语3、树的性质二、树的存储结构1、双亲表示法2、孩子表示法3、孩子兄弟表示法二叉树一、二叉树的概念1、二叉树的定义2、几个特殊的二叉树3、二叉树的性质4、二叉树的存储结构二、遍历二叉树1、先序遍历2、中序遍历3、后序遍…...

OSPF------LSA 详解

LSA头部 [r1]display ospf lsdb 链路状态老化时间&#xff08;Link-State Age&#xff09; 16bits,单位s当该LSA被始发路由器产生时&#xff0c;该值被设置为0&#xff0c;之后随着该LSA在网络中被洪泛&#xff0c;老化时间逐渐累积。&#xff08;但是不能让它一直增长&#x…...

js加解密入门

首先&#xff0c;让我们简单介绍一下百度公司的文心一言。文心一言是百度公司推出的一项文本生成工具&#xff0c;它可以根据给定的主题或关键词生成一句简短而富有启发性的文字。在我们的加密和解密方法中&#xff0c;我们将利用文心一言的特点来生成随机的字符串&#xff0c;…...

vue+Echarts导入自定义地图

在vue项目先安装echarts //在vue文件中的<script>中引入 import * as echarts from "echarts"; import geoJson from ../assets/map/Fmap.json; //自定义地图的位置 import * as topojson from "topojson-client"; //使用组件topojson-client自定…...

dp-组合总和 Ⅳ

给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。示例 1&#xff1a;输入&#xff1a;nums [1,2,3], target 4输出&#xff1a;7解释&#xff1a;所…...

46-堆

目录 1.概念 2.表示 3.三大操作 4.代码实现最大堆&#xff08;基于数组&#xff0c;编号从0开始&#xff09; 4.1.根据孩子节点k获取当前父节点的索引 4.2.根据父节点k求左孩子节点下标 4.3.根据父节点k求右孩子节点下标 4.4.判空 4.5.toString()方法 4.6.判断数组中…...

Mysql高可用高性能存储应用系列3 - mysqld_multi配置主从集群

概述 主从复制要解决的问题&#xff0c;1)写操作锁表&#xff0c;影响读操作&#xff0c;影响业务。2)数据库备份。3)随着数据增加&#xff0c;I/O操作增多&#xff0c;单机出现瓶颈。 主从复制就是从服务器的主节点&#xff0c;复制到多个从节点&#xff0c;默认采用异步的方…...

天干地支(Java)

题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个&#xff0c;分别为&#xff1a;甲&#xff08;jiǎ&#xff09;、乙&#xff08;yǐ&#xff09;、丙&#xff08;bǐng&#xff09;、丁&#xff08;dīng&#xff09;、戊&#xff08;w&#xff09;、己&a…...

码住,虹科工业树莓派应用小tips

在应用虹科工业树莓派进行项目开发的过程中&#xff0c;我们会应用到各种功能&#xff0c;部分功能看似不起眼&#xff0c;但是在实际应用开发过程中却非常重要。接下来虹科分享几个工业树莓派在应用过程中经常会遇到的几个问题&#xff0c;并分享解决方案&#xff0c;帮助大家…...

美国新规-带绳窗帘亚马逊ANSI/WCMA A100.1-20测试标准详解

亚马逊要求所有有线窗帘都经过测试&#xff0c;符合下列特定法规或标准要求&#xff1a; 商品法规/标准要求带绳窗帘以下所有项&#xff1a; 显示检测结果符合 ANSI/WCMA A100.1-2018&#xff08;带绳窗帘商品的美国国家安全标准&#xff09;的检测报告。 美国消费品安全委员…...

【华为OD机试 2023最新 】 模拟商场优惠打折(C++)

题目描述 模拟商场优惠打折,有三种优惠券可以用,满减券、打折券和无门槛券。 满减券:满100减10,满200减20,满300减30,满400减40,以此类推不限制使用; 打折券:固定折扣92折,且打折之后向下取整,每次购物只能用1次; 无门槛券:一张券减5元,没有使用限制。 每个…...

前端直接生成GIF动态图实践

前言去年在博客中发了两篇关于GIF动态生成的博客&#xff0c;GIF图像动态生成-JAVA后台生成和基于FFmpeg的Java视频Mp4转GIF初探&#xff0c;在这两篇博客中都是采用JAVA语言在后台进行转换。使用JAVA的同学经过自己的改造和开发也可以应用在项目上。前段时间有朋友私下问&…...

2023年Java岗面试八股文及答案整理(金三银四最新版)

春招&#xff0c;秋招&#xff0c;社招&#xff0c;我们Java程序员的面试之路&#xff0c;是挺难的&#xff0c;过了HR&#xff0c;还得被技术面&#xff0c;小刀在去各个厂面试的时候&#xff0c;经常是通宵睡不着觉&#xff0c;头发都脱了一大把&#xff0c;还好最终侥幸能够…...

centos8上安装redis

一、安装前准备 在安装Redis之前&#xff0c;需要确保CentOS 8系统已经安装了EPEL存储库和Redis的依赖库。 安装EPEL存储库 EPEL存储库是一个由Fedora项目提供的额外软件包仓库&#xff0c;包含了许多常用的软件包。在CentOS 8系统上&#xff0c;可以通过以下命令安装EPEL存储…...

新六级阅读通关特训

词汇题&#xff08;55道&#xff09; 1. You should carefully think over_____ the manager said at the meeting. A. that B. which C. what D. whose 1.选C,考察宾语从句连接词&#xff0c;主句谓语动词think over后面缺宾语&#xff0c;后面的宾语从句谓语动…...

【AI绘画】如何使用Google Colab安装Stable Diffusion

【AI绘画】如何在Colab安装的Stable Diffusion背景准备安装查看资源仓库跳转到Colab运行Stable Diffusion基础设置启动运行访问Stable Diffusion WebUI界面模型资源推荐背景 本地部署Stable Diffusion过程麻烦&#xff0c;对机器配置要求高&#xff0c;GPU 4G&#xff0c;然而…...

TVA智能体范式的工业视觉革命(10)

重磅预告&#xff1a;本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容&#xff0c;该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著&#xff0c;特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...

AnyLogic新手避坑指南:搞懂‘空间逻辑’和‘层’,你的第一个行人仿真模型就成功了一半

AnyLogic行人仿真空间逻辑完全解析&#xff1a;从概念混淆到精准建模 第一次打开AnyLogic的行人仿真模块时&#xff0c;那个充满蓝色网格的3D空间和密密麻麻的参数面板&#xff0c;很容易让人产生一种错觉——这不过是个"高级版流程图工具"。直到亲眼目睹自己精心设计…...

ARM内存拷贝指令CPYFPT/CPYFMT/CPYFET详解与优化

1. ARM内存拷贝指令概述在现代计算机体系结构中&#xff0c;内存拷贝是最基础也是最频繁的操作之一。传统的内存拷贝通常通过软件循环实现&#xff0c;这种方式简单但效率不高。ARM架构从v8.7-A开始引入了一组专门的内存拷贝指令——CPYFPT、CPYFMT和CPYFET&#xff0c;它们构成…...

如何成为年薪百万的AI算法工程师?字节跳动AI Lab的内部指南

一、破局&#xff1a;软件测试从业者的AI算法工程师转型契机 在AI技术浪潮的席卷下&#xff0c;软件测试行业正经历着深刻变革&#xff0c;同时也为从业者打开了通往AI算法工程师领域的大门。2026年数据显示&#xff0c;AI在测试行业的渗透率已超40%&#xff0c;新发AI测试岗位…...

Android项目集成CH340串口驱动:从官方Demo到体温检测模块的完整配置流程

Android项目集成CH340串口驱动&#xff1a;从官方Demo到体温检测模块的完整配置流程 在医疗设备、工业控制等物联网场景中&#xff0c;Android设备与外围硬件通过串口通信的需求日益增长。CH340作为一款高性价比的USB转串口芯片&#xff0c;因其稳定性和广泛兼容性成为许多硬件…...

光模块PCB设计学习记录01

/*光模块布局&#xff0c;有错误可以指出&#xff0c;有不足可以补充*/ 光模块PCB布局规划 01导入板框与结构约束导入 这里的outline板框一般由机械提供.dxf文件&#xff0c;板框决定PCB尺寸、器件可用区域和接口位置&#xff1b;成功导入dxf文件后&#xff0c;打开Board Geo…...

企业智能体如何高效快速部署落地,这N个细节需要注意

随着企业级智能体技术的日趋成熟&#xff0c;越来越多企业将其作为数字化转型的重要抓手&#xff0c;期望通过智能体提升业务效率、降低运营成本。但现实中&#xff0c;多数企业陷入“部署慢、落地难、效果差”的困境&#xff1a;有的耗时数月仍无法正常上线&#xff0c;有的上…...

从美颜到卫星图:聊聊傅里叶变换在CV领域那些‘看不见’的应用

从美颜到卫星图&#xff1a;傅里叶变换在CV领域的隐形革命 当你用手机拍摄一张自拍&#xff0c;轻触"美颜"按钮时&#xff1b;当医生通过CT扫描诊断病情时&#xff1b;甚至当气象学家分析卫星云图预测台风路径时——这些看似毫不相关的场景背后&#xff0c;都藏着一个…...

5分钟部署:开源网盘直链解析工具彻底解决下载限速问题

5分钟部署&#xff1a;开源网盘直链解析工具彻底解决下载限速问题 【免费下载链接】netdisk-fast-download 聚合多种主流网盘的直链解析下载服务, 一键解析下载&#xff0c;已支持夸克网盘/uc网盘/蓝奏云/蓝奏优享/小飞机盘/123云盘等. 支持文件夹分享解析. 体验地址: https://…...

告别MySQL单打独斗:若依多数据源整合TDengine 3.0的两种姿势与性能实测

告别MySQL单打独斗&#xff1a;若依多数据源整合TDengine 3.0的两种姿势与性能实测 时序数据库正在成为物联网、金融监控等高频数据场景的标配解决方案。当每秒需要处理成千上万条设备状态记录时&#xff0c;传统关系型数据库往往显得力不从心。TDengine作为国产时序数据库的佼…...