Spring Cloud Alibaba之网关组件Gateway

实例演示1:在微服务体系中引入GateWay组件

  • 创建一个ServiceForGateway的SpringBoot项目,通过在控制类编写方法对外提供服务
@RestController
public class Controller {@RequestMapping("/getAccount/{id}")public String getAccount(@PathVariable String id){return "Account Info, id is:"+id;}
}
  • 创建GatewayDemo项目,添加依赖到pom文件
 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency></dependencies>

ps:本次实验演练仅用到Gateway组件,所以在pom文件里面,就不需要通过dependencyManagement引入spring-cloud-alibaba-dependencies,在引入了gateway的依赖后也不需要再引入spring-boot-starter-web了。

  • 配置application.yml文件相关参数,实现简单路由转发
server:port: 8080
spring:cloud:gateway:routes:# 路由id,可随便命名,但要确保唯一- id: account_route# 匹配后的地址uri: http://localhost:8090/getAccount/{id}#断言predicates:# 包含/getAccount即需转发- Path=/getAccount/{id}
  • 修改application.yml文件,实现网关过滤
server:port: 8080
spring:cloud:gateway:routes:- id: StripPrefix_route# 匹配后的地址uri: http://localhost:8090predicates:- Path=/needRemoved/**filters:- StripPrefix=1- id: PrefixPath_route# 匹配后的地址uri: http://localhost:8090predicates:- Method=GETfilters:- PrefixPath=/getAccount
  • 自定义全局过滤器,设置过滤器动作:
//自定义的全局性过滤器
public class MyGlobalFilter implements GlobalFilter, Ordered {//处理请求@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {String urlPath = exchange.getRequest().getURI().getPath();System.out.println(urlPath);if(urlPath.indexOf("hacker") == -1){return chain.filter(exchange);}else{ServerHttpResponse res = exchange.getResponse();String msg = "fail for hacker";byte[] bits = msg.getBytes();DataBuffer buf = res.bufferFactory().wrap(bits);res.setStatusCode(HttpStatus.BAD_REQUEST);res.getHeaders().add("Content-Type", "text/plain");return res.writeWith(Mono.just(buf));}}@Overridepublic int getOrder() {//Order值越小,优先级越高return 0;}
}
  • 编写代码配置过滤器:
@Configuration
public class ConfigMyGlobalFilter {@Beanpublic GlobalFilter configFilter() {return new MyGlobalFilter();}
}

实例演示2:GateWay整合Nacos,实现负载均衡

  • 创建 GateWithNacos项目,添加pom依赖,引入nacos和GateWay依赖包
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>
  • 编写启动类,添加注解,说明项目与nacos组件交互
@EnableDiscoveryClient
@SpringBootApplication
public class SpringBootApp {public static void main(String[] args) {SpringApplication.run(SpringBootApp.class, args);}}
  • 配置application.yml文件,实现GateWay整合Nacos效果
server:port: 8080
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:routes:- id: loadbalance_routeuri: lb://ServiceProvider/predicates:- Path=/callServiceByRibbon

实例演示3:通过GateWay实现灰度发布

  • 创建GrayRelease项目,添加pom依赖,启动类同上一致
    <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency></dependencies>
  • 配置application.yml文件,实现灰度发布效果
server:port: 8080
spring:cloud:gateway:routes:- id: oldVersion_Routeuri: http://localhost:3333/getAccount/{id}predicates:- Path=/getAccount/{id}- Weight=accountGroup, 9- id: newVersion_Routeuri: http://localhost:5555/getAccount/{id}predicates:- Path=/getAccount/{id}- Weight=accountGroup, 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试突击:Java 集合知识体系梳理

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。在 Java 开发中&#xff0c;集合类对象绝对是被使用最频繁的对象之一。因此&#xff0c;深入了解集合类对象的底层数…

热敏晶振:成本效益的选择与温补晶振的比较

在精密电子系统的设计中&#xff0c;晶振作为时间基准源&#xff0c;其频率稳定性直接影响到整个系统的性能。其中&#xff0c;温补晶振(Temperature Compensated Crystal Oscillator&#xff0c;简称TCXO)与热敏晶振(Thermistor Compensated Crystal Oscillator)作为在特殊温度…

面试-java异常体系

1.java异常体系 error类是指与jvm相关的问题。如系统崩溃&#xff0c;虚拟机错误&#xff0c;内存空间不足。 非runtime异常不处理&#xff0c;程序就没有办法执行。 一旦遇到异常抛出&#xff0c;后面的异常就不会进行。 (1)常见的error以及exception 2.java异常要点分析…

kubekey 安装高可用 kubernetes 集群

1. 准备环境 1.1 机器准备 4 台机器&#xff0c;操作系统&#xff1a;Ubuntu 24.04/RHEL8/CentOS9 10.111.3.53 master1 10.111.3.54 master2 10.111.3.55 master3 10.111.3.57 node41.2 安装依赖和配置 所有节点都需要执行&#xff1a; Ubuntu: apt-get install -y soca…

[Docker] Ubuntu安装Home Assistant

本文主要记载一些Ubuntu安装Home Assistant的细节,方便后面重装。 1. 安装Docker 安装依赖 $ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common添加 Docker 官方 GPG 密钥 $ curl -fsSL https://mirrors.ustc…

【AI大模型】Transformers大模型库(十四):Datasets Viewer

目录 一、引言 二、Datasets Viewer数据查看器 2.1 概述 2.2 示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transformers 提供了数以千计的预训练…

如何使用大模型进行文本分类任务?

暑期实习基本结束了&#xff0c;校招即将开启。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友解惑答疑&…

光遮断器的检测

引脚判别 在检测光遮断器时&#xff0c;先检测出发光二极管的引脚。万用表选择R1k挡&#xff0c;测量光电耦合器任意两个引脚之间的电阻&#xff0c;当出现阻值小时&#xff0c;黑表笔接的为发光二极管的正极&#xff0c;红表笔接的为负极&#xff0c;剩余两极为光敏管的引脚。…

openlayer 鼠标点击船舶,打开船舶简单弹框

背景&#xff1a; 对创建的地图对象&#xff0c;可以添加上监听事件&#xff0c;常用的有&#xff1a;地图点击事件、鼠标移动事件。 通过监听这些事件&#xff0c;又可以区分不同图层的不同要素&#xff0c;获取不同数据&#xff1b; 根据这些数据&#xff0c;又可以发起网络请…

【介绍下SCSS的基本使用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

微服务应用与开发知识点练习【Nacos、Ribbon、Sentinel】

1.微服务架构的主要优势是什么&#xff1f;&#xff08; &#xff09; A.简化开发过程 B.提高单体应用的性能 C.允许各个服务独立开发、部署和扩展 D.减少代码量 2. 在Spring Boot项目中&#xff0c;配置文件的默认名称是什么&#xff1f;&#xff08; &#xff09; A. co…

React的Props、生命周期

Props 的只读性 “Props” 是 React 中用于传递数据给组件的一种机制&#xff0c;通常作为组件的参数进行传递。在 React 中&#xff0c;props 是只读的&#xff0c;意味着一旦将数据传递给组件的 props&#xff0c;组件就不能直接修改这些 props 的值。所以组件无论是使用函数…

Linux编程---给函数取别名

0 Preface/Foreword 1 代码 1.1 源代码 #include <stdio.h> #include <string.h> int sum(int a, int b);int sum_alias(int a, int b) __attribute__ ((alias("sum"))); int main() { int ret 0; ret sum(5, 5) sum_alias(5, 5); …

线性相关,无关?秩?唯一解(只有零解),无穷解(有非零解)?D=0,D≠0?

目录 线性有关无关 和 唯一解&#xff08;只有零解&#xff09;&#xff0c;无穷解&#xff08;有非零解&#xff09;之间的关系 D0&#xff0c;D≠0&#xff1f; 和 秩 的关系 串起来&#xff1a; 线性相关&#xff0c;无关&#xff1f;秩&#xff1f;唯一解&#xff08;只…

华为认证hcna题库背诵技巧有哪些?hcna和hcia有什么区别?

大家都知道华为认证hcna是有题库供考生刷题备考的&#xff0c;但题库中海量的题目想要在短时间背诵下来可并不是一件容易的事情&#xff0c;这就需要我们掌握一定的技巧才行。华为认证hcna题库背诵技巧有哪些? hcna和hcna这二者又有什么区别呢?今天的文章将为大家进行详细解…

Tomcat高效部署与性能优化

Tomcat高效部署与性能优化 一、引言 Apache Tomcat是一个广泛使用的开源Java Web应用服务器&#xff0c;它轻量级、易扩展&#xff0c;并支持Servlet和JSP规范。然而&#xff0c;随着业务的发展和用户数量的增长&#xff0c;Tomcat的性能和稳定性变得至关重要。本文将介绍如何…

datax入门(datax的安装与简单使用)——01

datax入门&#xff08;datax的安装与简单使用&#xff09;——01 1. 官网2. 工具部署&#xff08;通过下载DataX工具包&#xff09;2.1 下载、解压2.2 配置2.2.1 查看配置模版2.2.2 根据模版配置json2.2.3 启动DataX 3. datax的简单使用3.1 mysql2stream3.2 mysql2mysql3.2.1 拼…

LeetCode 1207.独一无二的数

题目要求 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。示例 1&#xff1a;输入&#xff1a;arr [1,2,2,1,1,3] 输出&#xff1a;true 解释&#xff1a;在该…

PyCharm 2024.1最新变化

PyCharm 2024.1 版本带来了一系列激动人心的新功能和改进&#xff0c;以下是一些主要的更新亮点: Hugging Face 模型和数据集文档预览&#xff1a;在 PyCharm 内部快速获取 Hugging Face 模型或数据集的详细信息&#xff0c;通过鼠标悬停或使用 F1 键打开文档工具窗口来预览。 …

Discourse OpenAI 生成图片

正如一些讨论的&#xff0c;生成图片是比较贵的。 差不多到了 1 元 一张图了。 就 OpenAI 生成了上面 4 张图&#xff0c;费用 0.4 美元。 Discourse OpenAI 生成图片 - Discourse - iSharkFly