⽹关是如何知道微服务的地址?⽹关如何进⾏负载均衡呢?
⽹关需要将⾃⼰的信息注册到注册中⼼Nacos上并且拉取其他微服务的信息,然后再调⽤的时候基于Ribbon实现负载均衡 。
shop-parent cn.wolfcode 1.0.0 4.0.0 api-gateway org.springframework.cloud spring-cloud-starter-gateway com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.projectlombok lombok com.alibaba.csp sentinel-spring-cloud-gateway-adapter
2. 编写启动类 @SpringBootApplication
@EnableDiscoveryClient
public class ApiGatewayServer {public static void main(String[] args) {SpringApplication.run(ApiGatewayServer.class,args);}
}
3. 编写配置⽂件 server:port: 9000
spring:application:name: api-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:discovery:locator:enabled: true # 让gateway可以发现nacos中的微服务
4. 启动测试http://localhost:9000/product-service/product/1 server:port: 9000
spring:application:name: api-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:discovery:locator:enabled: true # 让gateway可以发现nacos中的微服务routes:- id: product_routeuri: lb://product-service # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略predicates:- Path=/product-serv/**filters:- StripPrefix=1- id: order_routeuri: lb://order-service # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略predicates:- Path=/order-serv/**filters:- StripPrefix=1- Time=true
2. 启动测试http://localhost:9000/product-serv/product/1
我们将符合Path
规则的一切请求,都代理到 uri
参数指定的地址。
本例中,我们将 /product-serv/**
开头的请求,代理到lb://product-service
,lb是负载均衡,根据服务名拉取服务列表,实现负载均衡。
整个访问的流程如下:
总结:
网关搭建步骤:
创建项目,引入nacos服务发现和gateway依赖
配置application.yml,包括服务基本信息、nacos地址、路由
下一篇:高级语言及其文法(一)