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 高级详解:提升你的开发和部署效率的更多相关文章

  1. vagrant三网详解(团队/个人开发必看) 转

    vagrant三网详解(团队/个人开发必看)   Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点. 一.端口映射(Forwarded port) 顾名思义是指把宿主计算机 ...

  2. 详解Kafka: 大数据开发最火的核心技术

    详解Kafka: 大数据开发最火的核心技术   架构师技术联盟 2019-06-10 09:23:51 本文共3268个字,预计阅读需要9分钟. 广告 大数据时代来临,如果你还不知道Kafka那你就真 ...

  3. Spark详解(04) - Spark项目开发环境搭建

    类别    [随笔分类]Spark Spark详解(04) - Spark项目开发环境搭建 Spark Shell仅在测试和验证程序时使用的较多,在生产环境中,通常会在IDEA中编制程序,然后打成Ja ...

  4. 详解微信小程序开发(项目从零开始)

    一.序 微信小程序,估计大家都不陌生,现在应用场景特别多.今天就系统的介绍一下小程序开发.注意,这里只从项目代码上做解析,不涉及小程序如何申请.打包.发布的东西.(这些跟着微信官方文档的流程走就好). ...

  5. Canvas入门到高级详解(中)

    三. canvas 进阶 3.1 Canvas 颜色样式和阴影 3.1.1 设置填充和描边的颜色(掌握) fillStyle : 设置或返回用于填充绘画的颜色 strokeStyle: 设置或返回用于 ...

  6. Xamarin+Prism开发详解七:Plugin开发与打包测试

    有了上章[Xamarin+Prism开发详解六:DependencyService与IPlatformInitializer的关系]的基础,现在来理解Plugin开发就简单了. 本文实例代码地址:ht ...

  7. 详解php多人开发环境原理

    作为一名php开发人员,有时候一个项目或一个功能我们不能独自完成,就像当一个仓库开发人员大于1,20人的时候,每个人可能开发不同的模块和功能,用代码版本控制工具比如 git 开不同的分支,流程大概是先 ...

  8. Java中的序列化Serialable高级详解

    来自[http://blog.csdn.net/jiangwei0910410003/article/details/18989711] 引言 将 Java 对象序列化为二进制文件的 Java 序列化 ...

  9. Builder模式详解及其在Android开发中的应用

    一.引言 在Android开发中,采用Builder模式的代码随处可见,比如说Android系统对话框AlertDialog的使用或者是Android中的通知栏(Notification)的使用,又比 ...

  10. Spark技术内幕:Shuffle Pluggable框架详解,你怎么开发自己的Shuffle Service?

    首先介绍一下需要实现的接口.框架的类图如图所示(今天CSDN抽风,竟然上传不了图片.如果需要实现新的Shuffle机制,那么需要实现这些接口. 1.1.1  org.apache.spark.shuf ...

随机推荐

  1. 【终极指南】使用Python可视化分析文本情感倾向

    本文分享自华为云社区<Python理解文本情感倾向的终极指南>,作者: 柠檬味拥抱. 情感分析是一种通过自然语言处理技术来识别.提取和量化文本中的情感倾向的方法.Python在这一领域有着 ...

  2. 怎么使用Stable diffusion中的models

    Stable diffusion中的models Stable diffusion model也可以叫做checkpoint model,是预先训练好的Stable diffusion权重,用于生成特 ...

  3. 在Mac上运行Rainbond,10分钟快速安装

    前言 以往安装部署 Rainbond 的方式都无法绕过 Kubernetes 集群的搭建,无论是作为开发环境还是用于生产交付,部署的过程都非常依赖于服务器或云主机.这在体验 Rainbond 云原生应 ...

  4. 《最新出炉》系列入门篇-Python+Playwright自动化测试-50-滚动条操作

    1.简介 有些页面的内容不是打开页面时直接加载的,需要我们滚动页面,直到页面的位置显示在屏幕上时,才会去请求服务器,加载相关的内容,这就是我们常说的懒加载.还有就是在日常工作和学习中,经常会遇到我们的 ...

  5. Aqua 专为自动化测试打造的IDE

    JetBrains是一家全球知名的软件开发公司,他们公司推出的IDE几乎是编程语言的首选,IntelliJ IDEA 之于Java,PyCharm之于Python,以及GoLand之于go等. 5月2 ...

  6. 「C++」深度分析C++中i++与++i的区别

    大家好,我是Charzie.在C++编程中,i++和++i是两个常见的自增运算符,用于将变量的值增加1(有时与i+=1效果一样).然而,虽然它们的功能看似相似,但在实际使用中却存在显著的区别.本博客将 ...

  7. 如何保留 Excel 表头和第一行数据并追加 CSV 数据

    准备工作 在开始之前,确保你的 Python 环境中已经安装了 openpyxl 和 pandas 库.可以使用以下命令进行安装: pip install openpyxl pandas 第一步:编写 ...

  8. c# HttpWebRequest 解决 请求HTTPS慢

    其实就几行代码 if (strUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { request.Cred ...

  9. C#.NET6 ASP.NET CORE MVC 获取客户端IP

    重点是拿到HttpContext 对象. 先从Headers["Cdn-Src-Ip"] 中取IP,其次从Headers["X-Forwarded-For"]  ...

  10. core dump 路径定义以及监控

    Core Dump 是什么? Core Dump 是指进程异常退出时,操作系统将进程的内存状态保存到文件中,这个文件就是 Core Dump 文件,中文一般翻译为"核心转储",哈, ...