1.从简单demo 搭建开始
cloud_gateWay 网关
配置文件: bootstrap.yml问题一: bootstrap.yml和 application.yml 文件区别。问题二:lb://xx 客户端负载均衡。 cloud_order
配置文件: bootstrap.yml思考
1.从简单demo 搭建开始使用 springcloud + nacos(注册配置中心) + gateway(网关)
cloud_gateWay 网关pom如下
配置文件: bootstrap.ymlorg.caolinfeng.demo cloud_parent_impor 0.0.1-SNAPSHOT 4.0.0 cloud_gateway 0.0.1-SNAPSHOT cloud_gateway Demo project for Spring Boot org.springframework.cloud spring-cloud-starter-gateway org.springframework.boot spring-boot-starter-test test com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery ${nacos.version} org.springframework.cloud spring-cloud-starter-bootstrap com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ${nacos.version} org.springframework.cloud spring-cloud-loadbalancer ${loadbalancer.version} org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
server:
port: 1888
logging:
level:
org.springframework.cloud.gateway: TRACE
org.springframework.http.server.reactive: DEBUG
org.springframework.web.reactive: DEBUG
reactor.ipc.netty: DEBUG
spring:
application:
name: cloud-gateway
cloud:
nacos:
discovery:
server-addr: 192.168.0.104:8848
namespace: 9b06e3f1-1772-45b9-9db9-3c912339c6ec
group: demo
config:
server-addr: 192.168.0.104:8848
namespace: 9b06e3f1-1772-45b9-9db9-3c912339c6ec
group: demo
prefix: ${spring.application.name}
file-extension: yaml # 配置文件类型
refresh-enabled: true # 是否开启自动刷新
gateway:
discovery:
locator:
enabled: true
# routes:
# - id: order-servcer
# uri: lb://order-servcer
# #uri: http://192.168.0.104:89 # 服务端 service_id
# predicates:
# - Path=/order/**
# filters: # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
# - StripPrefix=1 # 转发之前去掉1层路径
问题一: bootstrap.yml和 application.yml 文件区别。
配置文件 bootstrap.yml。当时用 application.yml 时 如果不使用nacos 作为配置中心,启动成功,如果使用nacos 作为配置中心 启动失败,改用 bootstrap.yml 时才能顺利加载配置
网关 使用gateway 路由到其他服务时 两种方式
1.指定路由
例如 http://192.168.0.104:89
2.加载配置做负载均衡
例如 lb://order-servcer
在gateWay 也必须引入如下依赖 才会调用到 lb://order-servcer成功否则503
cloud_orderorg.springframework.cloud spring-cloud-loadbalancer${loadbalancer.version}
pom如下
配置文件: bootstrap.ymlorg.caolinfeng.demo cloud_parent_impor 0.0.1-SNAPSHOT 4.0.0 cloud_order 0.0.1-SNAPSHOT jar spring-boot-order Demo project for Spring Boot org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ${nacos.version} com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery ${nacos.version} org.springframework.cloud spring-cloud-starter-bootstrap org.springframework.cloud spring-cloud-starter-openfeign ${openfeing.version} org.springframework.cloud spring-cloud-loadbalancer ${loadbalancer.version} org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
nacos:
addr: 192.168.0.104:8848
namespace: 9b06e3f1-1772-45b9-9db9-3c912339c6ec
group: demo
spring:
application:
name: order-servcer
cloud:
nacos:
discovery:
server-addr: 192.168.0.104:8848
namespace: 9b06e3f1-1772-45b9-9db9-3c912339c6ec
group: demo
config:
server-addr: 192.168.0.104:8848
namespace: 9b06e3f1-1772-45b9-9db9-3c912339c6ec
prefix: ${spring.application.name}
group: demo
file-extension: yaml # 配置文件类型
refresh-enabled: true # 是否开启自动刷新
server:
port: 1890
测试接口
@RestController
@RequestMapping("/order")
public class OrderController {
@Value("${usernamex}")
private String usernamex;
@GetMapping("/get/{id}")
public String getOrderId(@PathVariable("id") Long id) {
return String.format(usernamex + "%s%s", " ——", id.toString());
}
}
项目图如下
gateway 首重路由转发,类似nginx 反向代理,对外暴露统一入口,根据路由规则转发到不同服务。



