GateWay微服务网关的搭建

news2025/1/19 20:20:32

服务网关

没有服务网关

问题:地址太多|安全性|管理问题

访问商品服务

http://ip地址:9001/goods/findAll

访问广告服务

http://ip地址:9002/brand/findAll

访问用户服务

http://ip地址:9003/user/findAll

在有网关的情况下,我们配置网关端口号为4006,在访问服务是我们可以通过访问网关进而访问服务,此时端口号访问时都为4006,方便了很多,尤其是前端做跨域配置

访问商品服务

http://ip地址:4006/goods/findAll

访问广告服务

http://ip地址:4006/brand/findAll

访问用户服务

http://ip地址:4006/user/findAll

Spring Cloud Gateway

Spring Cloud Gateway

Spring Cloud Gateway 是 Spring Cloud生态系统中的网关,它是基于Spring 5.0、SpringBoot 2.0和Project Reactor等技术开发的,旨在为微服务架构提供一种简单有效的、统一的API路由管理方式,并为微服务架构提供安全、监控、指标和弹性等功能。其目标是替代Zuul

路由(Route)

是网关的基本构建块。由一个ID一个目标URI一组断言和一组过滤器定义。断言为真,则路由匹配

断言(predicate)

输入类型是一个ServerWebExchange。我们可以使用它来匹配来自HTTP请求的任何内容

过滤(filter)

可以在请求被路由前或者之后对请求进行修改。

搭建网关

在父项目中,创建网关模块,创建的是maven项目

pom.xml依赖配置


 

<?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>books</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>books-gateway</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--配置中心客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>
        <!--默认加载bootstrap-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <target>11</target>
                    <source>11</source>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

主启动类

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

bootstartp.yml

server:
  port: 4006
spring:
  application:
    name: books-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: false    #不开启服务注册和发现的功能
          lower-case-service-id: true #请求路径上的服务名称转换为小写
      #路由配置
      routes:
        #管理员访问接口路由
        - id: admin
          uri: lb://books-admin
          predicates:
            - Path=/sys/**
        #书籍访问接口路由
        - id: books
          uri: lb://books-books
          predicates:
            - Path=/books/**
        #读者访问接口路由
        - id: reader
          uri: lb://books-reader
          predicates:
            - Path=/reader/**
        #阅览室访问接口路由
        - id: readRoom
          uri: lb://books-readRoom
          predicates:
            - Path=/readRoom/**
        #书商访问接口路由
        - id: booksSeller
          uri: lb://books-booksSeller
          predicates:
            - Path=/booksSeller/**
        #规则制度访问接口路由
        - id: rules
          uri: lb://books-rules
          predicates:
            - Path=/rules/**
        #藏书馆访问接口路由
        - id: collectionLocation
          uri: lb://books-collectionLocation
          predicates:
            - Path=/collectionLocation/**



      globalcors:
        # 解决options请求被拦截问题
        add-to-simple-url-handler-mapping: true
        cors-configurations:
          # 拦截的请求
          '[/**]':
            # 允许跨域的请求
            #allowedOrigins: "*" # spring boot2.4以前的配置
            allowedOriginPatterns: "*" # spring boot2.4以后的配置
            # 允许请求中携带的头信息
            allowedHeaders: "*"
            # 运行跨域的请求方式
            allowedMethods: "*"
            # 是否允许携带cookie
            allowCredentials: true
            # 跨域检测的有效期,单位s
            maxAge: 36000

    config:
      uri: http://localhost:9010
      label: master
      #books-dev.yml
      name: books
      profile: dev

logging:
  pattern:
    console: '%d{MM/dd HH:mm:ss.SSS} %clr(%-5level) ---  [%-15thread] %cyan(%-50logger{50}):%msg%n'

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

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

相关文章

Vue2之webpack篇(二)Loader

目录 一、loader处理css 1、css文件的创建 2、安装css-loader 3、配置 4、打包 5、最终效果 二、loader处理图片 1、引入图片 2、安装file-loader 3、配置module 4、webpack打包 三、ES6转ES5 1、介绍 2、安装babel-loader 3、webpack.config.js配置 4、webpack打…

C++数据结构:二叉树

二叉树 每个结点最多只有二棵子树&#xff0c;也就是二叉树中没有度大于2的结点。二叉树的子树有左右之分&#xff0c;严格区分左孩子、右孩子&#xff0c;其次序不能颠倒 二叉树五种基本形态 特殊二叉树 斜树 所有节点都只有左子树的二叉树叫做左斜树&#xff0c;所有节点都…

SAP ABAP 创建后台定时任务job

定时任务的事务码 sm36:创建定时任务 sm37:查看定时任务 JDBG:后台任务debug,在对应的sm37中对应的job页面 t-code输入 创建定时任务SM36 1、名称可以随便起一般都是按自己公司业务情况来&#xff0c;比如我这个就是哪一个报表的定时任务&#xff0c;做的是什么操作&#xf…

Python 全栈系列220 Tornado的服务搭建

说明 想法变的真快 本来是没打算用Tornado的&#xff0c;主要是想节约时间。但是现在看来不用还是不行&#xff1a;目前用gevent flask部署的时候&#xff0c;启动多核的worker似乎存在问题。 另外&#xff0c;有很多内部基础的数据服务&#xff0c;其实并不需要flask的各种组…

如何使用镭速保护云存储数据安全

近年来&#xff0c;随着云计算的发展&#xff0c;远程系统上的数据存储变的越来越重要。云存储是一个以数据存储和管理为核心的云计算系统&#xff0c;给我们提供了一种全新的数据信息存储模式。但是&#xff0c;可以从全球任何地方访问和检索相同的数据。所需要的只是一个简单…

ZooKeeper分布式应用程序协调服务

目录 一.ZooKeeper基本介绍 1.ZooKeeper是什么&#xff1f; 2.ZooKeeper的工作机制 3.ZooKeeper的特点 4.ZooKeeper的数据结构 5.ZooKeeper的应用场景 5.1 统一命名服务 5.2 统一配置管理 5.3 统一集群管理 5.4 服务器动态上下线 5.5 软负载均衡 二.ZooKeeper的选举…

EasyConnect登陆报错:拉起虚拟网卡失败,请确保虚拟网卡已经安装在系统上并处于启用状态,然后再重新登录解决此问题。

目录 项目场景&#xff1a; 问题描述 原因分析&#xff1a; 解决方案&#xff1a; 1. 搜索设备管理器&#xff0c;打开/或者打开此电脑-&#xff08;顶部&#xff09;计算机-属性-设备管理器进入 2. 进入设备管理器&#xff0c;找到网络适配器&#xff0c;双击网络适配器…

【云原生】k8s Service 实现服务发现和负载均衡

文章目录 前言Service 介绍Service 的四种类型及使用方式Service 的定义和使用通过命令创建服务查看创建的服务情况 不指定 Selectors 的服务Headless 服务Service 工作原理及原理图Ingress 讲解集群外部如何访问服务总结 前言 在容器编排系统中&#xff0c;如 Kubernetes&…

Anaconda + TensorFlow Winodws环境安装(Windows Terminal / Visual Studio / VS code)

目录 前言个人环境 Anaconda安装下载安装测试添加到windows terminal TensorFlow环境配置安装测试 搭配Visual Studio 2022搭配VS Code 前言 以前发生的一些事情&#xff0c;让我认识到即便配环境这种事情&#xff0c;最好还是把自己的过程存个档 &#xff0c;这个的安装虽然简…

前端HTML、CSS--11(CSS-8)

目录&#xff1a; CSS3 属性选择器 CSS3 结构伪类选择器 CSS3 伪元素选择器 CSS3 2D转换 CSS3 动画 CSS3 3D转换 浏览器私有前缀 4. 2D转换 转换&#xff08;transform&#xff09;是CSS3中具有颠覆性的特性之一&#xff0c;可以实现元素的位移、旋转、缩放等效果。 转…

技术引领,创邻科技Galaxybase亮相2023数据技术嘉年华

2023年4月7日-8日&#xff0c;由中国DBA联盟&#xff08;ACDU&#xff09;和墨天轮社区联合主办的第十二届『数据技术嘉年华』&#xff08;DTC2023&#xff09;在北京举办。本次大会以“开放融合数智化——引领数据技术发展&#xff0c;释放数据要素价值”为主题&#xff0c;从…

线下活动 | 探索现代服务业的人效提升之路

3月25日&#xff0c;盖雅搞得定系列活动-卓越管理闭门分享会圆满落幕。此次活动主题定为「探索服务业的人效提升之路」&#xff0c;20余位现代服务业企业代表参与了此次活动&#xff0c;共同探讨如何利用数字化工具赋能企业管理&#xff0c;促进人效提升。招商积余人力负责人谢…

仿函数详解

目录 1、函数对象 2、谓词 2.1、一元谓词&#xff08;谓词有一个参数&#xff09; 2.1.1、普通函数提供策略 2.1.2、仿函数&#xff08;上面的函数调用&#xff09;提供策略 2.1.3、一元谓词全部代码 2.1、二元谓词&#xff08;谓词有两个参数&#xff09; ​编辑 3、内…

Ansys Zemax | 如何模拟 LED 及其它复杂光源

概述 在使用非序列时&#xff0c;对照明系统进行精确模拟的第一步总是要正确建立光源模型。OpticStudio 提供了多种精确模拟光源的方法。这篇文章介绍了如何在非序列模式下使用径向光源 (Source Radial), 光源文件 (Source File) 以及通过建立其他复杂几何体&#xff0c;来对le…

Oracle与Mysql求连续天数的数据

问题&#xff1a;最近有开发需求&#xff0c;查询最近一个月连续天数>2的数据项&#xff0c;我这里数据库日期存储的是yyyymmdd&#xff0c;字符串 (可自行根据自身情况修改) 思路&#xff1a;如果可以找到连续日期的开始与结束时间&#xff0c;那么就可以 where 日期 betw…

D. Shortest Cycle(floyd求最小环)

Problem - D - Codeforces 给你n个整数a1,a2,..., ana1,a2,...,an。考虑n个节点的图&#xff0c;其中节点ii, jj (i≠ji≠j)是相连的&#xff0c;当且仅当&#xff0c;aiaiAND aj≠0aj≠0&#xff0c;其中AND表示位数和操作。 请找出该图中最短周期的长度&#xff0c;或确定它…

数据库锁表原因、排查、解决

数据库锁表原因、排查、解决 一.场景场景1场景2 二.原因三.排查四.解决方案 一.场景 场景1 锁表通常发生在DML&#xff08; insert 、update 、delete &#xff09; A操作进行全量数据同步&#xff0c;对整个表的粒度进行上锁&#xff0c;导致B操作只能等待A操作完成才能进入…

Vue中mixins(混入)的介绍和使用

什么是Mixin&#xff1f; 想要使用一个事物或者工具&#xff0c;我们首要先了解它是什么&#xff0c;这样我们才好对症下药。 其实Mixin不是Vue专属的&#xff0c;可以说它是一种思想&#xff0c;也可以说它就是混入的意思&#xff0c;在很多开发框架中都实现了Mixin(混入)&a…

我的第一本书终于要印刷了!

终于要印刷了 编辑发来了一个好消息&#xff0c;我的书最快下周就可以印刷出版了。 从开始动笔到提交第一稿&#xff0c;前后有1年的时间&#xff0c; 紧接着和出版社胡老师一起修改&#xff0c; 从一审、二审、三审&#xff0c; 到一校、二校、三校&#xff0c; 确认书…

MobileNetV3详细原理(含torch源码)

作者&#xff1a;爱笑的男孩。 个人简介&#xff1a;打工人。 持续分享&#xff1a;机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。 如发现文章有误&#xff0c;麻烦请指出&#xff0c;我会及时去纠正。有其他需要可以私信我或者发我邮箱…