【Spring实战】32 Spring Boot3 集成 Nacos 服务注册中心 并在 Gateway 网关中应用

文章目录

    • 1. 定义
    • 2. 背景
    • 3. 功能和特性
    • 4. 下载安装
    • 5. 服务启动
    • 6. 使用示例
      • 1)服务提供者
      • 2)服务消费者
      • 3)测试
    • 7. 代码参考
    • 结语

1. 定义

Nacos 是 Dynamic Naming and Configuration Service 的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它提供了服务发现、动态配置管理和服务元数据等功能,是构建和管理云原生应用的关键组件之一。

2. 背景

随着微服务架构的普及,服务的规模迅速增加,传统的配置管理和服务发现方式逐渐显得力不从心。Nacos 应运而生,致力于解决微服务领域中的服务注册、发现和配置管理等问题,为我们提供了更加灵活、高效的解决方案。它源于阿里巴巴内部对微服务架构管理的需求,经过多年的发展和实践,逐渐演化成了一个功能强大、稳定可靠的开源项目。

3. 功能和特性

  • 服务发现

    提供了强大的服务发现功能,允许微服务注册和发现其他服务。通过 Nacos,服务可以在动态环境中进行注册、注销和发现,确保微服务架构的高可用性和弹性扩展

  • 动态配置管理

    支持动态配置管理,我们可以通过Nacos实时修改配置,而无需重启应用。这为应对不同环境、不同配置需求提供了极大的灵活性

  • 服务健康监测

    能够监测注册在其上的服务的健康状态,及时发现并处理故障,确保整个微服务体系的稳定运行

  • 元数据管理

    允许我们为服务添加自定义的元数据,便于更灵活、更智能地管理服务实例

  • 高可用和扩展性

    是一个高可用和可扩展的系统,支持构建多节点的集群,确保服务的可用性和性能

4. 下载安装

本文选择从官方的 GitHub 进行下载,选取了当前最新版本 2.2.1 ,网址如下:

https://github.com/alibaba/nacos/releases/tag/2.2.1

在这里插入图片描述

等待下载完成

在这里插入图片描述

将其解压到任意位置

在这里插入图片描述

5. 服务启动

根据官网进行修改配置文件

官网描述:

https://nacos.io/docs/v2/quickstart/quick-start/

在这里插入图片描述

因此本地修改 \nacos-server-2.2.1\nacos\conf\application.properties

在这里插入图片描述

然后进入 \nacos\bin 目录下,使用 CMD 执行下面命令来启动服务

startup.cmd -m standalone

在这里插入图片描述

直到看见了 Nacos started successfully in stand alone mode. 这就代表了 Nacos 服务启动成功了,并且端口号是 8848

访问服务,帐号和密码都是 nacos

http://localhost:8848/nacos

在这里插入图片描述

点击提交之后,就可以登录到 Nacos 啦

在这里插入图片描述

6. 使用示例

下面通过一个简单的示例演示如何使用 Nacos 进行服务注册中心和配置管理中心。

在这里插入图片描述

1)服务提供者

首先,我们创建一个简单的 Spring Boot 应用,然后将其注册到 Nacos 注册中心上

添加依赖

            <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2022.0.0.0-RC1</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

bootstrap.yml 文件中添加服务名以及 Nacos 地址

spring:application:name: accountcloud:nacos:discovery:server-addr: 127.0.0.1:8848

application.yml

server:port: 9501servlet:context-path: /account

创建一个 REST 请求,用于一会测试使用

package com.cheney.koala.account.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("hello")public String hello() {return "Hello world";}
}

创建一个启动类 KoalaAccountApplication

package com.cheney.koala.account;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class KoalaAccountApplication {public static void main(String[] args) {SpringApplication.run(KoalaAccountApplication.class, args);}
}

启动服务之后,这样就可以将一个 Spring boot 应用注册上去了

在这里插入图片描述

在 Nacos 的控制台上,我们可以看到服务已经注册成功了,并且可以看到实例数和健康数等信息

2)服务消费者

首先,我们创建一个再去使用一下 Gateway 网关应用,然后也将其注册到 Nacos 注册中心上

添加依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><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-bootstrap</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

bootstrap.yml

spring:application:name: gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848

application.yml

server:port: 9500spring:cloud:gateway:routes:- id: accounturi: lb://accountpredicates:- Path=/account/**

注意,这里的 uri 和之前不一样了,这里使用的是在 Nacos 上注册的服务名,而不是具体的 IP+端口号

这样的好处是无需关心服务的 IP 是多少,端口是多少,只需知道服务名即可,就可以访问了

创建一个启动类 KoalaGatewayApplication

package com.cheney.koala.gateway;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class KoalaGatewayApplication {public static void main(String[] args) {SpringApplication.run(KoalaGatewayApplication.class, args);}
}

启动服务之后,这样就可以将我们的 gateway 应用注册上去了

在这里插入图片描述

3)测试

这里我们直接请求 Gateway 网关的 URL 进行测试

http://localhost:9500/account/hello

在这里插入图片描述

7. 代码参考

https://gitee.com/cheney09/koala-system

结语

通过这篇博客,我们初步认识了 Nacos 的定义、背景、起源、功能和特性,并通过简单示例演示了其在微服务中的应用。在接下来的学习过程中,你将更深入地了解 Nacos 的各项功能,并掌握其在构建可靠、高可用的微服务体系中的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git怎样用?(下载到本地,和在本地初始化)

全局设置&#xff1a; 点击第二个 输入&#xff1a; 例如&#xff1b;邮箱是随意地 git config --global user.name "名字" git config --global user.email "邮箱" 获取git仓库 本地初始化&#xff1a; 创建仓库 右键第二个 输入 git init 克隆&#…

prism 10 for Mac v10.1.1.270激活版 医学绘图分析软件

GraphPad Prism 10 for Mac是一款专为科研工作者和数据分析师设计的绘图和数据可视化软件。以下是该软件的一些主要功能&#xff1a; 软件下载&#xff1a;prism 10 for Mac v10.1.1.270激活版 数据整理和导入&#xff1a;GraphPad Prism 10支持从多种数据源导入数据&#xff0…

HarmonyOS模拟器启动失败,电脑蓝屏解决办法

1、在Tool->Device Manager管理界面中&#xff0c;通过Wipe User Data清理模拟器用户数据&#xff0c;然后重启模拟器&#xff1b;如果该方法无效&#xff0c;需要Delete删除已创建的Local Emulater。 2、在Tool->SDK Manager管理界面的PlatForm选项卡中&#xff0c;取消…

Bitbucket第一次代码仓库创建/提交/创建新分支/合并分支/忽略ignore

1. 首先要在bitbucket上创建一个项目&#xff0c;这个我没有权限创建&#xff0c;是找的管理员创建的。 管理员创建之后&#xff0c;这个项目给了我权限&#xff0c;我就可以创建我的代码仓库了。 2. 点击这个Projects下的具体项目名字&#xff0c;就会进入这样一个页面&#…

选矿二厂电气系统维管工作项目招标公告

选矿二厂电气系统维管工作项目招标公告 (招标编号&#xff1a;JDCRY-ZB2024-05) 项目所在地区&#xff1a;河南省,洛阳市,汝阳县 一、招标条件 本选矿二厂电气系统维管工作项目已由项目审批/核准/备案机关批准&#xff0c;项目资金来源为自筹资金438万元&#xff0c;招标人…

[GN] 设计模式—— 创建型模式

文章目录 创建型模式单例模式 -- 确保对象唯一性饿汉式懒汉式优缺点使用场景 简单工厂模式例子&#xff1a;优化优缺点适用场景 工厂方法模式--多态工厂的实现例子优缺点适用场景 创建型模式 单例模式 – 确保对象唯一性 用TaskManager类。通过以下三步进行重构 为了确保Ta…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch01-2 完整定常系统——杆组RRR

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有帮助请引用 本文参考: 《空间机构的分析与综合(上册)》-张启先…

redis-4 集群

应用场景 为什么需要redis集群&#xff1f; 当主备复制场景&#xff0c;无法满足主机的单点故障时&#xff0c;需要引入集群配置。 一般数据库要处理的读请求远大于写请求 &#xff0c;针对这种情况&#xff0c;我们优化数据库可以采用读写分离的策略。我们可以部 署一台主服…

【网络基础】mac地址

以太网 以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等; 例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等; 以太网是当前应用最广泛的局域…

Win10无法完成更新正在撤销更改的解决方法

在Win10电脑操作过程中&#xff0c;用户看到了“无法完成更新正在撤销更改”的错误提示&#xff0c;这样系统就不能成功完成更新&#xff0c;不知道如何操作才能解决此问题&#xff1f;以下小编分享最简单的解决方法&#xff0c;帮助大家轻松解决Win10电脑无法完成更新正在撤销…

Python实现时间序列分析AR定阶自回归模型(ar_select_order算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中&#xff0c;AR定阶自回归模型&#xff08;AR order selection&#xff09;是指确定自回…

Vue学习之使用开发工具创建项目、gitcode管理项目

Vue学习之使用开发工具创建项目、gitcode管理项目 翻阅与学习了vue的开发工具&#xff0c;通过对比最终采用HBuilderX作为开发工具&#xff0c;以下章节对HBuilder安装与基础使用介绍 1. HBuilder 下载 从HbuildX官网&#xff08;http://www.dcloud.io/hbuilderx.html&#…

制作OpenSSH 9.6 for openEuler 22.03 LTS的rpm升级包

OpenSSH作为操作系统底层管理平台软件&#xff0c;需要保持更新以免遭受安全攻击&#xff0c;编译生成rpm包是生产环境中批量升级的最佳途径。本文在国产openEuler 22.03 LTS系统上完成OpenSSH 9.6的编译工作。 一、编译环境 1、准备环境 基于vmware workstation发布的x86虚…

23种设计模式-结构型模式

1.代理模式 在软件开发中,由于一些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称为"代理"的第三者来实现间接访问.该方案对应的设计模式被称为代理模式. 代理模式(Proxy Design Pattern ) 原始定义是&#xff1a;让你能够提供对象的替代品或其占位符。…

复杂链表的复制

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

电磁波的波长与频率是什么关系?

摘要: 电磁波的波长&#xff08;λ&#xff09;与频率&#xff08;f&#xff09;之间的关系可以通过以下公式来表示&#xff1a; f c/λ cλf 其中&#xff1a; c 是光速&#xff0c;即电磁波在真空中的传播速度&#xff0c;约为 3 x 10⁸ 米/秒&#xff08;m/s&#xff09;λ…

2024.1.26每日一题

LeetCode 边权重均等查询 2846. 边权重均等查询 - 力扣&#xff08;LeetCode&#xff09; 题目描述 现有一棵由 n 个节点组成的无向树&#xff0c;节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi,…

三方jar包引入到springboot中 package到jar中正常启动的pom文件怎么写 IDEA

文章目录 场景例子工程引用pom文件&#xff08;打包关键&#xff09;打包后观察 场景 许多时候我们在对接三方的时候&#xff0c;需要下载官方的推荐的SDK&#xff0c;但springboot项目怎么引入额外的三方jar包了&#xff0c;自已通过maven本地坐标的方式尝也不行&#xff0c;…

【-快速录用】2024年大数据经济与社会文化国际学术会议(ICBDESC 2024)

【-快速录用】2024年大数据经济与社会文化国际学术会议(ICBDESC 2024) 2024 International Conference Big Data Economy and Social Culture 一、【会议简介】 随着大数据技术的飞速发展&#xff0c;全球范围内对大数据经济与社会文化的研究愈发深入。为了促进国际间学术交流…

PageHelper分页插件-以三层架构模型开发为例

文章目录 1、简介2、使用2.1、导入2.1.1、SpringBoot2.1.2、非SpringBoot 2.2、controller2.3、service2.4、mapper ​&#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、…