SpringBoot项目集成Nacos及相关问题

本文介绍了如何搭建Nacos服务,包括下载最新版本,配置环境,启动和关闭服务。接着,文章讲解了如何将Nacos集成到SpringBoot项目中,以及遇到的常见问题,如集群部署、命名空间配置和JVM调优。Nacos的优势在于动态服务管理和多环境支持,但也存在用户管理和权限管理的不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        作为Spring Cloud Alibaba的子项目Nacos近些年来成为了众多Spring Cloud项目提供注册与发现微服务的工具。本文将讲述从零开始搭建Nacos服务并集成到自己的服务中。Nacos开箱即用支持Dubbo,SpringBoot等,本文以SpringBoot为例进行讲述。

        1.Nacos服务版本获取

        首先我们可以在Nacos的github地址下载最新的代码并下载到本地并编译或者直接下载编译好的nacos服务jar包(最新版本为2.2.1,稳定版本为2.1.1推荐使用,nacos1.x版本将停止维护不推荐使用)。

         2.环境配置

        Nacos服务依赖JDK环境执行,具体环境依赖如下:

        1) JDK 1.8+(64 bit)

        2) Maven 3.2.x+

        3) 支持 Linux/Unix/Mac/Windows(64 bit),推荐选用 Linux/Unix/Mac

        4) 最低配置要求2核4G内存 60G磁盘空间

        3.启动/关闭Nacos服务

        1)创建Nacos数据库用户

        2)将下载的Nacos包解压,打开目录下的conf目录application.properties文件,修改相关数据库地址

        3)到bin目录下运行启动脚本,Win执行cmd脚本

startup.cmd -m standalone

        Linux执行sh脚本

sh startup.sh -m standalone

        4)关闭服务:执行bin目录下的关闭脚本,Win执行cmd脚本

shutdown.cmd

        Linux执行sh脚本

sh shutdown.sh

        4.打开Nacos页面

        Nacos默认8848端口,如本地起服务打开127.0.0.1:8848/nacos即可打开页面

         到此Nacos服务部署完成。

        5.SpringBoot项目集成Nacos

        在SpringBoot项目(2.x)maven依赖添加Nacos相关依赖并更新Maven

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>${latest.version}</version>
</dependency>

        修改application.properties文件

nacos.config.server-addr=127.0.0.1:8848

        spring.application.name作为注册服务的服务名,启动服务后可以在Nacos配置页面的中查看服务列表以确认是否正常注册。

        在此可以获取SpringBoot项目集成Nacos的示例

        6.常见问题及解决方案

        1)集群部署

          打开Nacos目录的conf文件夹下的cluster.conf文件,在此文件中写入集群Nacos的ip端口,并执行启动脚本(启动脚本默认为集群模式),部署点数推荐为奇数。

         2)命名空间

        Nacos如未定义命名空间,默认为public,在Nacos配置页面可新建多个命名空间且空间ID唯一,在服务启动参数中添加以下参数指定命名空间,命名空间相互独立。        

--spring.cloud.nacos.discovery.namespace=41864d7b-a77e-4a33-b2a3-3e9b0ea595d3

       3)Full GC报错

        修改或设置 XX:MetaspaceSize的JVM启动参数:-XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M 

        7.Nacos特性

        从此Naocs特性图可知Naocs支持相当多的主流框架,这也是为什么Nacos如此流行的原因之一,Nacos简化了服务的注册与发现并配置与管理。 

        Nacos优缺点:

        优点:

        1) 相比Eureka,Nacos提供动态上下线服务和踢出无效服务,当发现线上某个服务器状态异常时迅速下线或者因服务扩展时即时上线

        2) 一套Nacos服务提供多命名空间以此实现在一个Nacos中有测试、仿真、生产等多个环境

        3) Nacos基于轮询算法实现多服务的负载均衡

        缺点:

        Nacos对于用户和权限管理没有好的解决方案

       

        

### 如何在 Spring Boot 项目集成 Nacos #### 创建新的 Spring Boot 项目 要开始集成 Nacos,在创建一个新的 Spring Boot 项目时可以选择通过 Spring Initializr 或者其他任何偏好的方式完成项目的初始化工作[^3]。 #### 添加必要的依赖项 对于希望利用 Nacos 功能的开发人员来说,向 `pom.xml` 文件里加入如下 Maven 依赖是必不可少的操作: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> </dependency> ``` 这些依赖分别用于服务发现和支持配置管理的功能实现[^2]。 #### 修改 application.properties/yml 文件 为了让应用程序能够连接到 Nacos Server,需编辑 `application.properties` 或 `application.yml` 来指定服务器地址及其他必要参数。例如: ```yaml spring: cloud: nacos: discovery: server-addr: localhost:8848 # Nacos 地址 config: server-addr: localhost:8848 file-extension: yaml ``` 此设置允许 Spring Boot 应用程序自动注册至 Nacos 并获取远程存储的配置文件数据[^1]。 #### 使用注解简化操作 借助于特定的 Java 注解如 `@NacosInjected`, 可以更方便地注入 Nacos 客户端实例并执行相应的方法调用来访问其特性;而像 `@EnableDiscoveryClient` 则能激活服务发现机制以便让当前应用成为可被其它微服务定位的目标之一。 #### 启动类示例 下面是一个典型的 Spring Boot 启动类定义,它包含了使整个过程顺利运作所需的关键要素: ```java package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 这段代码展示了如何标记一个普通的 Spring Boot 应用使之具备自我注册的能力,并准备好了接受来自 Nacos 的指令和资源分配[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值