Nacos-配置中心,特性,启动,集成mysql,快速入门

news2024/11/23 9:12:45

Nacos - 配置管理

目录
  • Nacos - 配置管理
    • 1. 什么是配置中心
      • 1.1 什么是配置
      • 1.2 什么是配置中心
    • 2 Nacos****简介
      • 2.1 主流配置中心对比
      • 2.2 Nacos****简介
      • 2.3 Nacos****特性
      • 3 Nacos 快速入
      • 3.1 安装 Nacos Server
        • 3.1.1 预备环境准备
        • 3.1.2 下载源码或者安装包
        • 3.1.3 启动服务器
        • 3.1.4 OPEN API 配置管理测试
        • 3.1.5.****关闭服务器
        • 3.1.6. 外部 mysql 数据库支持
      • 3.2 Nacos 配置入门
        • 3.3.1 发布配置
        • 3.3.2 nacos****客户端获取配置
教学目标
1)能够说出配置中心的概念以及使用场景
2)了解主流配置中心
3)理解Nacos的功能特性
4)掌握Nacos的快速入门方法
5)掌握Nacos安装方式
6)理解Nacos配置管理的核心概念及数据模型
7)掌握使用Nacos控制台进行配置管理的操作方法
8)掌握Nacos分布式系统应用的方法
9)掌握Nacos集群部署方式

1. 什么是配置中心

1.1 什么是配置

应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。

配置主要有以下几个特点:

  • 配置是独立于程序的只读变量

​ 配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置

  • 配置伴随应用的整个生命周期

​ 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。

​ 比如:启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等。

  • 配置可以有多种加载方式

​ 常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等

  • 配置需要治理

​ 同一份程序在不同的环境(开发,测试,生产)、不同的集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境、集群配置管理

1.2 什么是配置中心

在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此,分散中还包含着冗余,如下图:

下图显示了配置中心的功能,配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。

配置中心的服务流程如下:

1、用户在配置中心更新配置信息。

2、服务A和服务B及时得到配置更新通知,从配置中心获取配置。

总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件。

在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,如下图,它的功能看上去并不起眼,无非就是

配置的管理和存取,但它是整个微服务架构中不可或缺的一环。

总结一下,在传统巨型单体应用纷纷转向细粒度微服务架构的历史进程中,配置中心是微服务化不可缺少的一个系统组件,在这种背景下中心化的配置服务即配置中心应运而生,一个合格的配置中心需要满足如下特性:

配置项容易读取和修改
分布式环境下应用配置的可管理性,即提供远程管理配置的能力
支持对配置的修改的检视以把控风险
可以查看配置修改的历史记录
不同部署环境下应用配置的隔离性

2 Nacos****简介

2.1 主流配置中心对比

目前市面上用的比较多的配置中心有:Spring Cloud Confifig、Apollo、Nacos和Disconf等。由于Disconf不再维护,下面主要对比一下Spring Cloud Confifig、Apollo和Nacos。

从配置中心角度来看,性能方面Nacos的读写性能最高,Apollo次之,Spring Cloud Confifig依赖Git场景不适合开

放的大规模自动化运维API。功能方面Apollo最为完善,nacos具有Apollo大部分配置管理功能,而Spring Cloud

Confifig不带运维管理界面,需要自行开发。Nacos的一大优势是整合了注册中心、配置中心功能,部署和操作相比

Apollo都要直观简单,因此它简化了架构复杂度,并减轻运维及部署工作。

综合来看,Nacos的特点和优势还是比较明显的,下面我们一起进入Nacos的世界。

2.2 Nacos****简介

Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。官方介绍是这样的:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构的服务基础设施。

2.3 Nacos****特性

Nacos主要提供以下四大功能:

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

​ Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。

\2. 动态配置管理

​ 动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序,这使配置的更改更加高效和灵活。

\3. 动态 DNS 服务

​ Nacos提供基于DNS 协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便的查阅及发现。

\4. 服务和元数据管理

​ Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。这里动态配置管理的特性说明了Naocs的配置管理能力。

3 Nacos 快速入

3.1 安装 Nacos Server

3.1.1 预备环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在

以下版本环境中安装使用:

​ \1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。

​ \2. 64 bit JDK 1.8+;下载 & 配置。

​ \3. Maven 3.2.x+;下载 & 配置。

3.1.2 下载源码或者安装包

你可以通过源码和发行包两种方式来获取 Nacos。

Github 上下载源码方式

3.1.3 启动服务器

nacos的默认端口是8848,需要保证8848默认端口没有被其他进程占用。

进入安装程序的bin目录:

Linux/Unix/Mac 启动方式:

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

Windows 启动方式:

启动命令:

cmd startup.cmd

或者双击startup.cmd运行文件。

启动成功,可通过浏览器访问 http://127.0.0.1:8848/nacos ,打开如下nacos控制台登录页面:

使用默认用户名:nacos,默认密码:nacos 登录即可打开主页面。

3.1.4 OPEN API 配置管理测试

启动nacos成功后,可通过nacos提供的http api验证nacos服务运行是否正常。

下边我们通过 curl工具来测试nacos的open api:

curl 是开发中常用的命令行工具,可以用作HTTP协议测试。

本教程下载curl的windows版本:curl-7.66.0_2-win64-mingw,下载地址:https://curl.haxx.se/windows/

下载完成进入curl-7.66.0_2-win64-mingw的bin目录,进行下边的测试,通过测试可判断nacos是否正常工作:

发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?

dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

上边的命令表示向nacos发布一个配置:

获取配置

向nacos发布配置成功,就可以通过客户端从nacos获取配置信息,执行下边的命令:

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

通过测试发现,可以从nacos获取前边发布的配置:HelloWorld

3.1.5.****关闭服务器

关闭nacos服务的方式如下:

Linux/Unix/Mac 方式:

sh shutdown.sh

Windows 方式:

cmd shutdown.cmd

或者双击shutdown.cmd运行文件。

3.1.6. 外部 mysql 数据库支持

单机模式时nacos默认使用嵌入式数据库实现数据的存储,若想使用外部mysql存储nacos数据,需要进行以下步

骤:

1.安装数据库,版本要求:5.6.5+ ,mysql 8 以下

2.初始化mysql数据库,新建数据库nacos_config,数据库初始化文件:		${nacoshome}/conf/nacosmysql.sql

3.修改${nacoshome}/conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。


spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_config?
characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow

3.2 Nacos 配置入门

3.3.1 发布配置

首先在nacos发布配置。

浏览器访问 http://127.0.0.1:8848/nacos ,打开nacos控制台,并点击菜单配置管理 -> 配置列表

在Nacos添加如下的配置:

Data ID: nacos‐simple‐demo.yaml
Group : DEFAULT_GROUP
配置格式: YAML
配置内容: common:
             config1: something

Note:

注意dataid是以 properties(默认的文件扩展名方式)为扩展名,这里使用yaml。

  • 第一步:点击新增配置

  • 第二步:配置信息

  • 第三步:发布配置

  • 第四步:查询配置

3.3.2 nacos****客户端获取配置

我们需要新增一个名为nacos-simple-demo的项目,坐标如下:

<groupId>com.itheima.nacos</groupId>
<artifactId>nacos‐simple‐demo</artifactId>
<version>1.0‐SNAPSHOT</version>

添加group ID 为 com.alibaba.nacos 和 artifact ID 为 nacos-client 的 starter。用于实现项目中使用 Nacos 来实现应用的外部化配置。

<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos‐client</artifactId>
<version>1.1.3</version>
</dependency>
  • ( 1 )完整的 pom.xml 配置如下

    <?xml version="1.0" encoding="UTF‐8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven‐4.0.0.xsd">
    <groupId>com.itheima.nacos</groupId>
    <version>1.0‐SNAPSHOT</version>
    <artifactId>nacos‐simple‐demo</artifactId>
    <modelVersion>4.0.0</modelVersion>
    <dependencies>
    <dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos‐client</artifactId>
    <version>1.1.3</version>
    </dependency>
    </dependencies>
    </project>
  • ( 2 )获取外部化配置 新增java执行类,并在执行过程中获取配置信息:

    package com.itheima.nacos;
    
    import com.alibaba.nacos.api.NacosFactory;
    import com.alibaba.nacos.api.config.ConfigService;
    import com.alibaba.nacos.api.config.listener.Listener;
    import com.alibaba.nacos.api.exception.NacosException;
    
    import java.util.Properties;
    import java.util.concurrent.Executor;
    
    
    /**
     * @author Administrator
     * @version 1.0
     **/
    
    public class SimpleDemoMain {
        public static void main(String[] args) throws NacosException {
            //使用nacos client远程获取nacos服务上的配置信息
            //nacos server地址
            String serverAddr = "127.0.0.1:8848";
            //data id
            String dataId = "test.yaml";
            //group
            String group = "DEFAULT_GROUP";
    
            //namespace
            String namespace = "b2cde753-89fe-4ada-af63-f7eab06e98da";
            Properties properties =new Properties();
            properties.put("serverAddr",serverAddr);
            properties.put("namespace",namespace);
            //获取配置
            ConfigService configService = NacosFactory.createConfigService(properties);
            // String dataId, String group, long timeoutMs
            String config = configService.getConfig(dataId, group, 5000);
            System.out.println(config);
            //String dataId, String group, Listener listener
            configService.addListener(dataId, group, new Listener() {
                public Executor getExecutor() {
                    return null;
                }
                //当配置有变化 时候获取通知
                public void receiveConfigInfo(String s) {
                    System.out.println(s);
                }
            });
    
            while (true){
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }

    启动程序如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML班级网页设计 基于HTML+CSS+JS制作我们的班级网页(web前端学生网页设计作品)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

计算机毕业设计---java+springboot宠物商城系统

一、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot Maven mybatis Vue 等等组成&#xff0c;B/…

光栅尺差分计数/频率5MHz/磁栅尺编码器差分脉冲计数采集模块

产品特点&#xff1a; ● 光栅尺磁栅尺解码转换成标准Modbus RTU协议 ● 光栅尺5V差分信号直接输入&#xff0c;4倍频计数 ● 模块可以输出5V的电源给光栅尺供电 ● 高速光栅尺磁栅尺计数&#xff0c;频率可达5MHz ● 支持4个光栅尺同时计数&#xff0c;可识别正反转 ● …

Oracle函数

目录 一、数值函数 1.ABS(value)&#xff1a;绝对值 2.CEIL(value)&#xff1a;向上取整 3.FLOOR(value)&#xff1a;向下取整 4.ROUND(value)&#xff1a;四舍五入 5.MOD(value(被除数),divisor(除数))&#xff1a;求模 6.SIGN(value)&#xff1a;判断正(0)负(-1)和零(…

隐私计算学习笔记

目录 安全保护技术和应用总结 基础隐私计算技术在联邦学习中的应用 参考书籍 图片来源&#xff1a; https://www.basebit.ai/en/Statics/Images/en/dbys.png 隐私计算技术的产生是互联网、大数据以及区块链等技术发展到一定阶段的必然成果&#xff0c;以下为大家分享读书笔…

01-32-spring5-bean-ioc-aop

01-spring5&#xff1a; spring 1、spring概念 1、什么是spring及优点 Spring框架使Java EE应用程序的开发更加简捷&#xff0c;通过使用POJO为基础的编程模型促进良好的编程风格。 轻量级&#xff1a;Spring在大小和透明性方面绝对属于轻量级的&#xff0c;基础版本的Spr…

【推荐系统学习笔记】-- 2、特征工程

1、可利用的特征 1.1 用户行为特征 显性反馈行为&#xff1a;点赞、评分、评价等隐形反馈行为&#xff1a;点击、浏览、播放、加入购物车等 1.2 用户关系数据 显性&#xff1a;关注、好友关系隐形&#xff1a;点赞、共同观影使用Graph Embedding生成用户和物品的Embedding …

[附源码]Python计算机毕业设计SSM基于web的托育园管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

蓝牙遥控小车基础篇

开发环境&#xff1a; STM32F103R8T6最小系统板&#xff08;IO顺序引出&#xff09; 3D建模蓝牙遥控小车STL 蓝牙遥控小车纯HAL库代码 TP-Bluetooth-Car.apk蓝牙apk 原理&#xff1a;&#xff08;写代码前必须要知道模块的参数&#xff09; 蓝牙模块HC-05使用指南 HC-05蓝…

C++入门——函数重载

C入门——函数重载与缺省 先说说什么是缺省 大家生活中都知道什么关于缺省这个词的例子吗&#xff1f; 肯定是一头雾水&#xff0c;没事我举一个例子&#xff0c;给大家解释一下。 假如小菜是一个舔狗&#xff0c;他天天跟女神买早餐、嘘寒问暖。可是女神还是天天不为所动&am…

基于LabVIEW单片机的抢答器的设计

实训题目&#xff1a;基于LabVIEW单片机的抢答器的设计 1 系统设计 1.1 设计要求 1.1.1 设计任务 设计一个基于LABVIEW的6人抢答器&#xff0c;实现抢答器的基本功能。 1.1.2 性能指标要求 需要自己设计电路并焊接电路板。基本要求&#xff1a;有一个主持人控制开关和…

【华为机试真题详解】投篮大赛【2022 Q4 | 100分】

文章目录 前言题目描述示例 1题目解析参考代码前言 《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优)…

WeOps上新啦 | WeOpsV3.13网络设备监控全新改造,支持拓展不同品牌型号

本次WeOpsV3.13版本更新主题总结为&#xff1a; 优化网络设备监控&#xff0c;支持拓展不同品牌和型号的设备监控新增3D立体应用全景大屏&#xff0c;全方位展示应用和监控情况新增事件订阅&#xff0c;支持资产的到期提醒监控告警/IT服务台等模块持续更新&#xff0c;简化操作…

基于Android的太原市景点推荐系统的设计与实现

毕业设计 基于Android的太原市景点 推荐系统的设计与实现 1&#xff0e;课题意义及目标 随着人们生活水平的提高&#xff0c;外出旅游已经成了人们放松休闲的主要活动之一。现在移动端设备已是人们必备&#xff0c;最重要的是携带方便&#xff0c;基于Android的太原市景点推…

数图互通公用房基础数据管理与维护

公用房情况信息化&#xff0c;包括公用房位置、面积参数等&#xff0c;可便捷维护&#xff0c;并提供查询统计&#xff1b;实现二级单位对分配公用房的管理&#xff0c;可便捷维护&#xff0c;并提供查询统计&#xff1b;实现公用房使用人&#xff0c;对使用公用房的管理&#…

C++ Reference: Standard C++ Library reference: Containers: list: list: clear

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/clear/ 公有成员函数 <list> std::list::clear C98 void clear(); C11 void clear() noexcept;清除内容 从list容器中删除所有元素&#xff08;已销毁&#xff09;&#xff0c;并将容器的size保留为…

设计模式-外观模式

前言 在聊外观模式之前&#xff0c;我们先来聊聊体检过程。一般体检过程就是我们根据网上预定得日期空腹去体检中心。根据预定得项目&#xff0c;有一般检查、内科、外科、眼科、彩超、心电图、血常规、尿常规等等项目。 而我们往往第一次去是不知道这些房间是在哪里的&#…

XenServer7.6安装教程

XenServer7.6安装安装步骤其他XenServer 7.0 系统 yum 出错解决办法XenServer其他部署问题安装步骤 进入系统启动界面 > 按回车&#xff0c;等待加载&#xff1a; 1、键盘布局选择 > 选择us&#xff1a; 2、欢迎界面 > 选择ok&#xff1a; 3、用户协议 > 选…

【大数据入门核心技术-Flume】(三)使用Flume采集数据到HDFS

目录 一、准备工作 1、Hadoop环境安装 2、Flume安装部署 二、采集数据到HDFS 1、配置任务文件 2、启动传输 3、查看是否同步成功 三、常见问题 1、运行flume-ng agent时报错com.google.common.base.Preconditions.checkArgument 2、ERR: File name has been re-used w…