Spring Cloud Alibaba--gateway微服务详解之网关(二)

news2024/11/14 17:24:42

1、网关介绍

        上篇对微服务中的nacos注册中心进行集成讲解。nacos主要作用是管理多服务之间复杂关系的组件。微服务是非常庞大且问题突出的架构,HTTP协议具有跨源资源共享 (CORS) Cross- Origin Resource Sharing机制,而处于安全考虑往往前端架构都会对跨域进行拦截,此时前端继续调用微服务中的其它任何一个服务都会被拦截无法访问。虽然可以通过配置的方式处理,但就会出现和微服务一样的问题,配置繁琐且不好管理。

        此时需要gateway的介入将所有HTTP请求通过网关在网络层实现重打包转发的方式下发到对应的微服务接口上去。gateway统一管理所有微服务的访问入口,对于前端来讲只需要暴露网关服务的地址即可,同时网关还兼顾系统安全、认证、过滤、限流等控制策略。

2、项目集成网关

本文使用Spring版本:

        SpringBoot:2.7.5;

        Spring Cloud:2021.0.5;

        Spring Cloud Alibaba:2021.1;

在上一篇创建的项目中继续创建子级工程gateway,添加网关依赖:

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

        本文使用的配置文件为bootstrap方式,并未用到Spring默认的application配置,两者区别感兴趣可以问度娘。本项目使用认证中心接口演示网关的接口统一管理下发。

 

在gateway项目中主配置文件bootstrap.yml中配置网关服务:

spring:
  application:
    name: oto-gateway
  profiles:
    active: dev

在gateway项目中开发环境配置文件bootstrap-dev.yml中配置网关注册信息:

server:
  port: 9999

spring:
  cloud:
    nacos:
      # 注册中心
      discovery:
        server-addr: http://localhost:8848
      # 共享的配置文件
      config:
        server-addr: http://localhost:8848
        file-extension: yaml
        shared-configs[0]:
          data-id: oto-common.yaml
          refresh: true

在nacos中还有一些网关有关的配置:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true # 启用服务发现
          lower-case-service-id: true
      routes:
        - id: 认证中心
          uri: lb://oto-auth
          predicates:
            - Path=/oto-auth/**
          filters:
            - StripPrefix=1

        在nacos中配置项目配置信息可以及时生效,所以基本不变的配置信息可以放在项目中配置,可能发生变动的通通放到nacos中去动态配置。

        由于我们本篇主要讲解演示gateway,所以其它配置信息都被我干掉了,因为太多了怕影响大家阅读。配置文件中的内容啥意思,这里就不再一个一个讲了非常简单随便百度都有解释。

在网关启动类中添加nacos服务发现与注册注解:

@SpringBootApplication
@EnableDiscoveryClient
public class OtoGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(OtoGatewayApplication.class, args);
    }
}

至此网关部分代码完成,超级简单。 

 我们启动的网关端口为9999,认证中心端口为8000。

现在我们可以打开postman来测试端口是否可以调用。

        从测试结果来看我们直接访问认证中心localhost:8000/ras/publicKey,获取公钥的接口可以成功拿到公钥。接下来我们通过网关来获取公钥。

         可以看到我们通过在nacos配置的网关转发地址为/oto-auth/**,通过访问localhost:9999/oto-auth/rsa/publicKey同样成功的获取到了公钥。证明网关配置成功。

        本篇只演示讲解关于网关的集成和配置使用,等后续讲到认证中心的时候在认证中心讲网关的认证、鉴权功能。

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

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

相关文章

Linux配置JDK

目录 第一步&#xff1a;下载JDK 第二步&#xff1a;上传jdk到服务器 第三步&#xff1a;解压并移动到指定目录 第四步&#xff1a;配置JAVA环境变量 配置所有用户 配置个别用户&#xff0c;以user1用户为例 第一步&#xff1a;下载JDK 自己下载jdk&#xff0c;网上下载或者…

云原生安全检测器 Narrows发布,在Harbor上增加容器安全的动态扫描

国内外的用户都在使用云原生技术来提高应用的开发效率和可管理性&#xff0c;不少用户运用开源 Harbor 制品仓库&#xff0c;管理敏捷软件供应链中云原生应用的镜像&#xff0c;包括镜像存储、镜像扫描和镜像签名等功能。 Harbor 已经提供了一些高级的安全功能&#xff0c;例如…

webshell免杀之函数与变量玩法

webshell免杀之函数与变量玩法 前言 前文列举了一些用符号免杀的例子&#xff0c;此篇文章就以函数和变量来尝试下免杀。 本文以PHP为例&#xff0c;用PHP中函数和变量及语法特性&#xff0c;在不隐藏函数关键字情况下进行免杀。 动态函数 PHP中支持一个功能叫 variable fu…

【Linux】-- 什么是多线程

目录 如何理解线程 Linux中线程概念的建立 Linux特有的方案 重新理解进程 总结 pthread 线程库 介绍 创建简易线程 - 加深理解 使用 总结 线程的优点 线程的缺点 如何理解线程 线程在进程内部执行&#xff0c;是操作系统调用的基本单位。 #问&#xff1a;什么是线程…

EdgeChrome浏览器暗模式设置

作为程序媛&#xff0c;希望所有的页面都是暗黑模式&#xff0c;重度强迫症患者。 1.## Edge浏览器暗黑模式设置 第一步&#xff1a; 打开Edge浏览器&#xff0c;点击界面右上角的三点图标。 第二步&#xff1a; 点击“设置” 第三步&#xff1a;点击&#xff0c;左侧界面的“…

【C++】string类(简介,接口,oj 包学包会)

&#x1f345;之前学习过类和对象&#xff0c;明确了C是面向对象编程&#xff0c;那不得不提常见对象——字符串 目录 ☃️1.基本介绍 ☃️2.string中金典常见接口 &#x1f41d;2.1 reserve()和resize()&#xff08;capacity()和size()&#xff09; &#x1f41d;2.2 迭…

深入浅出带你学习无参RCE

前言 无参RCE,顾名思义就是当我们不能传入参数的情况下进行命令执行&#xff0c;因为一般情况下命令执行必须是要含有参数的&#xff0c;本文会就着无参RCE问题带大家学习CTF中常见的无参RCE方式及用法&#xff0c;下面我们展开文章来讲解一下。 基础知识 首先我们要了解&am…

Revit剖面操作:怎么做折线剖面和快速剖面

一、Revit中如何做折线剖面 在绘图过程中&#xff0c;有时候根据实际情况需要绘制折线剖面&#xff0c;这里就简单介绍一些折线剖面的绘制方法。 1、选择视图选项卡中“剖面”绘制剖面&#xff0c;如图1所示。 2、选中“剖面”&#xff0c;点击右上角“拆分线段”&#xff0c;如…

ctf-show-misc-游戏题

目录前言Misc22超级玛丽魂斗罗游戏flag 终结篇加油各位( •̀ ω •́ )y 期待与君再相逢前言首先感谢ctf平台和出题的大佬其次感谢各位读者&#xff0c;对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我本次出了一个专题&#xff0c;就是游戏专题 把所以关于游戏杂项的…

如何提高自动化测试覆盖率

自动化测试一直是测试人员的核心技能&#xff0c;也是测试的重要手段之一。尤其是在今年所谓的互联网寒冬的行情下&#xff0c;各大企业对测试人员的技术水平要求的很高&#xff0c;而测试人员的技术水平主要集中在三大自动化测试领域&#xff0c;再加测试辅助脚本的编写&#…

关于 DataLeap 中的 Notebook,你想知道的都在这

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品&#xff0c;帮助用户快速完成数据集成、开发、运维、治、资产、安全等全套数据中台建设&#xff…

java-spring_bean实例化

bean是如何创建的实例化bean的三种方式构造方法静态工厂&#xff08;了解&#xff09;实例工厂与FactoryBean实例工厂FactoryBeanbean是如何创建的实例化bean的三种方式 构造方法 bean本质上就是对象&#xff0c;创建bean使用构造方法完成 提供可访问的构造方法 public clas…

现实版“狂飙”上演,背后有哪些猫腻?

目录 披着电商外衣行洗黑钱之实 电商平台如何防范黑灰产作恶 最近热播的电视剧《狂飙》中有这样一个故事情节&#xff0c;刑满释放的唐小虎出狱之后&#xff0c;大哥高启强就大方的赠予唐小虎一家游戏厅。但其表面上是游戏厅&#xff0c;实际上背后却暗藏赌场。而在后来的剧情…

<<Java开发环境配置>>5-MySQL安装教程(绿色版)

一.MySQL绿色版安装: 1.直接解压下载的ZIP文件到对应的目录下(切记安装目录不要有中文); 如图:我的安装目录:D:Program Files 2.创建配置文件: 在MySQL安装目录下&#xff0c;创建一个my.ini配置文件&#xff0c;然后在里面添加以下内容&#xff08;别忘了MySQL安装目录要改成…

基于单片机的温度控制系统设计(32+WIFI+蓝牙版)-实物设计

编号&#xff1a;M22033-04M设计简介&#xff1a;基础功能&#xff1a;1、可以通过温度传感器检测温湿度2、可以通过按键设置温度阈值3、当温度超过阈值时&#xff0c;蜂鸣器报警扩展功能&#xff1a;1、通过蓝牙连接手机并通过手机实现监控2、通过WiFi连接手机并通过手机实现监…

程序员一般通过什么途径接私活?

判断私活是否靠谱的通用标准&#xff1a; 1.钱款是否有担保&#xff0c;能做到“钱和代码两清” 2.项目是否真实&#xff0c;需求文档清晰&#xff0c;结款时间一目了然 3.项目来源是否可靠&#xff0c;渠道是否正规接私活的途径主要包括&#xff1a; 1.熟人/朋友介绍。这样的…

transformer总结

1.注意力机制 意义&#xff1a;人类的注意力机制极大提高了信息处理的效率和准确性。 公式&#xff1a; 1)自注意力机制 b都是在考虑了所有a的情况下生成的。 以产生b1向量为例&#xff1a; 1.在a这个序列中&#xff0c;找到与a1相关的其他向量 2.每个向量与a1关联的程度&a…

网络编程套接字(上篇)UDP实现简易多人聊天室

目录 背景知识 主机间通信本质 socket 端口号特点&#xff1a; 为什么不用进程pid&#xff1f; 网络字节序 socket编程接口API sockaddr结构 ​编辑 简单UDP网络程序 了解UDP协议 简易多人聊天室实现 服务端代码&#xff1a; 客户端代码&#xff1a; 背景知识 主…

MySQL第六章第四次作业

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…

java切换版本等注意事项

启动java工具&#xff0c;命令行为&#xff1a;java -jar xxx.jar 注意burpsuite&#xff0c;behinder需要jdk&#xff0c;如果是这个例子&#xff0c;jdk-11.0.12&#xff0c;shiro_attack_2.2需要jdk版本jdk1.8.0_291。 jdk版本切换方式&#xff1a; 编辑&#xff5e;目录…