Nacos 高级详解:提升你的开发和部署效率
Nacos 高级
一 、服务集群
需求
服务提供者搭建集群

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


搭建
- 修改服务提供方的controller,打印服务端端口号

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;
}
}
- 编写yml配置

#端口号
server:
port: 8170
spring:
application:
name: service-provider #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
#端口号
server:
port: 8270
spring:
application:
name: service-provider #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
配置idea启动项
-Dspring.profiles.active=8170


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

查看nacos控制台

二、 加载配置文件顺序
- 对
3.4.5章节/第4步内容进行详解 - 加载配置文件的顺序(第4步详解)
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
配置 yml 文件中的 DataId
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服务地址
配置 console中的DataId
- nacos控制台配置

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

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'}]
三、 多环境配置
介绍
在Nacos为不同的环境(开发、测试、生产等)中,提供了多个不同管理级别的概念,包括:Data ID、Group、Namespace。
| 概念 | 描述 |
|---|---|
| Data ID | 数据唯一标识,可理解为Spring Cloud应用的配置文件名 |
| Group | 用来对Data ID做集合管理,相当于小分类 |
| Namespace | 用于进行租户粒度的配置隔离。相当于大分类 |
配置介绍
组group配置
spring.cloud.nacos.config.group= #组名称
命名空间 namespace配置 注意:namespace的ID
spring.cloud.nacos.config.namespace= #namespace的ID

配置内容
- 在nacos 控制台配置namespace

- 在nacos控制台显示namespace

数据持久化
- 在单机模式时
nacos默认使用嵌入式数据实现数据存储,0.7版本后增加了mysql存储数据。
初始化数据库
在conf目录下,提供了
nacos-mysql.sqlSQL语句,进行数据库的初始化要求:5.6+ mysql
注意:如果使用mysql 5.5,需要修改sql语句

提供的SQL语句没有创建database,手动创建nacos_config
开启mysql存储
- conf目录下,提供了
application.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
测试
- 添加配置信息

- 检查数据库存储

Nacos集群搭建
概述
3个或3个以上Nacos节点才能构成集群
配置数据源
使用内置数据源
startup.cmd -p embedded
使用外置数据源(MySQL,参考4.4.2)
在一台主机配置多个节点的端口号不能连续。
- 例如:8841/8842/8843 不可用
- 例如:8841/8843/8845 可用
配置步骤

节点1:配置Nacos8841
- 配置数据源
- 修改端口号:8841
- 配置集群配置文件
- 启动服务:startup.cmd
节点2:复制Nacos8843
- 修改端口号:8843
- 启动服务:startup.cmd
节点3:复制Nacos8845
- 修改端口号:8845
- 启动服务:startup.cmd
配置详情
配置节点1
拷贝nacos,并重命名
nacos-2.1.0-8841配置数据源

修改端口号:8841

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

启动服务:startup.cmd

成功启动

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

- 启动服务

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

启动服务

配置成功

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

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

原因2:安装目录有中文
- 内存不足
提示信息:
原因:内存不足,修改分配内存大小

- 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位,)不一致
- JNI相关错误
提示信息: C:\Users\Administrator\AppData\Local\Temp\/librocksdbjni1411968517689619912.dll: Can't find dependent libraries
结语
原因:JAVA_HOME配置的jdk安装目录,而不是jre安装目录
在本文中,我们深入探讨了 Nacos 高级版的功能和特性,展示了它如何提升开发和部署效率,为开发人员和运维团队带来更好的体验。无论是在微服务架构中使用、进行多环境部署还是进行灰度发布,Nacos 高级版都是一个强大而可靠的选择。如果你希望提升你的应用程序和服务的管理水平,不妨考虑尝试 Nacos 高级版吧!
Nacos 高级详解:提升你的开发和部署效率的更多相关文章
- vagrant三网详解(团队/个人开发必看) 转
vagrant三网详解(团队/个人开发必看) Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点. 一.端口映射(Forwarded port) 顾名思义是指把宿主计算机 ...
- 详解Kafka: 大数据开发最火的核心技术
详解Kafka: 大数据开发最火的核心技术 架构师技术联盟 2019-06-10 09:23:51 本文共3268个字,预计阅读需要9分钟. 广告 大数据时代来临,如果你还不知道Kafka那你就真 ...
- Spark详解(04) - Spark项目开发环境搭建
类别 [随笔分类]Spark Spark详解(04) - Spark项目开发环境搭建 Spark Shell仅在测试和验证程序时使用的较多,在生产环境中,通常会在IDEA中编制程序,然后打成Ja ...
- 详解微信小程序开发(项目从零开始)
一.序 微信小程序,估计大家都不陌生,现在应用场景特别多.今天就系统的介绍一下小程序开发.注意,这里只从项目代码上做解析,不涉及小程序如何申请.打包.发布的东西.(这些跟着微信官方文档的流程走就好). ...
- Canvas入门到高级详解(中)
三. canvas 进阶 3.1 Canvas 颜色样式和阴影 3.1.1 设置填充和描边的颜色(掌握) fillStyle : 设置或返回用于填充绘画的颜色 strokeStyle: 设置或返回用于 ...
- Xamarin+Prism开发详解七:Plugin开发与打包测试
有了上章[Xamarin+Prism开发详解六:DependencyService与IPlatformInitializer的关系]的基础,现在来理解Plugin开发就简单了. 本文实例代码地址:ht ...
- 详解php多人开发环境原理
作为一名php开发人员,有时候一个项目或一个功能我们不能独自完成,就像当一个仓库开发人员大于1,20人的时候,每个人可能开发不同的模块和功能,用代码版本控制工具比如 git 开不同的分支,流程大概是先 ...
- Java中的序列化Serialable高级详解
来自[http://blog.csdn.net/jiangwei0910410003/article/details/18989711] 引言 将 Java 对象序列化为二进制文件的 Java 序列化 ...
- Builder模式详解及其在Android开发中的应用
一.引言 在Android开发中,采用Builder模式的代码随处可见,比如说Android系统对话框AlertDialog的使用或者是Android中的通知栏(Notification)的使用,又比 ...
- Spark技术内幕:Shuffle Pluggable框架详解,你怎么开发自己的Shuffle Service?
首先介绍一下需要实现的接口.框架的类图如图所示(今天CSDN抽风,竟然上传不了图片.如果需要实现新的Shuffle机制,那么需要实现这些接口. 1.1.1 org.apache.spark.shuf ...
随机推荐
- Python 自动化爬虫利器 Playwright
Python 自动化爬虫利器 Playwright Python Playwright 是一个基于 Node.js 的自动化测试库,它支持多种浏览器(Chrome.Firefox.Safari.Edg ...
- Vue cli构建项目
一.创建项目 vue create hello-world 你会被提示选取一个 preset.你可以选默认的包含了基本的 Babel + ESLint 设置的 preset,也可以选"手动选 ...
- Android 13 - Media框架(30)- ACodec(六)
关注公众号免费阅读全文,进入音视频开发技术分享群! 前一节我们了解了input buffer写入的流程,知道了起播写前几笔数据时会先获取graphic buffer,这一节我们就一起来了解下deque ...
- FFmpeg Batch AV Converter 2.2.2 官方版
基本简介 FFmpeg Batch AV Converter官方版是一款Windows FFmpeg用户的前端程序,FFmpeg Batch AV Converter最新版允许使用FFmpeg命令行的 ...
- ceph客户端配置自动挂载存储服务
1. 安装支持ceph的内核模块 可选: centos/ubuntu: yum install -y ceph-common 或 apt install -y ceph-common 2. 拷贝认证密 ...
- itest(爱测试)开源接口测试&敏捷测试&极简项目管理 6.6.6 发布,新增接口mock
(一)itest 简介及更新说明 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包 ...
- Python BeautifulSoup定位取值
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ...
- axios 下载文件流
axios 下载文件流 背景:在处理文件下载时,服务端存在校验,需要在请求头里添加token 这时直接使用 a 标签就不能满足需求.接下来我们直接通过 axios 请求,在请求头里设置 token 请 ...
- Operational Property Graphs到底是个啥?
Operational Property Graphs,中文通常译为"操作属性图". 作为23ai中被官方highlight出的新特性之一,我们先看下官方的原文描述: Operat ...
- 2019 香港区域赛 BDEG 题解
B.Binary Tree 题意:给你一棵二叉树.有两个游戏者,回合制,他们每次可以删去这棵二叉树中的一棵满二叉树.求最后谁赢. 解法:每一棵满二叉树有奇数个节点,那么每次游戏者只能删去奇数个节点,所 ...