Spring cloud GateWay入门

Spring cloud GateWay

微服务为什么需要API网关?

  1. 在微服务架构中,通常一个系统会拆分为多个微服务,面对这么多微服务客户端应该如何去调用
  2. 如果根据每个微服务的地址发起调用,存在如下问题:
    • 客户端多次请求不同的微服务,会增加客户端代码和配置的复杂性,维护成本比价高
    • 认证复杂,每个微服务可能存在不同的认证方式,客户端去调用,要去适配不同的认证
    • 存在跨域的请求,调用链有一定的相对复杂性(防火墙 / 浏览器不友好的协议)
    • 难以重构,随着项目的迭代,可能需要重新划分微服务
  3. 为了解决上面的问题,微服务引入了API网关的概念API网关为微服务架构的系统提供简单、有效且统一的API路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公用逻辑,主要功能包含认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。

Spring Cloud GateWay是什么?

  • 官方文档:https://docs.spring.io/spring-cloud-gateway/reference/。
  • Spring Cloud Gateway是Spring cloud官方推出的第二代网关框架,定位于取代Netflix Zuul。
  • Spring Cloud Gateway旨在为微服务架构提供一种简单且有效的API路由的管理方式,并基于Filter的方式提供网关的基本功能,例如说案例认证、监控、限流等等。
  • Spring Cloud Gateway是由WebFlux+Netty+Reactor实现的响应式的API网关。它不能在传统的servlet容器中工作,也不能构建成war包。

微服快速接入Spring Cloud GateWay

构建网关服务

  1. 创建一个新的module模块gateway

  2. pom.xml中引入Spring Cloud Gateway网关依赖

    <!-- gateway网关 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--nacos-discovery  注册中心依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- loadbalancer 负载均衡器依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency>
    

微服务快速接入网关服务

  1. 以订单服务为例,在网关服务的application.yml
    server:port: 18888spring:application:name: tlmall-gatewaycloud:nacos:discovery:server-addr: tlmall-nacos-server:8848gateway:#设置路由:路由id、路由到微服务的uri、断言routes:- id: order_route  #路由ID,全局唯一,建议配置服务名uri: lb://tlmall-order  #lb 整合负载均衡器loadbalancerpredicates:- Path=/order/**   # 断言,路径相匹配的进行路由
    

2.库存服务,账户服务同上

3.网关服务的完整的application.yml配置如下:

server:port: 18888spring:application:name: tlmall-gatewaycloud:nacos:discovery:server-addr: tlmall-nacos-server:8848gateway:#设置路由:路由id、路由到微服务的uri、断言routes:- id: order_route  #路由ID,全局唯一,建议配置服务名uri: lb://tlmall-order  #lb 整合负载均衡器loadbalancerpredicates:- Path=/order/**   # 断言,路径相匹配的进行路由- id: storage_route   #路由ID,全局唯一,建议配置服务名uri: lb://tlmall-storage  #lb 整合负载均衡器loadbalancerpredicates:- Path=/storage/**   # 断言,路径相匹配的进行路由- id: account_route   #路由ID,全局唯一,建议配置服务名uri: lb://tlmall-account  #lb 整合负载均衡器loadbalancerpredicates:- Path=/account/**   # 断言,路径相匹配的进行路由

测试,启动网关服务

  1. postman中通过网关服务的18888端口下单,看能否成功
  2. 前端服务order.html中访问地址都替换为gateway:18888,测试下单是否成功

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

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

相关文章

svn不能添加.a文件

解决办法 在home目录下有一个.subversion文件夹&#xff0c;文件夹内有个config文件&#xff0c;里面可以修改过滤的文件类型 在使用命令svn add的时候带上参数–no-ignore&#xff0c;这样就会不顾config中的规则&#xff0c;将指定路径的文件都添加到版本库中 rockyrocky:/e…

计算机网络•自顶向下方法:网络应用原理

网络应用原理 网络应用架构 目前有两种主流的网络应用架构&#xff1a; 客户-服务器架构&#xff08;Client-server&#xff09; 服务器&#xff08;server&#xff09;: 有一台总是在线的主机&#xff0c;上面运行着服务器程序(server)服务器主机(server machine)具有永久的…

net.eval()和net.trasin()的用法

当构建神经网络使用到dropout层等时&#xff0c;网络的正向传播后反向传播神经元的系数会有所不同&#xff0c;因此需要用.eval()和.train()来指定模型方向。 net.train() 作用&#xff1a;将模型设置为训练模式。影响&#xff1a; 启用 Dropout 层&#xff1a;Dropout 会随机…

数据结构与算法-目录

音视频流媒体开发-目录 iOS知识点-目录 Android-目录 Flutter-目录 数据结构与算法-目录 恋上数据结构与算法一 【恋上数据结构与算法一】(一)复杂度 【恋上数据结构与算法一】(二)动态数组 【恋上数据结构与算法一】(三)链表 【恋上数据结构与算法一】(四)栈 【恋上数据结构与…

算法训练营Day28 | leetcode 122.买卖股票的最佳时机II 55.跳跃游戏 45.跳跃游戏II

122.买卖股票的最佳时机II 本题首先要清楚两点&#xff1a; 只有一只股票&#xff01;当前只有买股票或者卖股票的操作 想获得利润至少要两天为一个交易单元。 贪心算法 这道题目可能我们只会想&#xff0c;选一个低的买入&#xff0c;再选个高的卖&#xff0c;再选一个低…

da白话讲深度学习-卷积网络

卷积神经网络(CNN)是指至少在网络的一层中使用卷积运算来代替一般的矩阵乘法运算的神经网络&#xff0c;因此名为为卷积神经网络&#xff08;对于神经网络的发展与类型&#xff0c;可以学习站内的相关文章&#xff09; 1.什么是卷积&#xff1f; 既然是卷积神经网络&#xff…

搭建android开发环境 android studio

1、环境介绍 在进行安卓开发时&#xff0c;需要掌握java&#xff0c;需要安卓SDK&#xff0c;需要一款编辑器&#xff0c;还需要软件的测试环境&#xff08;真机或虚拟机&#xff09;。 早起开发安卓app&#xff0c;使用的是eclipse加安卓SDK&#xff0c;需要自行搭建。 目前开…

12.30 linux 文件操作,磁盘分区挂载

ubuntu 在linux 对文件的相关操作【压缩&#xff0c;打包&#xff0c;软链接&#xff0c;文件权限】【head&#xff0c;tail&#xff0c;管道符&#xff0c;通配符&#xff0c;find&#xff0c;grep&#xff0c;cut等】脑图-CSDN博客 1.文件操作 在家目录下创建目录文件&#…

Python Celery快速入门教程

Celery 是一个简单、灵活且可靠的分布式任务队列框架&#xff0c;用于处理大量的异步任务、定时任务等。它允许你将任务发送到消息队列&#xff0c;然后由后台的工作进程&#xff08;worker&#xff09;来执行这些任务&#xff0c;并且支持多种消息中间件&#xff0c;如 Rabbit…

Unity WebGL 部署IIS

Unity WebGL 部署IIS iis添加网站WebGL配置文件WebGL Gzip模式浏览器加载速度优化iis添加网站 第一步在配置好IIS并且添加网站 WebGL配置文件 在web包Build文件夹同级创建web.config文件 web.config文件内容 <?xml version="1.0" encoding="UTF-8"?…

基于西湖大学强化学习课程的笔记

放在前面 课程链接 2024年12月30日 前言&#xff1a;强化学习有原理部分的学习&#xff0c;也有与实践相关的编程部分。我认为实践部分应该是更适合我的&#xff0c;不过原理部分也很重要&#xff0c;我目前是准备先过一过原理。 应该花多少时间学习这部分呢&#xff1f; 但是这…

CannotRetrieveUpdates alert in disconnected OCP 4 cluster解决

环境&#xff1a; Red Hat OpenShift Container Platform (RHOCP) 4 问题&#xff1a; Cluster Version Operator 不断发送警报&#xff0c;表示在受限网络/断开连接的 OCP 4 集群中无法接收更新。 在隔离的 OpenShift 4 集群中看到 CannotRetrieveUpdates 警报&#xff1a; …

Redis--持久化策略(AOF与RDB)

持久化策略&#xff08;AOF与RDB&#xff09; 持久化Redis如何实现数据不丢失&#xff1f;RDB 快照是如何实现的呢&#xff1f;执行时机RDB原理执行快照时&#xff0c;数据能被修改吗&#xff1f; AOF持久化是怎么实现的&#xff1f;AOF原理三种写回策略AOF重写机制 RDB和AOF合…

【数据结构】链表(1):单向链表和单向循环链表

链表 链表是一种经典的数据结构&#xff0c;它通过节点的指针将数据元素有序地链接在一起&#xff0c;在链表中&#xff0c;每个节点存储数据以及指向其他节点的指针&#xff08;或引用&#xff09;。链表具有动态性和灵活性的特点&#xff0c;适用于频繁插入、删除操作的场景…

开源电子书转有声书整合包ebook2audiobookV2.0.0

ebook2audiobook&#xff1a;将电子书转换为有声书的开源项目 项目地址 GitHub - DrewThomasson/ebook2audiobook 整合包下载 更新至v2.0.0 https://pan.quark.cn/s/22956c5559d6 修改:页面已转为中文 项目简介 ebook2audiobook 是一个开源项目&#xff0c;它能够将电子…

NSSCTFpwn刷题

[SWPUCTF 2021 新生赛]nc签到 打开附件里面内容 import osart (( "####!!$$ ))#####!$$ ))(( ####!!$:(( ,####!!$: )).###!!$:##!$:#!!$!# #!$: #$#$ #!$: !!!$:\ "!$: /\ !: /"\ : /"-."-/\\\-."//.-"…

java里classpath都包含哪些范围?

什么是 classpath &#xff1f; classpath 等价于 main/java main/resources 第三方jar包的根目录 「引」SpringBoot中的classpath都包含啥

Docker+Portainer 离线安装

1. Docker安装 步骤一&#xff1a;官网下载 docker 安装包 步骤二&#xff1a;解压安装包; tar -zxvf docker-24.0.6.tgz 步骤三&#xff1a;将解压之后的docker文件移到 /usr/bin目录下; cp docker/* /usr/bin/ 步骤四&#xff1a;将docker注册成系统服务; vim /etc/sy…

#渗透测试#红蓝攻防#红队打点web服务突破口总结01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

Java:190 基于SSM的药品管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统的用户分管理员和销售两个角色的权限子模块。 管理员统计药品销售量&#xff0c;可以导出药品出入库记录&#xff0c;管理药品以及报损信息。 销…