SpringCloudGateway 集成 nacos 整合实现动态路由_04

接上一篇:SpringCloud Gateway 集成 oauth2 实现统一认证授权

文章目录

          • 一、目前存在的问题
            • 1. 问题简述
            • 2. 集成nacos前配置
            • 3. 前言简述
          • 二、网关模块改造集成nacos
            • 2.1. 引入依赖
            • 2.2. 创建bootstrap.yaml
            • 2.3. 在nacos配置中心添加配置
            • 2.4. 启动服务
            • 2.5. 访问产品模块
            • 2.6. 获取toeken
            • 2.7. 携带toekn访问产品模块
            • 2.8. 怎样证明配置动态刷新呢
          • 三、利用注册中心动态路由
            • 3.1. 查看服务列表
            • 3.2. 应用名称替换ip和端口
            • 3.3. 重新请求

一、目前存在的问题
1. 问题简述
  • SpringCloudGateway的路由规则写死在配置文件中,无法支持动态更新
  • 路由规则如何与服务注册中心联动
2. 集成nacos前配置
spring:cloud:gateway:routes:- id: producturi: http://localhost:9000predicates:- Host=product.gblfy.com**- id: authuri: http://localhost:5000predicates:- Path=/oauth/tokendatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/auth-serv?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456
3. 前言简述

首先咱们这篇基于SpringCloudGateway集成授权认证中心的oauth2的因此,发起请求之前需要先通过网关访问认证授权中心auth-serv获取token才可以访问后面的模块。

二、网关模块改造集成nacos
2.1. 引入依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><spring.cloud-version>Hoxton.SR9</spring.cloud-version></properties><dependencies><!--配置中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--服务注册发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--安全认证框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!--security-oauth2整合--><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-oauth2-resource-server</artifactId></dependency><!--oauth2--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-oauth2</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency></dependencies><dependencyManagement><!--https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E--><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud-version}</version><type>pom</type><scope>import</scope></dependency><!--spring-cloud-alibaba 版本控制--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
2.2. 创建bootstrap.yaml
server:port: 8081
spring:cloud:nacos:discovery:service: gateway-servserver-addr: localhost:8848config:server-addr: localhost:8848file-extension: yamlshared-configs[0]:dataId: gateway.yaml# 动态刷新refresh: true

将以前application.yml文件的内容,添加到nacos控制台的gateway.yaml

spring:cloud:gateway:routes:- id: producturi: http://localhost:9000predicates:- Host=product.gblfy.com**- id: authuri: http://localhost:5000predicates:- Path=/oauth/tokendatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/auth-serv?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456
2.3. 在nacos配置中心添加配置

新建配置
在这里插入图片描述
在这里插入图片描述

2.4. 启动服务

启动Gateway-Serv模块服务
在这里插入图片描述
启动auth-serv认证授权服务
在这里插入图片描述

启动product-serv服务
在这里插入图片描述

2.5. 访问产品模块

不请求auth-serv模块获取otken,直接通过网关访问产品模块

在这里插入图片描述
从上图可以看出访问需要认证授权

2.6. 获取toeken

http://localhost:8081/oauth/token
通过认证授权中心获取toekn

grant_type:password
client_id:app
client_secret:app
username:ziya
password:111111

在这里插入图片描述

2.7. 携带toekn访问产品模块

携带toekn通过网关服务访问产品模块
http://product.gblfy.com:8081/product/1
在这里插入图片描述
从图中可以看出,获取token后,通过网关服务可以正常请求产品模块,并有响应报文。

2.8. 怎样证明配置动态刷新呢

修改配置
在这里插入图片描述

再次通过网关请求产品服务模块服务
在这里插入图片描述
在这里插入图片描述

从图中可以看出访问请求拒接了,因为没有9200端口的服务应用。我们现在基于nacos-config配置动态将我们的路由规则管理起来了。

三、利用注册中心动态路由
3.1. 查看服务列表

有3台应用
在这里插入图片描述

3.2. 应用名称替换ip和端口

原配置

spring:cloud:gateway:routes:- id: producturi: http://localhost:9200predicates:- Host=product.gblfy.com**- id: authuri: http://localhost:5000predicates:- Path=/oauth/tokendatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/auth-serv?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456

改造后配置

spring:cloud:gateway:routes:- id: producturi: lb://product-servpredicates:- Host=product.gblfy.com**- id: authuri: lb://auth-servpredicates:- Path=/oauth/tokendatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/auth-serv?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456
3.3. 重新请求

http://product.gblfy.com:8081/product/1

Authorization: Bearer d364c6cc-3c60-402f-b3d0-af69f6d6b73e

在这里插入图片描述
从上图可以看出可以通过网关服务正常请求产品模块!

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

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

相关文章

深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?

阿里妹导读&#xff1a;在刚刚结束的乌镇世界互联网大会上&#xff0c;阿里云自主研发的POLARDB云原生数据库当选世界互联网领先科技成果&#xff0c;凭实力站上C位。这个”包管“了北京市每天800万人次的公交出行的下一代分布式数据库到底有多强大&#xff1f;我们请阿里云智能…

QCon演讲|闲鱼从零到千万DAU的应用架构演进

导读:业务架构要随着业务发展做相应的演进,继而支撑业务的快速发展。本文主要通过介绍闲鱼从零发展到千万级DAU应用的不同阶段的业务特点、核心问题以及针对性的架构演进,来阐述业务架构的演进思路与心得。 闲鱼业务背景 技术架构的演进跟业务形态都是强相关的,闲鱼的市场本质…

程序员必修课:为什么非要用Python做数据分析?Excel不好吗?

日本最大的证券公司之一野村证券首席数字官马修汉普森&#xff0c;在Quant Conference上发表讲话&#xff1a;“用Excel的人越来越少&#xff0c;大家都在码Python代码。”甚至直接说&#xff1a;“Python已经取代了Excel。”实际上&#xff0c;Python的应用领域极为广泛&#…

SpringCloudGateway实现金丝雀发布_05

接上一篇&#xff1a;SpringCloudGateway 集成 nacos 整合实现动态路由 文章目录一、启动服务1. 启动Gateway-Serv模块服务2. 启动auth-serv认证授权服务3. 启动product-serv服务4. 启动product-serv服务2二、修改nacos配置2.1. 配置改造2.2. 配置发布三、测试验证3.1. 访问产品…

Dubbo 在 K8s 下的思考

序言 Dubbo在2011开源之后&#xff0c;一直是国内最受欢迎的RPC框架&#xff0c;之后spring boot和Spring Cloud的面世&#xff0c;助推了微服务的火热程度。计算机的世界变化很快&#xff0c;自从容器和K8s登上舞台之后&#xff0c;给原有的RPC领域带来了很大的挑战。这个文章…

containerd与安全沙箱的Kubernetes初体验

containerd是一个开源的行业标准容器运行时&#xff0c;关注于简单、稳定和可移植&#xff0c;同时支持Linux和Windows。2016年12月14日&#xff0c;Docker公司宣布将Docker Engine的核心组件 containerd 捐赠到一个新的开源社区独立发展和运营。阿里云&#xff0c;AWS&#xf…

Seata 单机环境搭建_01

文章目录一、整合版本说明1. 毕业版本依赖关系(推荐使用)2. 组件版本关系3. 演示版本二、部署单机 TC Server2.1. 下载Seata2.2. 解压缩2.3. 启动2.4. 监听日志2.5. 启动命令讲解一、整合版本说明 1. 毕业版本依赖关系(推荐使用) Spring Cloud VersionSpring Cloud Alibaba V…

学生成绩管理系统java+mysql+swing入门级项目开发

夫陶公清风千古&#xff0c;余又何人&#xff0c;敢称庶几 代码已移至Gitee &#xff1a; https://gitee.com/BreezAm/edu-student 文章目录简要&#xff1a;登陆运行效果主界面运行效果图界面设置运行效果图网络配置界面运行效果图菜单栏运行效果图登陆窗体实现窗体界面设置功…

干货 | 大白话彻底搞懂 HBase RowKey 详细设计

作者 | 且听风吟责编 | Carol封图 | CSDN 付费下载于视觉中国前言RowKey作为HBase的核心知识点&#xff0c;RowKey设计会影响到数据在HBase中的分布&#xff0c;还会影响我们查询效率&#xff0c;所以RowKey的设计质量决定了HBase的质量。是咱们大数据从业者必知必会的&#xf…

Knative 实战:如何在 Knative 中配置自定义域名及路由规则

目前 Knative 中默认支持是基于域名的转发&#xff0c;但域名默认格式是&#xff1a;"{{.Name}}.{{.Namespace}}.{{.Domain}}"&#xff08;这个可以在 config-network 配置&#xff09;。但对于用户来说并不能指定全域名。 另外一个问题就是基于Path 转发的能力&…

混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践

摘要&#xff1a;2019杭州云栖大会大数据企业级服务专场&#xff0c;由斗鱼大数据高级专家张龙带来以 “混合云模式下 MaxComputeHadoop 混搭大数据架构实践” 为题的演讲。本文讲述了从 Apache Hadoop 阶段到 Cloudera CDH 阶段斗鱼大数据架构的发展历程。提出了上云过程中斗鱼…

mybatisplus 一次性执行多条SQL语句

文章目录一、Mysql数据库1. Url2. xml映射文件二、Oracle数据库2.1. 关键点2.2. xml映射文件一、Mysql数据库 关键点&#xff1a;在url后面添加&allowMultiQueriestrue&#xff0c;sql后面添加分号; 1. Url 案例&#xff1a; url: jdbc:mysql://localhost:3306/afsdb?…

没错!Python程序员正在消失,HR:你才知道?

Python为什么这么火&#xff1f;学了Python能干什么&#xff1f;Python程序员有前途吗&#xff1f;几乎所有人脑子里都有这个疑问&#xff0c;感觉现在铺天盖地都是Python的消息&#xff0c;就连刷抖音都能刷到Python&#xff0c;Python已经火出圈了&#xff01;Python为什么这…

swing中模态对话框(setModal(true))和显示对话框(setVisible(true))的编写顺序

今天给大家分享一个鄙人在编程中总结出的一个易错点和最容易让人感到困惑的一个知识点&#xff1a; 当你要从一个窗体跳转到另一个窗体&#xff0c;你把跳转目标的窗体设成模态对话框&#xff0c;设计成模态对话框就是禁止父窗体与子窗体之间操作&#xff0c;简单说就是当调用子…

Service Mesh 初体验

前言 计算机软件技术发展到现在&#xff0c;软件架构的演进无不朝着让开发者能够更加轻松快捷地构建大型复杂应用的方向发展。容器技术最初是为了解决运行环境的不一致问题而产生的&#xff0c;随着不断地发展&#xff0c;围绕容器技术衍生出来越来越多的新方向。 最近几年&a…

mybatisplus 一次性执行多条SQL语句插入(Mysql篇)

文章目录一、数据库部分1. 创建数据库2. 初始化表结构二、代码部分2.1. controller2.2. mapper接口2.3. 映射文件2.4. 参数封装三、测试验证3.1. 发起请求3.2. 查看数据库3.3. 配置文件部分一、数据库部分 1. 创建数据库 创建more-insert 2. 初始化表结构 -- 一次性插入多张…

带领国产数据库走向世界,POLARDB底层逻辑是什么?

POLARDB 是阿里云自主研发的下一代云原生分布式数据库&#xff0c;100%兼容MySQL、PostgreSQL等开源数据库&#xff0c;高度兼容Oracle语法&#xff0c;使用RDS服务的客户不需要修改应用代码&#xff0c;可以一键迁移到POLARDB&#xff0c;体验更大的容量&#xff0c;更高的性能…

基于java+swing+mysql+JFeeChart的企业人力资源管理系统(1)

文章目录一&#xff0c;前言二&#xff0c;项目运行图&#xff08;1&#xff09;主界面&#xff08;管理员界面&#xff09;&#xff08;2&#xff09;员工资料运行图&#xff08;3&#xff09;全部员工查看运行图&#xff08;4&#xff09;部门管理运行图&#xff08;5&#x…

十年架构师:我是这样手写Spring的,用300行代码体现优雅之道

起源Spring作为一个开源框架&#xff0c;于2003 年兴起的一个轻量级的Java 开发框架&#xff0c;由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是…

深度 | 打败围棋冠军后,机器智能下一步能战胜黑客吗?

阿里妹导读&#xff1a;从深蓝战胜象棋冠军到AlphaGo战胜围棋冠军&#xff0c;每一次机器智能在特定领域战胜人类&#xff0c;都会引发整个社会的广泛关注。洞察了棋类博弈真相的机器智能&#xff0c;接下来能洞察网络安全的真相并且在黑客博弈中战胜人类吗&#xff1f;在机器智…