初识Nacos

前言

Nacos是一个用于微服务架构下的服务发现和配置管理以及服务管理的综合解决方案(官网介绍),这里的服务发现其实就是注册中心,配置管理就是配置中心,而服务管理是二者的综合;

Nacos特性

1.服务发现与服务健康检查

基于Http接口或DNS发现其他服务,并提供健康检测服务,以防止向不健康的主机或服务实例发送请求

2.动态配置管理

允许在所有环境中以集中和动态的方式管理所有的服务配置,使得配置和更改更加高效

3.动态DNS服务

基于DNS协议,为了支持更多语言

4.服务和元数据管理

能够从微服务平台视角管理服务

配置管理

对于一个分布式架构的项目,由于服务的拆分也造成了配置文件分散,而使用Nacos作为配置中心,可以对程序中的一些配置文件进行统一管理,程序只需要将配置文件发布到配置中心,Nacos可以自动地进行管理,后续服务在运行时就可以通过网络协议从配置中心中获取配置。

nacos配置中心启动

**setp1:**直接双击startup.cmd运行

**step1:**也可以通过命令行方式启动

#切换目录

cd nacos/bin

#命令启动

startup.cmd -m standalone

step2: 在浏览器地址栏中输入 http://localhost:8848/nacos,即可访问nacos登录页面,用户名密码均为nacos

向Nacos配置中心添加一个配置

step1:发布配置

点击发布后,该配置文件就新增好了

step2:获取配置内容

1.在java工程中添加坐标

2.编写代码

java 复制代码
public static void main(String[] args) throws NacosException {
    //使用nacos Client 远程获取nacos上的服务
    //1.data id
    String dataId ="nacos-simple-demo.yaml";
    //2.group
    String group ="DEFAULT_GROUP";
    //3.nacos服务的地址 (ip 端口)
    String serverAddr="127.0.0.1:8848";

    Properties properties = new Properties();
    properties.put("serverAddr",serverAddr);
    //获取nacos服务上的配置
    ConfigService configService = NacosFactory.createConfigService(properties);

    String config = configService.getConfig(dataId, group, 5000);
    System.out.println(config);
}

运行结果:

Nacos配置管理模型

对于Nacos配置管理,可以通过Namespace、group、Data Id来确认到一个具体的配置集

配置集(Data Id)

在系统中,一个配置文件通常就是一个**配置集,**一个配置集可以包含系统的各种配置信息,例如数据源、日志、线程池等等。这些配置集的Id即DataId。

配置项

配置集中的一个个配置内容就是**配置项,**它代表一个具体可配置的参数与其值,通常以key = value 的形式存在.

配置分组(group)

是指对配置集进行分组,通过一个有意义的字符串,Buy或Trade来表示,不同的配置分组下都可以有相同的配置集。如果在创建配置时,没有填写配置分组的名称,则使用默认分组。

命名空间(Namespace)

命名空间用于隔离不同的配置环境,例如生产环境,测试环境和开发环境,这是因为不同的环境可能会有不同的配置,或是不同的用户。但是不同的命名空间中可以存在相同名称的配置分组。

到这里其实产生了一个问题,刚刚我们在获取nacos上的服务时,是没有设置Namespace的,也就是默认public.那如果我对Namespace进行设置,改成了dev,这个时候怎么获取到dev环境下的配置文件呢。

🆗这个时候,我们只需要在刚才的java代码中再增加一个属性namespace,值可以从nacos中获取到,下图所示,然后将namespace属性存放到properties中,即可。

总结

关于Nacos的基础配置知识就聊到这里啦,后续还会发怎么应用到分布式系统中,加油(ง •_•)ง

相关推荐
Cherry的跨界思维几秒前
【AI测试全栈:质量】40、数据平权之路:Python+Java+Vue全栈实战偏见检测与公平性测试
java·人工智能·python·机器学习·ai测试·ai全栈·ai测试全栈
刀法如飞1 分钟前
从零手搓一个类Spring框架,彻底搞懂Spring核心原理
java·设计模式·架构设计
毕设源码-邱学长10 分钟前
【开题答辩全过程】以 基于java的办公自动化系统设计为例,包含答辩的问题和答案
java·开发语言
weixin1997010801611 分钟前
马可波罗 item_get - 获取商品详情接口对接全攻略:从入门到精通
java·大数据·人工智能
小北方城市网17 分钟前
Spring Boot 接口开发实战:RESTful 规范、参数校验与全局异常处理
java·jvm·数据库·spring boot·后端·python·mysql
千寻技术帮18 分钟前
10399_基于SpringBoot的智慧养老院管理系统
java·spring boot·后端·源码·安装·代码
m0_5649149222 分钟前
Altium Designer,AD如何修改原理图右下角图纸标题栏?如何自定义标题栏?自定义原理图模版的使用方法
java·服务器·前端
飞升不如收破烂~23 分钟前
# Spring Boot 跨域请求未到达后端问题排查记录
java·spring boot·后端
AllData公司负责人24 分钟前
【亲测好用】数据集成管理能力演示
java·大数据·数据库·开源
阿蒙Amon28 分钟前
C#每日面试题-值传递和引用传递的区别
java·面试·c#