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. 基于docker一键化部署LNMP环境

    cd / && wget https://files.cnblogs.com/files/superlinux/install_lnmp.sh && bash inst ...

  2. 基于React的SSG静态站点渲染方案

    基于React的SSG静态站点渲染方案 静态站点生成SSG - Static Site Generation是一种在构建时生成静态HTML等文件资源的方法,其可以完全不需要服务端的运行,通过预先生成静 ...

  3. Qt--点击按钮弹出一个对话框

    本文简要说明,如何实现点击按钮弹出一个文本框. 1)首先创建工程,我们就创建一个QMainWindow,不选择UI,就好了. 2)然后再单独创建一个C++类文件,最后得到的工程代码如下: 由于在创建m ...

  4. linux系统下,安装redis教程,以redis 6.2.6为例

    1.下载安装包 手动下载:进入官网选择下载版本https://download.redis.io/releases/ 命令下载: cd /usr/local wget http://download. ...

  5. 自建yum源

    自定义yum本地仓库 你不需要依赖外网的yum仓库,可能导致该仓库无法访问,下载软件失败.. 大公司,会自建yum仓库 防止出现网络问题,自建了yum仓库,本地yum仓库 你可以去阿里云上,部署一个在 ...

  6. Web运作原理探析

    Web运作原理探析 1.1 web的 概念 Web是一种分布式的应用架构,旨在共享分布在网络上的各个Web服务器中的所有互相链接的信息. 1.2 HTML是指超文本标记语言. 1.3 URL简介 UR ...

  7. WPS中导入endnote插件

    WPS中导入endnote插件 1. 找到 Endnote 插件的目录: D:\Program Files (x86)\EndNote 20\Product-Support\CWYW   2. 把Cw ...

  8. Linux gpio子系统:gpio_direction_output 与 gpio_set_value的区别

    Linux gpio子系统:gpio_direction_output 与 gpio_set_value的区别 背景 最近改驱动程序,看到驱动代码中既有gpio_direction_output也有g ...

  9. IPv6地址的文本表示规范

    背景 随着IPv6越来越普及,经常要跟IPv6地址打交道,迫切需要一个统一的IPv6地址文本表示规范. RFC4291简单的说明了如何将IPv6地址表示成文本形式,但有很多有歧义和不周全的地方. RF ...

  10. 机器学习(四)——Lasso线性回归预测构建分类模型(matlab)

    Lasso线性回归(Least Absolute Shrinkage and Selection Operator)是一种能够进行特征选择和正则化的线性回归方法.其重要的思想是L1正则化:其基本原理为 ...