Gateway 从 nacos 中获取服务信息|学习笔记

简介: 快速学习 Gateway 从 nacos 中获取服务信息

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第三阶段Gateway 从 nacos 中获取服务信息】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/685/detail/11888


Gateway 从 nacos 中获取服务信息

内容介绍

一、引言

二、具体步骤


一、引言

在入门案例中,通过客户端向 api 网关发送一个请求,通过 api 网关将请求转发到商品微服务并获取信息的效果,但是,我们也留下了疑问,微服务中具体的地址是写死的,但如果地址端网号变了,那是否要更改具体地址的配置呢?

要更改的话会很不方便,另外一个问题就是目前只有一个 product,我们之前做的product2,在这种情况下我们希望它可以负载均衡,当这种配置也是实现不了负载均衡。

下面入门案例做一点增强。实现地址不再写死,而是从 NACOS 中获取,要实现这种方式,那我们就要将网关作为一种微服务,注册到 NACOS 上,然后向订单微服务一样,做服务发现从这里面拉起的所有微服务的地址和端口号,然后就可以进行转发。

步骤如下,

第一,在网关中加入 NACOS 依赖,

第二,在主类上添加注解,

第三,修改配置文件,修改部分分为三部分,首先是 NACOS 相关的,要把我们的服务注册到 NACOS 上,所以要写一下 NACOS 的地址。

第二部分是开启 API 网关对 gateway 的支持,相当于能让网关从 NACOS 中拉取服务,最后我们要配置,直接写 NACOS 的服务名称,前边的 lb 指的就是负载均衡的意思,那是内部是预置了这样的一种东西,只要这样一写就自带负载均衡,是比较方便的,最后一步测试。


二、具体步骤

1、加入 NACOS 的依赖

<?xm1 version="1.0"encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/xMLSchema-instance"

xsi:schemaLocation-"http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/mave

<parent>

<artifactId>springcloud-alibaba</

artifactid><groupId>com.itheima</groupid><version>1.0-SNAPSHOT</version></parent>

<modelVersion>4.0.0</modelVersion>

<artifactid>api-gateway</artifactid>

<dependencies>

<!--gateway注意此模块不能引入

starter-web--><dependency>

<groupId>org.springframework.cloud</groupid>

<artifactid>spring-cloud-starter-gateway</artifactid></

dependency>

<!--nacos 服务发现-->

<dependency>

<groupId>com.alibaba.cloud</groupid>

<artifactid>spring-cloud-starter-alibaba-nacos-discovery</artifactid></dependency>

</dependencies>

</project>

2、找到我们的组类添加注解

package com.itheima;

import org.springframework.boot.SpringApplication;

import

org.springframework.boot.autoconfigure.SpringBootApplication;import

org.springframework.cloud.client.discovery.EnableDiscoveryclient;

@SpringBootApplication

@EnableDiscoveryClient

public class ApiGatewayApplication{

public static void main(string[] args) {

springApplication.run(ApiGatewayApplication.class);

3、修改配置文件

首先,打通和 NACOS 的连接,地址是 localhost:8848,是注册中心的地址,将gateway 注册到 NACOS。第二,要开启从 NACOS 中获取服务,直接拷贝。

最后修改配置,lb 代表负载均衡,直接写 NACOS 的服务地址。

完整内容如下:

server:

port:7000 spring:

application:

name:api-gateway cloud:

nacos:

discovery:

server-addr: localhost:8848 #将 gateway

注册到 nacos gateway:

di scovery:

locator:

enabled:true#让 gateway从nacos 中获取服务信息

routes:#路由数组[路由 就是指当请求满足什么样的条件的时候转发到哪个微服务上]

- id: product route #当前路由发的标识,要求唯一默认是 UUID

uri:http://localhost:8081#请求最终要被转发到的地址

uri:1b://service-product # lb 指的是负载均衡,后面跟的是具体微服务在nacos 中的标识

order:1#路由的优先级,数字越小代表路由的优先级越高

predicates:#断言(条件判断,返回值是 boolean 转发请求要满足的条件)

- Path=/product-serv/**#当请求路径满足 Path 指定的规则时,此路由信息才会正常转发 filters:#过滤器(在请求传递过程中对请求做一些手脚)

-stripPrefix=1#在请求转发之前去掉一层路径

重新启动 gateway 进行访问测试,使用 product2,发现结果没有问题,这样,我们就解决了上节课遗留的问题,现在我们的网关就和 NACOS 打通了,可以从中拉取服务列表。

除我们使用的增强版之外,还有一个简写版,不需要配置路由,以下部分可以注掉,

routes:#路由数组[路由 就是指当请求满足什么样的条件的时候转发到哪个微服务上]

- id: product route #当前路由发的标识,要求唯一默认是 UUID

uri:http://localhost:8081#请求最终要被转发到的地址

uri:1b://service-product # lb 指的是负载均衡,后面跟的是具体微服务在nacos 中的标识

order:1#路由的优先级,数字越小代表路由的优先级越高

predicates:#断言(条件判断,返回值是 boolean 转发请求要满足的条件)

- Path=/product-serv/**#当请求路径满足 Path 指定的规则时,此路由信息才会正常转发 filters:#过滤器(在请求传递过程中对请求做一些手脚)

-stripPrefix=1#在请求转发之前去掉一层路径

这因为它有默认路由,重启刷新我们看一下效果,发现结果是错的,此时将地址改为 service-product,此时发现结果可用,这表示它默认的做了一个路由,只是将地址与之前的进行了调换,这种方法很少应用。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
4月前
|
API
使用Gateway with Inference Extension路由外部MaaS服务
本文介绍如何通过Gateway with Inference Extension对接百炼服务,实现请求路由时自动添加API Key并重写路径,包含操作步骤及验证方法。
|
6月前
|
Java API Nacos
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关
335 1
Gateway服务网关
|
API
Istio 使用ingress和gateway两种方式公开服务
本文档指导您完成Istio网关的部署与配置。首先安装`istiod`(步骤略过)。接着,创建`ingress.yaml`文件,定义Istio入口网关的服务、部署及权限设置,通过`kubectl apply -f ingress.yaml`命令应用。最后,创建Ingress资源,指定主机名、后端服务及TLS配置,实现对外部请求的路由管理。
1057 1
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
422 2
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
426 0
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
687 0
|
8月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
742 49
|
12月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
1937 82
高效搭建Nacos:实现微服务的服务注册与配置中心
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
1217 140