首页 > 其他分享 >网关路由

网关路由

时间:2024-09-18 22:52:09浏览次数:3  
标签:网关 lb 1.2 路由 gateway cloud

目录

1.1.认识网关

1.2.快速入门

1.2.1.创建项目

1.2.2.引入依赖

1.2.3.启动类

1.2.4.配置路由


1.1.认识网关

什么是网关?

顾明思议,网关就是络的口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由和转发以及数据安全的校验

更通俗的来讲,网关就像是以前园区传达室的大爷。

  • 外面的人要想进入园区,必须经过大爷的认可,如果你是不怀好意的人,肯定被直接拦截。

  • 外面的人要传话或送信,要找大爷。大爷帮你带给目标人。

    现在,微服务网关就起到同样的作用。前端请求不能直接访问微服务,而是要请求网关:

  • 网关可以做安全控制,也就是登录身份校验,校验通过才放行

  • 通过认证后,网关再根据请求判断应该访问哪个微服务,将请求转发过去

1.2.1.创建项目

首先,我们要在hmall下创建一个新的module,命名为hm-gateway,作为网关微服务:

  • SpringCloudGateway:基于Spring的WebFlux技术,完全支持响应式编程,吞吐能力更强

    1.2.快速入门

    接下来,我们先看下如何利用网关实现请求路由。由于网关本身也是一个独立的微服务,因此也需要创建一个模块开发功能。大概步骤如下:

  • 创建网关微服务

  • 引入SpringCloudGateway、NacosDiscovery依赖

  • 编写启动类

  • 配置网关路由

1.2.2.引入依赖

hm-gateway模块的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>hmall</artifactId>
        <groupId>com.heima</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>hm-gateway</artifactId>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <!--common-->
        <dependency>
            <groupId>com.heima</groupId>
            <artifactId>hm-common</artifactId>
            <version>1.0.0</version>
        </dependency>
        <!--网关-->
        <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>
        <!--负载均衡-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

1.2.3.启动类

hm-gateway模块的com.hmall.gateway包下新建一个启动类:

package com.hmall.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

1.2.4.配置路由

接下来,在hm-gateway模块的resources目录新建一个application.yaml文件,内容如下:

server:
  port: 8080
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: 192.168.150.101:8848
    gateway:
      routes:
        - id: item # 路由规则id,自定义,唯一
          uri: lb://item-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表
          predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务
            - Path=/items/**,/search/** # 这里是以请求路径作为判断规则
        - id: cart
          uri: lb://cart-service
          predicates:
            - Path=/carts/**
        - id: user
          uri: lb://user-service
          predicates:
            - Path=/users/**,/addresses/**
        - id: trade
          uri: lb://trade-service
          predicates:
            - Path=/orders/**
        - id: pay
          uri: lb://pay-service
          predicates:
            - Path=/pay-orders/**

此时,启动UserApplication、CartApplication,然后打开前端页面,发现相关功能都可以正常访问了: 

 

 

 

 

标签:网关,lb,1.2,路由,gateway,cloud
From: https://blog.csdn.net/Very_a/article/details/142345903

相关文章

  • vue一级、二级路由设计
    一、一级路由设计一级路由是指直接映射到应用程序中顶级页面或组件的路由。这些路由通常定义在VueRouter的配置中,作为应用程序导航结构的基础。直接映射:一级路由直接映射到URL路径和Vue组件,没有嵌套关系。顶级导航:它们通常用于应用程序的顶级导航,如首页、关于页面、用户中心......
  • 到底什么是黑洞路由?底层原理是什么?
    什么是黑洞路由?黑洞路由(BlackholeRouting)是一种网络管理技术,用于处理不希望到达目的地的网络流量。当网络设备(如路由器或交换机)接收到指向黑洞路由的流量时,这些流量会被丢弃,不会被转发到任何实际的目的地。黑洞路由通常用于应对网络攻击(如DDoS攻击)或其他不希望的流量。黑......
  • Vue.js入门系列(三十):深入理解独享路由守卫、组件内路由守卫、History模式与Hash模式
    个人名片......
  • Vue路由配置、网络请求访问框架项目、element组件介绍学习
    系列文章目录第一章基础知识、数据类型学习第二章万年历项目第三章代码逻辑训练习题第四章方法、数组学习第五章图书管理系统项目第六章面向对象编程:封装、继承、多态学习第七章封装继承多态习题第八章常用类、包装类、异常处理机制学习第九章集合学习第......
  • Nuxt Kit 中的页面和路由管理
    title:NuxtKit中的页面和路由管理date:2024/9/17updated:2024/9/17author:cmdragonexcerpt:摘要:本文介绍了NuxtKit中页面和路由管理的高级功能,包括extendPages自定义页面路由、extendRouteRules定义复杂路由逻辑及addRouteMiddleware注册路由中间件。通过这些功能,......
  • 电商导购系统的API网关设计与实现
    电商导购系统的API网关设计与实现大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在电商导购系统中,API网关作为前端和后端服务之间的入口,起到了关键的作用。API网关不仅提供统一的入口,还负责请求路由、负载均衡、认证与授权、日志监控等功能。本......
  • vue3路由基本使用
    在Vue3中,路由指的是应用程序的导航系统,允许你在不同的视图或页面之间进行切换。通过vue-router插件,你可以定义路由规则,将URL路径映射到Vue组件,实现页面间的跳转和状态管理。使用路由,用户可以在应用中导航不同的视图,同时保持浏览器的历史记录。一路由的基本使用1......
  • win11 nimi主机安装软路由
    硬件带两个LAN口的mini主机软件win11家庭版  openwrt  一安装hyper-v虚拟机由于是win11家庭版,启用或关闭Windows功能里没有hyper-vwin11家庭版启用Hyper-V的方法创建脚本pushd"%~dp0"dir/b%SystemRoot%\servicing\Packages\*Hyper-V*.mum>hyper-v.txtfor......
  • Vue路由
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>&l......
  • flask 路由请求扩展
    一、钩子函数 1、@app.before_request和 @app.after_requestfromflaskimportFlaskapp=Flask(__name__)@app.before_requestdefbefore1():print('before1')@app.before_requestdefbefore2():print('before2')return'第二个......