网关路由

目录

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,然后打开前端页面,发现相关功能都可以正常访问了: 

 

 

 

 

网关路由是网络通信中的两个核心概念,它们在网络数据传输中扮演着不同的角色,但又密切相关。以下将分别介绍其工作原理及配置方法。 ### 网关的工作原理 网关是连接两个不同网络的设备,它能够理解并转换不同网络之间的协议和数据格式。在局域网中,网关通常指的是路由器的本地接口地址,它是本地网络访问外部网络的出口[^1]。当一台设备想要发送数据到另一个网络中的设备时,它会将数据包发送给网关,然后由网关负责将数据包转发到目标网络。 ### 路由的工作原理 路由器是一种专门用于决定数据包从源到目的地最佳路径的设备。它通过维护一张路由表来做出决策,这张表包含了到达特定网络所需经过的下一跳地址或者直接连接的信息。每当路由器接收到一个数据包时,它会检查数据包的目标IP地址,并参考路由表来确定如何转发这个数据包[^2]。 ### 静态路由配置 静态路由是由网络管理员手动配置的固定路由条目。对于小型网络或具有简单需求的网络来说,静态路由是一个不错的选择。以Cisco设备为例,可以使用如下命令添加一条静态路由: ```shell ip route <destination_network> <subnet_mask> <next_hop> ``` 例如,要指定前往192.168.2.0/24网络的数据包应该被发送到192.168.1.1这个下一跳地址,命令应该是: ```shell ip route 192.168.2.0 255.255.255.0 192.168.1.1 ``` 对于华为设备,静态路由的配置方式略有不同,但基本思路一致,可以通过以下命令进行配置: ```shell ip route-static <destination_network> <mask> <next_hop> ``` ### 默认路由配置 默认路由是一种特殊的静态路由,它用于指示路由器将所有未明确指定路径的数据包都发送到某个特定的下一跳地址。这通常用在网络只有一个出口的情况下。配置默认路由的方式与静态路由类似,只是目标网络和子网掩码分别为0.0.0.0和0.0.0.0。 ### Spring Cloud Gateway 示例配置 在微服务架构中,API网关如Spring Cloud Gateway负责处理请求的路由分发。下面是一个简单的Spring Boot应用配置文件示例,展示了如何设置Spring Cloud Gateway来实现服务发现和路由分发: ```yaml server: port: 8090 spring: application: name: service-gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848 gateway: discovery: locator: enabled: true lower-case-service-id: true logging: level: org.springframework.cloud.gateway: trace org.springframework.http.server.reactive: debug org.springframework.web.reactive: debug reactor.ipc.netty: debug ``` 此配置启用了Nacos作为服务注册中心,并开启了服务发现功能,允许网关自动获取服务列表并根据服务名称进行路由[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值