Nacos 高级详解:提升你的开发和部署效率 Nacos 高

Nacos 高级

前言

欢迎来到本篇文章,今天我们将探索 Nacos 高级版,这是一个旨在提升开发和部署效率的强大工具。作为 Nacos 的高级版本,它提供了更多功能和特性,帮助开发人员和运维团队更好地管理和部署他们的应用程序和服务。无论你是一名开发人员、系统管理员还是 DevOps 工程师,Nacos 高级版都将成为你的得力助手。让我们深入了解一下它的优势和特点吧。

正文

一 、服务集群

1 需求

  • 服务提供者搭建集群

1655452364194.png

  • 服务调用者,依次显示集群中各服务的信息

image-20210415083941141.png

image-20210415083949074.png

2 搭建

  • 1)修改服务提供方的controller,打印服务端端口号

1655221836544.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
java复制代码package com.czxy.controller;

import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
* @author 桐叔
* @email liangtong@itcast.cn
*/
@RestController
public class EchoController {

@Resource
private HttpServletRequest request;

@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
int serverPort = request.getServerPort();
return "Hello Nacos Discovery " + string + ":" + serverPort;
}
}
  • 2)编写yml配置

1655221950052.png

1
2
3
4
5
6
7
8
9
10
11
yml复制代码#端口号
server:
port: 8170

spring:
application:
name: service-provider #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
1
2
3
4
5
6
7
8
9
10
11
yml复制代码#端口号
server:
port: 8270

spring:
application:
name: service-provider #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
  • 3)配置idea启动项
1
ini复制代码-Dspring.profiles.active=8170

image-20210415084820667.png

image-20210415084839900.png

3 测试

  • 启动3个服务(2个服务提供,1个服务消费)

image-20210415085003936.png

  • 查看nacos控制台

1655222274072.png

二、 加载配置文件顺序2

  • 3.4.5章节/第4步内容进行详解
  • 加载配置文件的顺序(第4步详解)

1 nacos 配置 DataId 介绍

  • nacos 提供了3种方式,配置dataId的加载顺序

A: 共享配置:(过时),使用 shared-configs 替代

spring.cloud.nacos.config.shared-dataids

spring.cloud.nacos.config.refreshable-dataids

B: 加载多配置:(过时),使用 extension-configs 替代

spring.cloud.nacos.config.ext-config[n]
C: 内部规则拼接:

spring.cloud.nacos.config.prefix

spring.cloud.nacos.config.file-extension

spring.cloud.nacos.config.group

2 配置 yml 文件中的 DataId

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
yml复制代码spring:
application:
name: config-service # 服务名
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # nacos 服务地址
# shared-dataids: test1.yml # 4.1 共享配置 (已过时)
# refreshable-dataids: test1.yml
shared-configs: # 4.1 共享配置【最新】
- data-id: test1-1.yml
group: DEFAULT_GROUP
refresh: true
- data-id: test1-2.yml
group: DEFAULT_GROUP
refresh: true
# ext-config: # 4.2 配置多个 (已过时)
# - data-id: test2-1.yml
# group: DEFAULT_GROUP
# refresh: true
# - data-id: test2-2.yml
# group: DEFAULT_GROUP
# refresh: true
extension-configs: # 4.2 配置多个 【最新】
- data-id: test2-1.yml
group: DEFAULT_GROUP
refresh: true
- data-id: test2-2.yml
group: DEFAULT_GROUP
refresh: true
prefix: ${spring.application.name} # 4.3 data ID的前缀,默认服务名
file-extension: yaml # data ID的后缀:config-service.yaml
group: DEFAULT_GROUP # 组名
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址

3 配置 console中的DataId

  • nacos控制台配置

image-20210415104915218.png

4 测试

  • 后面加载的dataId将覆盖前面加载的dataId设置的内容
  • 查看日志

image-20210415105052039.png

1
2
bash复制代码Located property source: [
BootstrapPropertySource {name='bootstrapProperties-test3-demo.yaml'}, BootstrapPropertySource {name='bootstrapProperties-test3.yaml'}, BootstrapPropertySource {name='bootstrapProperties-test2-2.yml'}, BootstrapPropertySource {name='bootstrapProperties-test2-1.yml'}, BootstrapPropertySource {name='bootstrapProperties-test1.yml'}]

三、 多环境配置

1 介绍

  • 在Nacos为不同的环境(开发、测试、生产等)中,提供了多个不同管理级别的概念,包括:Data IDGroupNamespace
概念 描述
Data ID 数据唯一标识,可理解为Spring Cloud应用的配置文件名
Group 用来对Data ID做集合管理,相当于小分类
Namespace 用于进行租户粒度的配置隔离。相当于大分类

2 配置介绍

  • 组group配置
1
yml复制代码spring.cloud.nacos.config.group=				#组名称
  • 命名空间 namespace配置 ==注意:namespace的ID==
1
yml复制代码spring.cloud.nacos.config.namespace=			#namespace的ID

1655435343460.png

3 配置内容

  • 在nacos 控制台配置namespace

1655435426654.png

  • 在nacos控制台显示namespace

1655435409120.png

四、 数据持久化

  • 在单机模式时nacos默认使用嵌入式数据库实现数据存储,0.7版本后增加了mysql存储数据。

1 初始化数据库

  • 在conf目录下,提供了nacos-mysql.sql SQL语句,进行数据库的初始化
+ 要求:5.6+ mysql
+ 注意:如果使用mysql 5.5,需要修改sql语句


![1655436482630.png](https://gitee.com/songjianzaina/juejin_p2/raw/master/img/324cef9fae964bad617696c80a664ce48b5a47b2226ead8f05d4997cfcd29517)
  • 提供的SQL语句没有创建database,手动创建nacos_config

image-20210415162504004

2 开启mysql存储

  • conf目录下,提供了application.properties可以修改数据库配置信息

image-20210415162504004.png

1
2
3
4
5
6
7
8
9
10
properties复制代码### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config_2_1?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1234
  • 配合完成后,重启nacos

3 测试

  • 添加配置信息

image-20210415164446314.png

  • 检查数据库存储

image-20210415164511747.png

五、 Nacos集群搭建

1 概述

  • 3个或3个以上Nacos节点才能构成集群
  • 配置数据源
+ 使用内置数据源



1
cmd复制代码startup.cmd -p embedded
+ 使用外置数据源(MySQL,参考4.4.2)
  • 在一台主机配置多个节点的端口号==不能连续==。
+ 例如:8841/8842/8843 不可用
+ 例如:8841/8843/8845 可用

2 配置步骤

1655309574502.png

  • 节点1:配置Nacos8841
    1. 配置数据源
    2. 修改端口号:8841
    3. 配置集群配置文件
    4. 启动服务:startup.cmd
  • 节点2:复制Nacos8843
    • 修改端口号:8843
    • 启动服务:startup.cmd
  • 节点3:复制Nacos8845
    • 修改端口号:8845
    • 启动服务:startup.cmd

3 配置详情

1)配置节点1

  1. 拷贝nacos,并重命名 nacos-2.1.0-8841
  2. 配置数据源

1655309637618.png
3. 修改端口号:8841

1655309662031.png
4. 配置集群配置文件:拷贝conf/cluster.conf.example,重名为cluster.conf

1655309699463.png
5. 启动服务:startup.cmd

1655309748459.png
6. 成功启动

1655309809762.png

2)配置节点2

  • 复制节点nacos-2.1.0-8841,并重命名nacos-2.1.0-8843
  • 修改端口号

1655309928803.png

  • 启动服务

1655309958005.png

3)配置节点3

  • 复制节点nacos-2.1.0-8841,并重命名nacos-2.1.0-8845
  • 修改端口号

1655310040083.png

  • 启动服务

1655310010135.png

4)配置成功

1655310082877.png

4 常见错误

1)db.num is null

  • 错误提示:db.num is null
  • 原因:没有配置数据库

1655224799207.png

2) unable to start embedded tomcat

  • 错误提示:unable to start embedded tomcat
  • 原因1:没有编写集群配置文件

1655224825852.png

  • 原因2:安装目录有中文

3)内存不足

  • 提示信息:
  • 原因:内存不足,修改分配内存大小

1655224914532.png

4) Cannot determine JNI library name for ARCH=’x86’ OS=’windows 10’ name=’rocksdb’

  • 提示信息:Cannot determine JNI library name for ARCH=’x86’ OS=’windows 10’ name=’rocksdb’
  • 原因:nacos与jdk 系统位数(64位和32位,)不一致

5) JNI相关错误

  • 提示信息: C:\Users\Administrator\AppData\Local\Temp\/librocksdbjni1411968517689619912.dll: Can't find dependent libraries

结语

原因:JAVA_HOME配置的jdk安装目录,而不是jre安装目录
在本文中,我们深入探讨了 Nacos 高级版的功能和特性,展示了它如何提升开发和部署效率,为开发人员和运维团队带来更好的体验。无论是在微服务架构中使用、进行多环境部署还是进行灰度发布,Nacos 高级版都是一个强大而可靠的选择。如果你希望提升你的应用程序和服务的管理水平,不妨考虑尝试 Nacos 高级版吧!

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%