当前位置: 首页 > news >正文

3.springcloudalibaba gateway项目搭建

文章目录

  • 前言
  • 一、搭建gateway项目
    • 1.1 pom配置
    • 1.2 新增配置如下
  • 二、新增server服务
    • 2.1 pom配置
    • 2.2新增测试接口如下
  • 三、测试验证
    • 3.1 分别启动两个服务,查看nacos是否注册成功
    • 3.2 测试
  • 总结


前言

前面已经完成了springcloudalibaba项目搭建,接下来搭建gateway项目,这里启动两个服务,一个是gateway服务,一个是server服务,请求从gateway到server服务。


一、搭建gateway项目

1.1 pom配置

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

这里的lb需要加上,否则使用 lb://方式寻找服务,启动后请求报错如下

Service Unavailable 503

完整的pom如下

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.springcloudalibaba</groupId><artifactId>gateway</artifactId><version>0.0.1-SNAPSHOT</version><name>gateway</name><description>Demo project for Spring Boot</description><properties><java.version>8</java.version><spring-boot.version>2.6.13</spring-boot.version><spring-cloud.version>2021.0.5</spring-cloud.version><spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version></properties><dependencies><!-- SpringCloud Gateway --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency><!-- SpringCloud Alibaba Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringCloud Alibaba Nacos Config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency></dependencies><dependencyManagement><dependencies><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.0</version><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

1.2 新增配置如下

spring:cloud:gateway:discovery:locator:#开启服务发现功能,从注册中心获取服务列表,(nacos->服务管理->服务列表)#默认服务名称需要为大写,可以通过配置lower-case-service-id: true 改变这一规则enabled: trueroutes:- id: server #payment_route    #路由的ID,没有固定规则但要求唯一,建议配合服务名uri: lb://server         #匹配后提供服务的路由地址predicates:- Path=/server/**- Method=GET,POST
  • -Path=/server/**: 匹配 /server/路径下的到server服务

二、新增server服务

2.1 pom配置

这要增加web模块和增加@EnableDiscoveryClient到启动类即可
server端pom配置如下

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.springcloudalibaba</groupId><artifactId>server</artifactId><version>0.0.1-SNAPSHOT</version><name>server</name><description>Demo project for Spring Boot</description><properties><java.version>8</java.version><spring-boot.version>2.6.13</spring-boot.version><spring-cloud.version>2021.0.5</spring-cloud.version><spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringCloud Alibaba Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringCloud Alibaba Nacos Config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency></dependencies><dependencyManagement><dependencies><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.0</version><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

2.2新增测试接口如下

package com.springcloudalibaba.gateway.control;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;@RestController
public class Control {@RequestMapping(value = "/hello")public String index() {System.out.println("testname: ");return "testName";}}

三、测试验证

3.1 分别启动两个服务,查看nacos是否注册成功

在这里插入图片描述
查看日志,和查看nacos上的服务,可以知道已经注册成功了。

3.2 测试

这里新增了一个hello的接口,请求地址如下
http://localhost:8080/server/hello
在这里插入图片描述

这个请求会先到gateway服务然后再去请求server服务,http://localhost:8080/server/hello–>
http://localhost:8081/hello,可以看到返回结果和server中的代码返回一致,测试成功。

总结

1.alibaba lb的包和gateway的一起使用,否则使用lb方式查找服务会有问题,导致请求失败。
2.- Path=/server/** 表示路径带server的路由到你指定的服务中去,真正请求的时候会去掉server这一截。

http://www.lryc.cn/news/190181.html

相关文章:

  • Debezium日常分享系列之:Debezium 2.3.0.Final发布
  • js为什么是单线程?
  • centos安装redis教程
  • 把短信验证码储存在Redis
  • 【已编译资料】基于正点原子alpha开发板的第三篇系统移植
  • 地下城堡3魂之诗食谱,地下城堡3菜谱37种
  • HDMI 基于 4 层 PCB 的布线指南
  • 理解Go中的布尔逻辑
  • rv1126-rknpu-v1.7.3添加opencv库
  • 【Redis】Redis持久化深度解析
  • c/c++--字节对齐(byte alignment)
  • 算法进阶——字符串的排列
  • js中 slice 用法用法全解析
  • Typora安装教程
  • Pytorch中张量的维度扩张与广播操作示例
  • 身份证号码,格式校验:@IdCard(自定义注解)
  • 【Java】instanceof 关键字
  • Android 13.0 recovery出厂时正在清理字体大小的修改
  • 京东商品数据:8月京东环境电器行业数据分析
  • elasticsearch(ES)分布式搜索引擎04——(数据聚合,自动补全,数据同步,ES集群)
  • webdriver.Chrome()没反应
  • java html转word、pdf(包含图片)
  • 不容易解的题10.10
  • 淘宝天猫店铺所有商品数据接口,淘宝API接口
  • Prometheus和grafana安装配置手册
  • 从零开始探索C语言(十一)----共用体和位域
  • 【数据结构】算法的时间复杂度
  • Qt作业五
  • 【面试】pc寄存器题
  • ARM按键中断实验