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.sql
SQL语句,进行数据库的初始化要求: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可视化分析文本情感倾向
本文分享自华为云社区<Python理解文本情感倾向的终极指南>,作者: 柠檬味拥抱. 情感分析是一种通过自然语言处理技术来识别.提取和量化文本中的情感倾向的方法.Python在这一领域有着 ...
- 怎么使用Stable diffusion中的models
Stable diffusion中的models Stable diffusion model也可以叫做checkpoint model,是预先训练好的Stable diffusion权重,用于生成特 ...
- 在Mac上运行Rainbond,10分钟快速安装
前言 以往安装部署 Rainbond 的方式都无法绕过 Kubernetes 集群的搭建,无论是作为开发环境还是用于生产交付,部署的过程都非常依赖于服务器或云主机.这在体验 Rainbond 云原生应 ...
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-50-滚动条操作
1.简介 有些页面的内容不是打开页面时直接加载的,需要我们滚动页面,直到页面的位置显示在屏幕上时,才会去请求服务器,加载相关的内容,这就是我们常说的懒加载.还有就是在日常工作和学习中,经常会遇到我们的 ...
- Aqua 专为自动化测试打造的IDE
JetBrains是一家全球知名的软件开发公司,他们公司推出的IDE几乎是编程语言的首选,IntelliJ IDEA 之于Java,PyCharm之于Python,以及GoLand之于go等. 5月2 ...
- 「C++」深度分析C++中i++与++i的区别
大家好,我是Charzie.在C++编程中,i++和++i是两个常见的自增运算符,用于将变量的值增加1(有时与i+=1效果一样).然而,虽然它们的功能看似相似,但在实际使用中却存在显著的区别.本博客将 ...
- 如何保留 Excel 表头和第一行数据并追加 CSV 数据
准备工作 在开始之前,确保你的 Python 环境中已经安装了 openpyxl 和 pandas 库.可以使用以下命令进行安装: pip install openpyxl pandas 第一步:编写 ...
- c# HttpWebRequest 解决 请求HTTPS慢
其实就几行代码 if (strUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { request.Cred ...
- C#.NET6 ASP.NET CORE MVC 获取客户端IP
重点是拿到HttpContext 对象. 先从Headers["Cdn-Src-Ip"] 中取IP,其次从Headers["X-Forwarded-For"] ...
- core dump 路径定义以及监控
Core Dump 是什么? Core Dump 是指进程异常退出时,操作系统将进程的内存状态保存到文件中,这个文件就是 Core Dump 文件,中文一般翻译为"核心转储",哈, ...