本文来详细说下gateway如何集成注册中心nacos。
概述
通过前文咱们了解到Spring Cloud Gateway的核心是路由配置,然后在本地application.yml中配置了一条路由,但这种修改本地配置文件的方式缺乏灵活性,未必能满足灵活多变的业务需求,因此,本篇的目的就是找出本地配置之外的其他配置方式来,满足各种实际需求
gateway集成nacos实战
动态获取URI
搭建了一个order-service服务,存在两个实例
yaml文件配置
server:
port: 8888
spring:
application:
name: api-gateway
cloud: #nacos注册中心地址的配置
nacos:
discovery:
server-addr: localhost:8848 # nacos 注册中心的地址
gateway:
#路由规则
routes:
#路由ID,唯一
- id: server-order
#服务名路由,lb为负载均衡的缩写
uri: lb://order-service
predicates:
#匹配对应URL的请求,将匹配到的请求追加在目标URI之后
- Path=/order/**
测试结果
服务名称转发
搭建了一个order-service服务,存在两个实例。搭建了一个product-service服务,存在两个实例。
服务测试结果
yaml文件配置
server:
port: 8888
spring:
application:
name: api-gateway
cloud: #nacos注册中心地址的配置
nacos:
discovery:
server-addr: localhost:8848 # nacos 注册中心的地址
gateway:
#路由规则
routes:
#路由ID,唯一
- id: server-order
#服务名路由,lb为负载均衡的缩写
uri: lb://order-service
predicates:
#匹配对应URL的请求,将匹配到的请求追加在目标URI之后
- Path=/order/**
#路由ID,唯一
- id: server-product
#服务名路由,lb为负载均衡的缩写
uri: lb://product-service
predicates:
#匹配对应URL的请求,将匹配到的请求追加在目标URI之后
- Path=/product/**
现在配置了两个服务,需要配置两个服务的路由信息,要是服务有很多,这样配置似乎不太方便,gateway提供了更加简单的配置。简化版的yaml文件为下
server:
port: 8888
spring:
application:
name: api-gateway
cloud: #nacos注册中心地址的配置
nacos:
discovery:
server-addr: localhost:8848 # nacos 注册中心的地址
#使用springboot约定大于配置的特性
gateway:
discovery:
# 是否与注册中心结合,通过service-id转发到具体的服务实例
locator:
enabled: true # 让gateway可以发现nacos中的微服务
low-case-service-id: true #是否将服务名称转为小写
测试
这时候,就发现只要按照网关地址/微服务/接口的格式去访问,就可以得到成功响应。
本文小结
本文主要介绍了gateway如何集成注册中心nacos来使用,介绍了动态获取URI和服务名称转发。