微服务 - 配置中心 - Nacos

一个有梦有戏的人 @怒放吧德德

分享学习心得,欢迎指正,大家一起学习成长!

今天的学习任务就是学习使用Nacos作为配置中心。

努力克制自己,拒绝摆烂!

什么是配置中心

配置中心就是将各个微服务的配置集中管理,就是一种统一管理各种应用配置的基础服务组件,并且能够动态配置服务,动态配置服务。动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。



就像如此,用户发布/修改配置,客户端能够实时监听到改动并且跟着改变。

Nacos配置模型

对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。Nacos抽象定义了Namespace、Group、Data ID的概念,具体这几个概念代表什么,取决于我们把它们看成什么,这里推荐给大家一种用法,如下图:



Namespace:代表不同环境,如开发、测试、生产环境。

Group:代表某项目,如XX项目

DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件

获取配置集需要指定:

1、nacos服务地址,必须指定

2、namespace,如不指定默认public

3、group,如不指定默认 DEFAULT_GROUP

4、dataId,必须指定

命名空间

namespace 隔离设计,不同空间互不干扰。

命名空间(Namespace)是用于隔离多个环境的(如开发、测试、生产),而每个应用在不同环境的同一个配置(如数据库数据源)的值是不一样的。因此,我们应针对企业项目实际研发流程、环境进行规划。如某软件公司拥有开发、测试、生产三套环境,那么我们应该针对这三个环境分别建立三个namespace。



通过新建命名空间,可以为不同环境设置不同的配置文件,并且不同的命名空间的配置内容是相互隔离的,并不会相互干扰,只是需要在配置的时候选中是那个命名空间,不选择则是默认的public。

配置管理

Nacos提供管理所有配置,并且可以通过命名不同来定义许多种不一样的配置。Nacos2.x提供了许多的配置文件类型,基本复合我们的开发使用。



选择命名空间,新建配置文件,Data ID的命名规则:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix 默认为所属工程配置spring.application.name 的值,也可以通过配置spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active=dev 即为当前环境对应的 profile。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。

    Nacos还支持编辑DIFF能力,帮助用户校验修改内容,降低改错带来的风险。

    通过编辑可以对配置进行编辑,编辑的时候,dateId和Group是不能修改的,因此只能添加新的配置文件

如果在nacos的配置文件中配置了数据库,就能够将配置 数据保存下来

实例

现在使用springcloud demo来演示一下配置中心。

配置数据持久化

nacos有自带默认的存储方式,能够保留本地,还可以是通过配置数据库,从而达到数据的持久化。

首先在nacos/conf/application.properties 可以进行数据库的配置

将以下配置放在配置文件中

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3307/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=12356

数据库的数据是文件夹里面的nacos-mysql.sql这个文件

导入依赖坐标

需要引入nacos配置坐标

<!--配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

设置相关的配置

在bootstrap.yml文件中设置相关的配置

server:
port: 8000
spring:
application:
name: service-goods
cloud:
nacos:
server-addr: localhost:8848
discovery:
ephemeral: false # false为永久实例,true表示临时实例开启,注册为临时实例
config:
server-addr: localhost:8848
file-extension: yml
group: DEFAULT_GROUP # 默认值
namespace: bb4fbfd3-db73-45a7-8db0-59e62c2e2dd5 # 没有指定的话就是默认 public

需要配置前缀,在application.yml文件中配置如下

spring:
profiles:
active: dev

编写接口

通过编写一个接口来测试从配置中心中拉取配置内容。

@RefreshScope: 能够使之动态配置,只要在配置中心中修改数据,就能够跟着改动。

@Value: 就是跟springboot获取yml中的信息一样,实际上也是这样子的,只不过是把配置内容放在了nacos服务器上了

package com.lyd.demo.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.lyd.demo.entity.GoodsDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
/**
* @author: lyd
* @description: api
* @Date: 2022/9/21
*/
@RefreshScope // 动态更新配置
@RestController
@RequestMapping("/api")
public class GoodsController {
@Autowired
private RestTemplate restTemplate;
@Value("${goods.name:null}")
private String name;
@Value("${goods.price:0.0}")
private Double price;
@GetMapping("/getValues")
public String getConfigurationCenterValue() {
return "商品名:" + name + " ,价格:" + price;
}
// ...
}

运行结果



今天就分享Nacos的初步使用,总体来说,Nacos在本地单机运行的时候很不稳定,容易出现问题。

创作不易,可能有些语言不是很通畅,如有错误请指正,感谢观看!记得点赞哦!

【微服务】- 配置中心 - Nacos的更多相关文章

  1. 【微服务】之三:从零开始,轻松搞定SpringCloud微服务-配置中心

    在整个微服务体系中,除了注册中心具有非常重要的意义之外,还有一个注册中心.注册中心作为管理在整个项目群的配置文件及动态参数的重要载体服务.Spring Cloud体系的子项目中,Spring Clou ...

  2. 微服务配置中心实战:Spring + MyBatis + Druid + Nacos

    在结合场景谈服务发现和配置中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原生”的 Spring ...

  3. 微服务配置中心 Apollo 源码解析——Admin 发送发布消息

    内容参考:https://www.toutiao.com/a6643383570985386509/ 摘要: 原创出处http://www.iocoder.cn/Apollo/admin-server ...

  4. Nacos作为微服务注册中心,爱不释手的感觉

    我觉得Nacos用起来还不错 在使用SpringCloud做分布式微服务架构时,注册中心是必不可少的一个组件.目前可以用的主要有:Eureka.Consul.Zookeeper.今天,我们就来说一下A ...

  5. 配置中心Nacos(服务发现)

    服务演变之路 单体应用架构 在刚开始的时候,企业的用户量.数据量规模都⽐较⼩,项⽬所有的功能模块都放在⼀个⼯程中编码.编译.打包并且部署在⼀个Tomcat容器中的架构模式就是单体应用架构,这样的架构既 ...

  6. Spring Cloud Alibaba 整合 Nacos 实现服务配置中心

    在之前的文章 <Nacos 本地单机版部署步骤和使用> 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一.Nacos 动态配置服务是什么? 官方是这么说 ...

  7. 微服务管理平台nacos虚拟ip负载均衡集群模式搭建

    一.Nacos简介 Nacos是用于微服务管理的平台,其核心功能是服务注册与发现.服务配置管理. Nacos作为服务注册发现组件,可以替换Spring Cloud应用中传统的服务注册于发现组件,如:E ...

  8. SpringCloud微服务:基于Nacos组件,整合Dubbo框架

    源码地址:GitHub·点这里 || GitEE·点这里 一.基础组件简介 1.Dubbo框架 Dubbo服务化治理的核心框架,之前几年在国内被广泛使用,后续由于微服务的架构的崛起,更多的公司转向微服 ...

  9. 学习一下 SpringCloud (五)-- 配置中心 Config、消息总线 Bus、链路追踪 Sleuth、配置中心 Nacos

    (1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...

随机推荐

  1. 攻防世界MISC进阶区---41-45

    41.Get-the-key.txt 得到无类型文件,扔进kali中,strings一下,得到了一堆像flag的内容 扔进010 Editor中,搜索关键字,发现一堆文件,改后缀为zip 打开,直接得 ...

  2. Linux为所有用户安装Miniconda

    如果以root身份默认安装,后续普通用户再安装的话,是直接用不起来的,需要改些东西,所以在安装时最好全局安装,所有用户都可用 执行安装脚本:sudo bash Miniconda3-latest-Li ...

  3. Java双重校验单例模式详解

    单例模式双重检测java实现: public class Singleton { private volatile static Singleton instance = null; //#1 pub ...

  4. 如何用天气预警API接口进行快速开发

    天气预警能够指导人们出行.同一种类的气象灾害预警信号级别不同,对应的防御措施也不尽相同,人们通过气象灾害预警信号,合理安排出行.公众要提高防范意识,养成接收和关注预警信息的习惯,了解预警信息背后的意义 ...

  5. 聊一聊 C# 后台GC 到底是怎么回事?

    一:背景 写这一篇的目的主要是因为.NET领域内几本关于阐述GC方面的书,都是纯理论,所以懂得人自然懂,不懂得人也没法亲自验证,这一篇我就用 windbg + 源码 让大家眼见为实. 二:为什么要引入 ...

  6. 第九天python3 闭包、nonlocal、默认值的作用域

    闭包 自由变量:未在本地作用域中定义的变量,例如定义在内存函数外的外层函数的作用域中的变量: 闭包:出现在嵌套函数中,指的是内层函数引用到了外层函数的自由变量,就形成了闭包: 示例1: # -*- c ...

  7. 基于二进制安装Cloudera Manager集群

    一.环境准备 参考链接:https://www.cnblogs.com/zhangzhide/p/11108472.html 二.安装jdk(三台主机都要做) 下载jdk安装包并解压:tar xvf ...

  8. 15分钟搭建RocketMQ源码调试环境

    下载源码 下载源码,github页面选择(rocketmq-all-4.7.1)版本压缩包,https://github.com/apache/rocketmq/tags 导入IDEA 1. 使用ID ...

  9. mysql-shell for GreatSQL 8.0.27编译安装及使用

    目录 0. 前言 1. 修改说明 2. 编译mysql-shell 2.1 环境准备 2.2 开始编译mysql & mysql-shell 2.3 利用patchelf修改mysqlsh二进 ...

  10. 最新30系显卡搭建paddle飞浆环境|含CUDA下载安装

    下载CUDA 通过这个链接可以下载任意CUDA版本:CUDA Toolkit Archive | NVIDIA Developer 我下载的是这一个:https://developer.downloa ...