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. Vue3组件通信方式

    Vue3组件通信方式 不管是vue2还是vue3,组件通信方式很重要,不管是项目还是面试都是经常用到的知识点. 比如:vue2组件通信方式 props:可以实现父子组件.子父组件.甚至兄弟组件通信 自 ...

  2. kettle从入门到精通 第三十三课 再谈 kettle 表输出 分区/分片

    1.之前第九章有讲过kettle 表输出步骤,里面有简单的提到过表输出步骤里面的表分区设置,这里详细介绍下. 表分区数据:选择此选项可根据"分区"字段中指定的日期字段的值将数据拆分 ...

  3. linux Centos8系统,防火墙配置常用命令,systemctl 和firewall

    本文环境:Linux系统CentOS 8.2 64bit CentOS 7版本及以上版本较centos 6有较大改动,例如:采用systemctl命令来开启service,它是服务管理中主要的工具,融 ...

  4. 极限科技(INFINI labs)荣获中国信通院大数据“星河”标杆案例

    12 月 6 日,由中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织的 2023 大数据"星河(Galaxy)"案例评选结果正式公示. ...

  5. 在线Bcrypt加密、验证工具

    在线bcrypt加密,bcrypt算法是一种密码哈希算法,它是基于Blowfish加密算法改进的,能够生成安全性很高的哈希值,并且可以通过调整计算时间来提高安全性.本工具支持在线Bcrypt加密及验证 ...

  6. C#/.NET/.NET Core拾遗补漏合集(24年6月更新)

    前言 在这个快速发展的技术世界中,时常会有一些重要的知识点.信息或细节被忽略或遗漏.<C#/.NET/.NET Core拾遗补漏>专栏我们将探讨一些可能被忽略或遗漏的重要知识点.信息或细节 ...

  7. radis简单学习笔记

    原来写接口只用了本机缓存cache 来学习一下radis,用法应该跟cache一样吧,为了配套负载均衡的多服务器是多个服务器都可以读取缓存 一.下载 找了好长时间 github有的时候能上有的时候就上 ...

  8. Flink状态(一)

    key状态和算子状态 key状态 key状态总是与key有关,只能被用于keyedStream类型的函数与算子.你可以认为key状态是一种被分区的算子状态,每一个key有一个状态分区.每一个key状态 ...

  9. python之集合学习

    *******************集合{set}******************* 1.集合set 可变 特点:是由不同元素组成 是无序的 集合中元素必须是不可变类型例如(字符串/元祖/数字) ...

  10. 记录用C#写折半查找算法实现

    折半查找算法 前言 最近要考试了,重新回顾一下之前学的算法,今天是折半查找,它的平均比较次数是Log2 n 思想 给定一个有序数组A[0..n-1],和查找值K,返回K在A中的下标. 折半查找需要指定 ...