Nacos下载安装与整合SpringBoot快速入门(服务注册,服务配置中心)

         在学习Nacos的过程中,我也与大家分享下我的所学所得,如果有写的不好的地方欢迎大家指出。

        Nacos官方文档

目录

1. Nacos下载与启动

   1.1 下载

   1.2 启动

    1.3 验证nacos服务是否启动成功

2. SpringBoot整合Nacos注册服务

       2.1 依赖管理

        2.2 yml配置

        2.3 主启动

        3 分组和命名空间管理

4. Nacos服务配置中心

        3.1 新增依赖

        3.2 yml配置 

        3.3 业务类

       3.4 测试

        3.5 回滚

        5.总结


1. Nacos下载与启动

   1.1 下载

     官方下载地址

     由于官方下载地址在github上,如果嫌弃官网下载得太慢或者缺少梯子,也可以点击我下面的百度网盘分享链接下载。

     nacos-server-2.2.3

   1.2 启动

     解压完成后进入bin目录下

    在路径上输入cmd+回车,或者右键+在终端打开进入命令行窗口

    输入启动命令(standalone代表着单机模式运行,非集群模式):

        Linux:        

sh startup.sh -m standalone

        Windows:

startup.cmd -m standalone

       出现以下界面一般就代表启动成功了

    1.3 验证nacos服务是否启动成功

     官方文档中推荐的是Linux环境下使用 tail -f 检查日志是否有成功启动的输出

      不过对于初学者来说,一般使用的是windows系统,我们直接访问http://127.0.0.1:8848/nacos,出现以下页面即代表服务启动成功

2. SpringBoot整合Nacos注册服务

       2.1 依赖管理

        注意版本控制!注意版本控制!注意版本控制!

        虽然nacos本身要求jdk8以上即可,但作为SpringCloudAlibaba的组件,想要引入Nacos那么首先必须引入SpringCloudAlibaba的bom文件控制版本,这里有一个非常值得注意的地方。

        版本说明

        顺便提一下,SpringBoot3.x只支持jdk17及以上,各种版本控制须得自己小心。

        不过,如果不想浪费时间在版本控制上,也有简便方法

   没错!交给IDEA自己进行一个默认的配置就行!

    <properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>3.0.2</spring-boot.version>
        <spring.cloud.alibaba.version>2022.0.0.0-RC2</spring.cloud.alibaba.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2022.0.0.0-RC2</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

        

        2.2 yml配置

        application.yml

spring:
  application:
    name: nacos-service   #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   #注册进的nacos的地址
        namespace: public
        group: DEFAULT_GROUP

        namespace和group都是默认值,可不写。

        2.3 主启动

        还需要新添一个@EnableDiscoveryClient注解才能将该微服务注册进nacos。如果要配置NacosConfiguration也可以将该注解移动到配置类上

@SpringBootApplication
@EnableDiscoveryClient
public class NacosTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosTestApplication.class, args);
    }

}

        启动成功后刷新一下,即可在服务列表上查看新注册的微服务

        在业务场景下,一般会存在消费者微服务通过Nacos远程调用生产者服务,考虑到Rest使用的不便性,一般是通过OpenFeign接口来进行远程调用微服务。(后续会另外写一篇文章介绍)

        3 分组和命名空间管理

        在上述yml配置文件中,有两个属性很多人可能有所疑惑:namespace和group,这与nacos不同环境下的微服务配置有关。

        在实际开发中,通常一个系统会准备开发环境,测试环境,生产环境等多种配置,如何保证指定环境启动时服务能正确读取到Nacos上相应环境的服务配置呢?

        Nacos便提供了namespace+group+DataId三元确定一个服务配置的功能。

        namespace:主要用来实现隔离,主要用于区分生产环境。

        group:类似于JAVA中的包名,可以把不同的微服务划分到同一个分组里面去

        DataId:服务名,类似于JAVA中的类名,与group逻辑上区分两个目标对象

        在上述的yml文件中,三元确定的是一个服务或服务配置文件,不过一般用来隔离配置文件即可,无需配置多个环境下的微服务,基于此nacos与consul一样也支持对于所有微服务进行服务配置动态变更的功能。

         新建命名空间:

           即可在配置管理中切换命名空间命名文件并创建配置

4. Nacos服务配置中心

        3.1 新增依赖

        <!--bootstrap-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>4.1.0</version>
        </dependency>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2022.0.0.0-RC2</version>
        </dependency>

        3.2 yml配置 

         在服务配置中心里,需要使用bootstrap.yml,在这里解释一下和application.yml的区别:

  • bootstrap.yml:在Spring Boot应用程序启动时优先于application.yml被加载。它主要用于配置Spring Cloud Config这样的外部配置中心,或者用于初始化Spring Cloud的上下文,比如服务注册与发现等。
  • application.yml:在Spring Boot应用程序启动时随后被加载,用于配置应用程序本身的属性和其他配置。

       换而言之,加载顺序为:加载bootstrap.yml -->  程序启动--->加载application.yml  -->启动完成

       服务注册与发现的配置需要在应用程序启动初期就准备好,以便应用程序能够及时注册到Nacos服务器,并能够将配置信息加载到程序中,否则将无法成功读取Nacos中的配置信息,初始化失败。

        因此Nacos的配置信息需要移动至bootstrap.yml中。

        bootstrap.yml:

spring:
  application:
    name: nacos-service   #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        namespace: Dev_Namespace
# nacos配置文件DataId的命名规则是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 因此本案例的DataID是:nacos-service-dev.yaml

        application.yml:

server:
  port: 8888

spring:
  profiles:
        active: dev # 表示开发环境
#    active: prod # 表示生产环境
#    active: test # 表示测试环境

        3.3 新增配置文件

         在Dev_Namespace下新增一个yaml文件,文件内容如下(如果想要创建新的group,直接修改group内容即可)

        3.4 业务类

@RestController    //支持配置信息动态刷新
@RefreshScope
public class TestController {

    @Value("${config.info}")
    private String configInfo;

    @RequestMapping("/test/dev")
    public String dev() {
        return configInfo;
    }
}

       3.5 测试

         访问localhost:8888/test/dev

         成功读取Nacos中的配置信息。

         修改nacos-service-dev.yaml配置信息

         刷新访问

         更新成功

        3.6 回滚

        Nacos也支持历史信息的回滚功能

        可以通过查找配置信息,进行历史的回滚

        回滚成功

        

        5.总结

        作为SpringCloudAlibaba的服务注册和配置中心,Nacos无疑是重中之重,只有配置好了Nacos才能完成后续微服务的开发。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值