Nacos入门与实践

将 Nacos 集成到 Spring Cloud 项目中,可以实现服务发现和配置管理。以下是一个详细的入门指南,包括如何设置 Nacos 服务器,创建 Spring Cloud 项目,进行服务发现和配置管理。

1. 环境准备

首先,确保你已经安装了以下工具:

  • JDK 1.8+
  • Apache Maven 3.3+
  • Docker(可选,用于运行 Nacos 服务器)

2. 下载和启动 Nacos 服务器

使用 Docker 启动 Nacos

最简单的方式是使用 Docker 启动 Nacos 服务器。

docker run -d --name nacos-server -e MODE=standalone -p 8848:8848 nacos/nacos-server:latest

Nacos 服务器将运行在 http://localhost:8848

手动下载和启动 Nacos

你也可以手动下载 Nacos:

  1. 从 Nacos 官网 下载 Nacos 的最新版本。
  2. 解压下载的文件。
  3. 进入解压后的目录,运行以下命令启动 Nacos 服务器:
sh startup.sh -m standalone

3. 创建一个简单的 Spring Cloud 项目

我们将创建一个简单的 Spring Cloud 项目,包括服务提供者和服务消费者两个模块,并使用 Nacos 进行服务注册和配置管理。

项目结构
nacos-demo
├── nacos-provider
├── nacos-consumer
└── pom.xml
1. 创建父POM文件

首先,在项目根目录创建 pom.xml 文件,定义父POM:

pom.xml:

<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/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>nacos-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>nacos-provider</module><module>nacos-consumer</module></modules><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.3</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>
2. 创建服务提供者 (Provider)

nacos-provider/pom.xml:

<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/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>nacos-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>nacos-provider</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies>
</project>

nacos-provider/src/main/resources/application.yml:

server:port: 8080spring:application:name: nacos-providercloud:nacos:discovery:server-addr: localhost:8848

nacos-provider/src/main/java/com/example/provider/NacosProviderApplication.java:

package com.example.provider;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {public static void main(String[] args) {SpringApplication.run(NacosProviderApplication.class, args);}
}

nacos-provider/src/main/java/com/example/provider/controller/HelloController.java:

package com.example.provider.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String sayHello(@RequestParam String name) {return "Hello, " + name;}
}
3. 创建服务消费者 (Consumer)

nacos-consumer/pom.xml:

<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/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>nacos-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>nacos-consumer</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</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-openfeign</artifactId></dependency></dependencies>
</project>

nacos-consumer/src/main/resources/application.yml:

server:port: 8081spring:application:name: nacos-consumercloud:nacos:discovery:server-addr: localhost:8848

nacos-consumer/src/main/java/com/example/consumer/NacosConsumerApplication.java:

package com.example.consumer;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApplication {public static void main(String[] args) {SpringApplication.run(NacosConsumerApplication.class, args);}
}

nacos-consumer/src/main/java/com/example/consumer/client/HelloClient.java:

package com.example.consumer.client;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;@FeignClient(name = "nacos-provider")
public interface HelloClient {@GetMapping("/hello")String sayHello(@RequestParam(name = "name") String name);
}

nacos-consumer/src/main/java/com/example/consumer/controller/HelloController.java:

package com.example.consumer.controller;import com.example.consumer.client.HelloClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {private final HelloClient helloClient;public HelloController(HelloClient helloClient) {this.helloClient = helloClient;}@GetMapping("/hello")public String sayHello(@RequestParam String name) {return helloClient.sayHello(name);}
}

4. 构建和运行

首先,通过Maven构建项目。在项目根目录下运行以下命令:

mvn clean install
启动服务提供者

进入 nacos-provider 目录,运行以下命令启动服务提供者:

mvn spring-boot:run
启动服务消费者

进入 nacos-consumer 目录,运行以下命令启动服务消费者:

mvn spring-boot:run

如果一切正常,你应该可以在浏览器中访问 http://localhost:8081/hello?name=World,并看到以下输出:

Hello, World

5. 配置管理

Nacos 还提供了强大的配置管理功能。你可以在 Nacos 控制台中添加配置项,并在应用程序中使用这些配置。

在 Nacos 中添加配置
  1. 访问 Nacos 控制台 http://localhost:8848/nacos
  2. 登录(默认用户名和密码均为 `

nacos`)。
3. 在 “配置管理” -> “配置列表” 中,点击 “发布配置” 按钮。
4. 填写配置:

  • Data ID: nacos-provider.yml
  • Group: DEFAULT_GROUP
  • 配置内容:
    spring:application:name: nacos-providercloud:nacos:discovery:server-addr: localhost:8848
    
在服务提供者中使用配置

修改 nacos-provider/src/main/resources/application.yml 文件,以便从 Nacos 获取配置:

server:port: 8080spring:application:name: nacos-providercloud:nacos:config:server-addr: localhost:8848file-extension: yaml

总结

通过以上步骤,你已经成功创建了一个简单的 Spring Cloud 项目,并使用 Nacos 实现了服务注册、服务发现和配置管理。Nacos 提供了丰富的功能,可以帮助你构建高性能、可伸缩的分布式系统。通过深入学习和实践,可以更好地掌握 Nacos 的高级特性和最佳实践,满足实际项目的需求。

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

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

相关文章

docker-compose部署FastDFS分布式文件系统

文章目录 一、技术选型二、fastDFS组成部分三、docker-compose文件四、客户端nginx配置五、存储器spring Boot集成参考文献 一、技术选型 还有一个更好的google FS&#xff08;但是他不开源&#xff0c;我也没找到社区版一类的可以不要钱使用的&#xff09;。 最后考虑到我们存…

MySQL每日备份

每天备份一次mysql数据库,备份最近7天的. 要在Linux中编写脚本来每天备份MySQL数据库并只保留最近7天的备份&#xff0c;你可以按照以下步骤操作&#xff1a; 第一步&#xff1a;创建备份脚本 打开终端 并使用你喜欢的文本编辑器创建一个新脚本文件&#xff0c;例如使用 : vim…

【字符串函数2】

5. strncpy 函数的使用和模拟实现 选择性拷贝 char * strncpy ( char * destination, const char * source, size_t num ); 1.拷贝num个字符从源字符串到目标空间。 2.如果源字符串的⻓度⼩于num&#xff0c;则拷⻉完源字符串之后&#xff0c;在⽬标的后边 追加0 &#…

MatLab中无穷量和非数值量

文章目录 MatLab中无穷量和非数值量 MatLab中无穷量和非数值量 MatLab中使用Inf和-Inf表示正无穷量与负无穷量。NaN表示非数值量。Inf与-Inf一般由于运算溢出导致超出双精度浮点数类型能够表示数值范围产生。NaN则是由于非正常运算而产生的。如0/0或者Inf/Inf。

语法04 C++ 标准输入语句

标准输入 使用格式&#xff1a;cin >> 输入的意思就是把一个值放到变量里面去&#xff0c;也就是变量的赋值&#xff0c;这个值是由我们自己输入的。 (注意:输入变量前要先定义&#xff0c;输入完之后要按Enter键。) 输入多个变量&#xff0c;与输出类似&#xff0c;…

C++中的转义字符问题

C中的转义字符问题 有些字符不能直接通过键盘输入到程序中。例如&#xff0c;按回车键并不能使字符串包含一个换行符;相反&#xff0c;程序编辑器将把这种键击解释为在源代码中开始新的一行。其他一些字符也无法从键盘输入&#xff0c;因为 C语言赋予了它们特殊的含义。例如&a…

unity数独游戏

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class MainMenuPanel : MonoBehaviour {public Button btnPlay; // 开始按钮public Slider sldDifficulty; // 难度滑动条private void Awake(){/…

springer 在线投稿编译踩坑

springer投稿&#xff0c;在线编译踩坑总结 注意&#xff1a; 有的期刊需要双栏&#xff0c;而预定义的模板中可能为单栏&#xff0c;需要增加iicol选项。 例如&#xff1a; \documentclass[sn-mathphys-num]{sn-jnl}% —>\documentclass[sn-mathphys-num, iicol]{sn-jnl}…

Matlab的Simulink系统仿真(simulink调用m函数)

这几天要用Simulink做一个小东西&#xff0c;所以在网上现学现卖&#xff0c;加油&#xff01; 起初的入门是看这篇文章MATLAB 之 Simulink 操作基础和系统仿真模型的建立_matlab仿真模型搭建-CSDN博客 写的很不错 后面我想在simulink中调用m文件 在 Simulink 中调用 MATLA…

远程问诊软件哪款好?选欣九康诊疗系统

近几年国家相继推出了支持发展“互联网医疗”的政策&#xff0c;如今随着相关政策的不断落实推进&#xff0c;市场上涌现出了一大批在线咨询、电子处方和远程问诊的医疗平台&#xff0c;而在面对种类如此繁多的医疗平台究竟选择哪款更好便成了医疗机构非常头疼的事情&#xff0…

【分形技术在神经网络建模中的应用】

分形技术在神经网络建模中的应用 随着大数据时代的到来&#xff0c;神经网络的应用越来越广泛。神经网络的优势在于其能通过学习的方式将任务的模式记忆下来并预测未知的数据。然而&#xff0c;神经网络的主要缺点是需要大量的训练数据和计算资源&#xff0c;这使得它难以解决…

Dubbo 3.x源码(22)—Dubbo服务引用源码(5)服务引用bean的获取以及懒加载原理

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo3.1版本的服务引入的总体流程&#xff0c;当然真正的服务远程引入、以及配置迁移啥的都还没讲&#xff0c;但是本次我们先不接着讲MigrationRuleListener#onRefer方法&#xff0c;而是先…

数据中心布线管理:预标记线缆与移动扫描技术的融合

随着信息技术的飞速发展&#xff0c;数据中心布线管理面临着前所未有的挑战。传统的布线管理方式已无法满足现代数据中心高效、准确和可靠的需求。在这样一个背景下&#xff0c;预标记线缆与移动扫描技术的结合&#xff0c;为数据中心布线管理带来了革命性的解决方案。 布线管理…

港理工最新综述:基于LLM的text-to-SQL调查(方法实验数据全面梳理)1

【摘要】文本到SQL旨在将自然语言问题转换为可执行的SQL语句,这对用户提问理解、数据库模式理解和SQL生成都是一个长期存在的挑战。传统的文本到SQL系统包括人工工程和深度神经网络。随后,预训练语言模型(PLMs)被开发并用于文本到SQL任务,取得了可喜的成绩。随着现代数据库变得…

Mongodb连接测试程序【Java版】

先导入Maven依赖 <dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId><version>4.9.0</version> </dependency>import com.mongodb.MongoClientSettings; import com.mongodb.MongoCred…

B站画质补完计划(3):智能修复让宝藏视频重焕新生

1 老片存在什么画质问题&#xff1f; B站作为一个拥有浓厚人文属性的平台社区&#xff0c;聚集了诸如《雍正王朝》、《三国演义》等经典影视剧集&#xff0c;同时也吸引了大量用户欣赏、品鉴这些人文经典 。但美中不足的是&#xff0c;由于拍摄年代久远、拍摄设备落后、数据多次…

ADB调试命令大全

目录 前言命令大全1.显示当前运行的全部模拟器&#xff1a;adb devices2.启动ADB: adb start-server3.停止ADB: adb kill-server4.安装应用程序&#xff1a; adb install -r [apk文件]5.卸载应用程序&#xff1a; adb uninstall [packagename]6.将手机设备中的文件copy到本地计…

Java常见概念

JavaSE、JavaEE和JavaME是Java技术的三个主要版本&#xff0c;它们各自具有不同的特性和应用场景。以下是关于这三个版本的详细解释&#xff1a; JavaSE (Java Platform, Standard Edition) 定义&#xff1a;JavaSE是Java平台的标准版&#xff0c;也是Java技术的基础版本。特性…

神舟电脑文件误删怎么办?这些恢复方法助你轻松解决

神舟电脑文件误删怎么办&#xff1f;在信息爆炸的时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的重要工具。然而&#xff0c;有时我们会因为一些不小心的操作&#xff0c;误删了电脑中的重要文件&#xff0c;尤其是在使用神舟电脑这类高性能设备时&#xff0c;文…

怎么做出用于收集信息的二维码?采集信息的表单二维码制作技巧

现在二维码在日常生活中的应用越来越广泛&#xff0c;经常被用来展示多种内容展示&#xff0c;比如视频、图片、文件、音频、文本等内容&#xff0c;都可以通过生成二维码的方式来为其他人提供相关信息的展示。二维码除了有展示内容的用途外&#xff0c;现在很多人也会生成表单…