Springcloud项目简单搭建三(路由管理)

springcloud中的路由搭建

首先要知道我们为什么要为整个工程搭建一个路由的服务.
springcloud的用意是将工程服务化,将一个大项目拆分成多个小服务,这样服务之间的运行互不影响.同时可以实现同一个服务的负载均衡的能力.同时可以通过路由来进行权限的控制,或者进行统一的请求处理等事情.
在上一篇springcloud文章中,提供了pay-server-one服务,还有可访问的地址http://localhost:9091/pay/test

下面我们实现通过路由的方式进行访问这个服务
首先创建一个springboot的项目,在pom中添加jar包

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

此项目中无需添加spring-boot-starter-web的jar包
然后到配置文件中添加如下配置

server:
  port: 8001

spring:
  cloud:
    gateway:
      routes:
        - id: pay-server
          uri: lb://pay-server-one
          predicates:
            - Path=/pay/**
  application:
    name: gateway-server

配置中因为routes是一个list,所以在id前面有个-符号.

  • id是为这个路由起一个标识
  • uri可以使用http://的方式直接些服务的url,如pay-server-one的服务我们可以写http://localhost:9091/但是这样些会影响以后进行负载均衡,所以一般不要写死.我们写成在eureka中注册的服务名也就是pay-server-one服务,地址要以lb开头:lb://pay-server-one
  • perdicates配置请求路由映射的地址,同样值是list所以path前面有个-符号,
    此内容有多种方式,比如某个时间之前的请求,某个时间之后的请求等,如下
    在这里插入图片描述
    在这里插入图片描述
    细节可以查看springcloud gateway的apihttps://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.0.M1/#gateway-request-predicates-factories

我们这里直接使用path的方式直接映射url地址.
当我们访问路由的路径是http://localhost:8001/pay/test的时候,机会映射到serverone服务中的http://localhost:9091/pay/test地址.返回如下地址
在这里插入图片描述

  • 可以继续添加filters使path的内容不包含在访问的路径中
  routes:
        - id: pay-server
          uri: lb://PAY-SERVER
          predicates:
             - Path=/pay-server/**
          filters:
            - StripPrefix=1 #设置访问路径不带设置的path

这样使用的话访问路径变成http://localhost:9091/pay-server/pay/test

这样写起来麻烦我么还可以通过访问服务名称的方式来直接实现访问服务,将上面访问路由的配置去掉,改成如下方式

spring:
  cloud:
    gateway:
#通过访问直接访问服务名的方式访问服务 如localhost:8001/pay-server/pay/test
      discovery:
        locator:
          enabled: true #通过注册中心获取服务列表,使用服务名来访问服务
          lowerCaseServiceId: true #将访问服务名转换成小写
  application:
    name: gateway-server

这样我们访问上面的地址为http://localhost:8001/pay-server/pay/test 这让配置更简单些.

负载均衡

现在我使用两个pay-server-one服务 都注册到服务中心,将两个服务那么都改成pay-server如图,
在这里插入图片描述
在这里插入图片描述
分别将两个服务中的/pay/test地址返回结果改成不同的
在这里插入图片描述
在这里插入图片描述

将两个服务启动后 我们会在eureka中看到,在pay-server后面有两个地址,说明两个pay-server注册成功,现在我们访问路由http://localhost:8001/pay/test
在这里插入图片描述
则会从其中的某一服务来进行处理请求.有时候会返回test:value1 有时会返回test:value2
在这里插入图片描述
在这里插入图片描述
路由会在两者中自动选择一个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值