在Spring Cloud Alibaba中Nacos与GateWay的整合步骤

下文摘自孙卫琴的经典书籍《Spring Cloud Alibaba微服务开发零基础入门到实操》,介绍了在Spring Cloud Alibaba中Nacos与GateWay的整合步骤。
在这里插入图片描述

在以下网关模块的配置代码中,uri属性指定路由的转发地址:

server:
  port: 80
spring:
  cloud:
    gateway:
      routes:
       - id: provider-route
         **uri: http://localhost:8081**
         order: 1     #路由优先级,数值越小,优先级越高,默认为0
         predicates:
          - Path=/greet/**     #路径匹配的条件,**为通配符
       - id: consumer-route
         **uri: http://localhost:8082**
         order: 1     #路由优先级,数值越小,优先级越高,默认为0
         predicates:
           - Path=/enter/**     #路径匹配的条件

以上代码设置了两个路由:provider-route和consumer-route。每个路由的URI是固定的,例如id为provider-route的路由的URI为:

uri: http://localhost:8081

如果微服务的实例改变了监听端口,或者一个微服务有多个实例,那么以上设置方式就很不灵活。为了更灵活地设置路由,可以把GateWay与Nacos整合。在GateWay的路由配置中,只需把URI设置为微服务的名字,与微服务名字对应的具体地址则由Nacos提供。
对于hello-gateway模块,GateWay与Nacos整合的步骤如下。
(1)在pom.xml文件中加入Nacos以及LoadBalancer的依赖:

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>
    spring-cloud-starter-alibaba-nacos-discovery
  </artifactId>
</dependency>

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

(2)在application.yaml文件中配置GateWay和Nacos:

server:
  port: 80
spring:
  application:
    name: hello-gateway-service
  cloud:
    loadbalancer:
      enabled: true  #启用LoadBalancer
    gateway:
      discovery:
        locator: 
          enabled: true
      routes:
       - id: provider-route
         **uri: lb://hello-provider-service**
         order: 1  
         predicates:
          - Path=/greet/**  
       - id: consumer-route
         **uri: lb://hello-consumer-service**
         order: 1  
         predicates:
           - Path=/enter/** 
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

对于id为provider-route的路由,它的URI是hello-provider-service微服务的名字:

uri: lb://hello-provider-service

当spring.cloud.gateway.discovery.locator.enabled属性为true,GateWay就会从Nacos服务器中订阅微服务列表,获得hello-provider-service微服务的实际地址。

把spring.cloud.loadbalancer.enabled属性设为true,GateWay就会利用LoadBalancer负载均衡器来实现负载均衡。在图1中,hello-provider-service微服务有两个实例,因此对应两个地址,LoadBalancer会依据负载均衡策略选择其中的一个地址。spring.cloud.loadbalancer.enabled属性的默认值就是true,因此该属性也可以不显式设置。

在这里插入图片描述
图1 GateWay利用LoadBalancer实现负载均衡
(3)启动Nacos服务器、hello-provider模块、hello-consumer模块和hello-gateway模块,通过浏览器访问以下URL:
http://localhost/greet/Tom
http://localhost/enter/Tom

访问以上URL的两个HTTP请求首先被GateWay接收,再根据路由配置中路径的匹配规则,把请求分别转发给hello-provider-service微服务和hello-consumer-service微服务。


想要循序渐进学习Spring Cloud微服务开发,强烈推荐看孙卫琴老师的经典著作《Spring Cloud Alibaba微服务开发零基础入门到实操》,还附赠121集配套视频课程,免费观看网址参见http://www.javathinker.net/alibaba

本书深入浅出地讲解了利用Spring Cloud Alibaba框架开发分布式微服务系统的技术,详细阐述了各种组件的用法,包括:注册和配置中心Nacos、负载均衡器LoadBalancer、远程调用组件OpenFeign、远程调用框架Dubbo、流量控制组件Sentinel、网关Gateway、链路追踪组件SkyWalking、消息中间件Stream和 RocketMQ、分布式事务管理框架Seata、分库分表中间件ShardingSphere、分布式缓存数据库Redis、分布式任务调度框架XXL-JOB。

本书以一位学习微服务开发的新手阿云向答主(本书作者)请教微服务开发技术为线索,激发读者主动探索知识的学习兴趣,把本来看似深奥复杂的分布式微服务系统如庖丁解牛般剖析得淋漓尽致,浅显易懂。本书不仅详细介绍各种技术的使用步骤,而且运用了许多生动形象的生活化的比喻,帮助读者理解这些技术的运作原理。

本书的范例很具有实用性,整合了Spring Boot、Spring Cloud Alibaba、Hibernate、Mybatis、DruidDataSource、HikariDataSource、lombox软件包、SLF4J等流行的框架或工具软件。

本书主要面向所有具有Java编程基础的开发人员和在校学生。对于不熟悉Java编程的读者,阅读本书,也能领略Spring Cloud Alibaba框架的基本用法和微服务开发的核心思想。本书还可作为高校和企业的微服务开发教材。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术集锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值