五分钟通关Nacos部署与应用

news/2024/9/21 22:16:52 标签: spring boot, 容器, 运维, 后端

前言

本文适合刚接触nacos想上手实践的读者。

Nacos下载安装步骤

本次下载的版本为2.0.1

下载Nacos

方式一:进入官网下载压缩包

官网地址

请在此添加图片描述

方式二:使用wget命令下载

两种方式:第一种下载速度较慢

wget https://github.com/alibaba/nacos/releases/download/2.0.1/nacos-server-2.0.1.tar.gz

或(建议使用第二个)

wget https://download.fastgit.org/alibaba/nacos/releases/download/2.0.1/nacos-server-2.0.1.tar.gz

请在此添加图片描述

配置MySQL

在解压的路径下找到conf文件夹,里面有一个叫nacos-mysql.sql 的文件,把它下载下来。

请在此添加图片描述

新建MySQL数据库

起个名字叫nacos(PS:如果喜欢别的名字,可以改成别的,记得相关的配置的都有跟着改动)

请在此添加图片描述

修改数据库配置

进入到conf目录修改application.properties

vim application.properties

请在此添加图片描述

编辑端口号(写一个你喜欢的数字)

### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=9001

解开数据库的注释

### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1

编辑数据库连接的地址,用于连接mysql数据库。

账号和密码为MySQL数据库密码。

!!!注意此处的mysql.xxx.xxx:3306/nacos,nacos为此前创建的数据库名。

### Connect URL of DB:
db.url.0=jdbc:mysql://mysql.xxx.xxx:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos

启动nacos

进入nacos下的bin目录,会有一些启动脚本。

单机模式

sh startup.sh -m standalone

集群模式

sh startup.sh

也可以修改配置文件,把下图中的cluster修改为standalone,这样使用startup.sh直接启动单机模式了。

请在此添加图片描述

访问Nacos

例如:http://127.0.0.0:9001/nacos/index.html

请在此添加图片描述默认用户和密码都是

默认的用户名和密码都是nacos

请在此添加图片描述

SpringCloud集成Nacos

利用 Idea 创建 Spring Cloud 项目,New -> Project -> SpringIntializr 其中的父项目(parentGoboyCloudpom.xml内容如下:

<?xml 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>
    <modules>
        <module>GoboyNacos</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cloud.goboy</groupId>
    <artifactId>goboycloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>goboycloud</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <java.version>8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--spring cloud依赖 他们的版本是需要一一对应的-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

父项目的 pom.xml 定义了 Spring Cloud 和 Spring Cloud Alibaba 依赖版本,各子项目都使用同一版本下的子依赖版本。

注意!!!spring-cloud-starter-alibaba-nacos-config和spring boot版本对照。

接着创建一个名称为 GoboyNacosmodule ;创建过程为New -> Module -> Maven

pom.xml 内容如下:

<?xml 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/maven-4.0.0.xsd">
    <parent>
        <groupId>com.cloud.goboy</groupId>
        <artifactId>goboycloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>GoboyNacos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>GoboyNacos</name>
    <description>Demo project for Spring Cloud Nacos</description>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <finalName>${project.name}</finalName>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

继承了 GoboyCloud 的 pom.xml。且引入依赖:

  • spring-cloud-starter-alibaba-nacos-config :作为 Nacos 客户端读取 Nacos 配置。
  • spring-boot-starter-web:提供 Web 接口。

新建bootstrap.yml

先保证Nacos服务已经启动,bootstrap.yml优先级高于application.yml所以配置文件名设置为bootstrap.yml

GoboyNacos 项目中新增 bootstrap.yml ,添加一下内容:

spring:
  application:
    name: GoboyNacos
  cloud:
    nacos:
      config:
        server-addr: 8.xxx.xx.xxx:9001
        file-extension: yaml #配置内容的数据格式,有properties和yaml类型(可选)
        # refresh : true #开启自动刷新开启后不需要使用@RefreshScope注解

之所以需要配置 spring.application.name 的名称,是因为它是构成 Nacos服务配置 Data Id 的一部分。

Nacos 服务中Data Id 完整格式组成如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix:默认为 spring.application.name 的值。
  • spring.profiles.active:是当前环境对应的 profile,如果为空,则 -${spring.profiles.active} 为空。
  • file-extension:配置内容格式,支持 propertiesyaml 格式。

上述的 bootstrap.yml 配置表示Nacos Server会读取 Data Id 为 GoboyNacos****,file-extension类型为 YAML 配置类。

新建启动类

package com.cloud.goboy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class NacosconfigApplication {

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

}

新建测试类

package com.cloud.goboy.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RefreshScope
@RestController
public class ConfigController {
    private static final Logger logger = LoggerFactory.getLogger(ConfigController.class);

    @Value("${user:Goboy}")
    private String user;

    @GetMapping(value = "/config")
    public String config() {
        logger.info("nacos user : {}", user);
        return user;
    }
}

这里我们通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新。

在配置文件中配置 refresh : true # 开启自动刷新开启后不需要使用@RefreshScope注解。

配置管理Nacos

在 Nacos 控制台添加一个新的配置:

  • Data Id:GoboyNacos
  • Group:DEFAULT_GROUP
  • 配置格式:YAML
  • 配置内容:
server:
  port: 9080
user: Goboy

配置内容完成后如下图所示:

请在此添加图片描述

请在此添加图片描述

启动项目

我们从下图中可以看出,在我们本地没有配置server端口为9080的情况下。启动端口变成了9080。

请在此添加图片描述

简单的接口测试

请在此添加图片描述

Nacos动态配置

@RefreshScope

我们通过**@Value**注解可以获取到配置中心(yml)的值,但是没有办法动态感知修改后的值,当我们Controller访问的时候,实际上访问的是Controller的Bean实例,服务启动初始化的过程中Bean在单例对象池里面的属性已经赋值了。

原始值:Goboy10086

请在此添加图片描述

修改Nacos配置中心:The current value is modified

请在此添加图片描述

请在此添加图片描述


http://www.niftyadmin.cn/n/5669547.html

相关文章

小程序构建npm失败

小程序构建npm失败 项目工程结构说明解决方法引入依赖导致的其他问题 今天在初始化后的小程序中引入TDesign组件库&#xff0c;构建npm时报错。 项目工程结构说明 初始化后的项目中&#xff0c;包含miniprogram文件夹和一些项目配置文件&#xff0c;在project.config.json文件中…

VUE面试题(单页应用及其首屏加载速度慢的问题)

目录 一、单页应用 1.概念 2.单页面应用的优缺点 二、多页面应用&#xff1a; 1.概念 2.区别 三、SPA的实现 1.原理 2.方式&#xff1a; 3.Hash与History模式有什么区别 四、首屏加载速度慢如何优化 1.什么是首屏加载&#xff1f; 2.首屏加载慢的原因 3.如何解决…

代码随想录算法训练营第25天| 491.递增子序列、46.全排列、47.全排列 II

文章目录 491.递增子序列46.全排列47.全排列 II 491.递增子序列 leetcode 491.递增子序列 代码随想录 class Solution:def __init__(self):self.pathSet set()def backtracing(self, nums, res, path, startIndex, used):if len(path) > 2:temp tuple(path)if temp not …

GRU是门控循环单元是什么?

GRU是门控循环单元&#xff08;Gated Recurrent Unit&#xff09;的简称&#xff0c;它是循环神经网络&#xff08;RNN&#xff09;的一种变体。GRU旨在解决传统RNN中存在的长期依赖问题和反向传播中的梯度消失或梯度爆炸问题。与另一种流行的RNN变体LSTM&#xff08;长短期记忆…

【变化检测】基于ChangeStar建筑物(LEVIR-CD)变化检测实战及ONNX推理

主要内容如下&#xff1a; 1、LEVIR-CD数据集介绍及下载 2、运行环境安装 3、ChangeStar模型训练与预测 4、Onnx运行及可视化 运行环境&#xff1a;Python3.8&#xff0c;torch1.12.0cu113&#xff0c;onnxruntime-gpu1.12.0 likyoo变化检测源码&#xff1a;https://github.c…

设计模式-行为型模式-解释器模式

1.解释器模式定义 用于定义语言的语法规则表示&#xff0c;并提供解释器来处理句子中的语法&#xff1b; 1.1 解释器模式的优缺点 优点 易于修改、扩展&#xff0c;因为在解释器模式中使用类来表示语言的文法规则&#xff0c;因此就可以通过继承等机制改变或者扩展文法&…

docker zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888

下面几点需要注意的&#xff1a; 1、确认在每个$zookeeper_home/data/myid中有对应数字 2、是否关闭防火墙&#xff1a;systemctl stop firewalld&#xff0c;systemctl disable firewalld 3、zoo.cfg中的server需要写成以下形式的&#xff1a; 假如有两台机器&#xff0c;1…

python获取滑块验证码需要滑动的距离

我们以这个网站为例: http://120.86.191.138/hbgs/zwgk/dirData.do?dirId402881204e959150014e959f42f30014&subjectId93e889f2501d3fe8015024305bdf0efc 往后点到第四页后会出现验证码 一.获取到背景图片和缺口图片 我们发现图片是base64格式通过API直接发送 二.识别缺…