现在微服务架构越来越火,微服务架构中比较重要的一项就是配置中心

Nacos是阿里巴巴的一个开源项目,它的其中一个功能就是可以作为配置中心,实现配置的动态变更、历史版本对比、配置回滚等功能。

更多的描述细节请查看官网:https://nacos.io/zh-cn/

本篇博客主要讲解以下内容:

  1. Nacos环境安装(Windows&Linux)
  2. Spring Boot项目接入Nacos配置中心
  3. 初识Nacos控制台

1. Nacos环境安装(Windows)

下载地址:https://github.com/alibaba/nacos/releases

下载官方推荐的稳定版本1.1.4:

下载完成后将其解压到你需要的目录,我这里解压到了D:\Tools\nacos,解压完成后目录如下图所示:

打开bin文件夹,双击运行startup.cmd即可启动Nacos服务端。

启动时会看到下图所示的界面:

启动成功后,会发现根目录下自动创建了2个文件夹,如下图所示:

bin文件夹下自动创建了2个文件夹和1个文件,如下图所示:

如果需要停止Nacos服务端,有以下2种方式可以选择:

  1. 将刚刚运行时打开的cmd窗口关闭

  2. 双击运行bin文件夹下的shutdown.cmd

2. Nacos环境安装(Linux)

将上面下载的zip压缩包上传到Linux服务器,我这里上传到了我的阿里云服务器的/usr/local目录下:

然后执行如下命令进行解压:

cd /usr/local

unzip nacos-server-1.1.4.zip

然后执行如下命令启动Nacos服务端,如下所示:

cd nacos/bin

sh startup.sh -m standalone

如果需要停止Nacos服务端,可以执行如下命令:

sh shutdown.sh

3. Spring Boot项目接入Nacos配置中心

首先,需要在pom.xml文件中引入以下依赖:

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.3</version>
</dependency>

然后在application.yml中添加Nacos Server的地址:

nacos:
config:
server-addr: 127.0.0.1:8848

如果你使用的是application.properties配置文件,按如下格式添加:

nacos.config.server-addr=127.0.0.1:8848

然后在启动类上添加@NacosPropertySource注解,dataId先使用示例的example,autoRefreshed设置为ture,开启自动刷新:

然后新建控制器ConfigController,并使用@NacosValue注解设置属性值,并开启自动刷新:

package com.zwwhnly.springbootaction.controller;

import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("config")
public class ConfigController { @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache; @RequestMapping(value = "/get", method = RequestMethod.GET)
public boolean get() {
return useLocalCache;
}
}

运行项目,访问地址:http://localhost:8080/config/get,此时返回false,如下图所示:

打开cmd窗口,执行如下命令,将useLocalCache的值设置为true:

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=useLocalCache=true"

再次访问地址:http://localhost:8080/config/get,此时返回true,如下图所示:

不用重启应用程序,配置就动态变更了,是不是很方便呢。

4. 初识Nacos控制台

Nacos Server启动后,可以通过地址:http://localhost:8848/nacos/index.html,访问它的控制台。

默认会跳转到以下登录页面,默认的账号和密码为:nacos nacos。

登录成功后,可以在配置管理--配置列表界面,看到我们使用的dataId,也可以查看该dataId的配置详情:

如果想要访问阿里云服务器上部署的Nacos控制台,需要在ECS服务器的安全组规则里添加如下配置,不然访问不了:

5. 源码及参考

源码地址:https://github.com/zwwhnly/springboot-action.git,欢迎下载。

Nacos 快速开始

Nacos Spring Boot 快速开始

控制台手册

Nacos系列(一):Nacos环境安装及Hello World示例的更多相关文章

  1. Nacos系列:Nacos的三种部署模式

    三种部署模式 Nacos支持三种部署模式 1.单机模式:可用于测试和单机使用,生产环境切忌使用单机模式(满足不了高可用) 2.集群模式:可用于生产环境,确保高可用 3.多集群模式:可用于多数据中心场景 ...

  2. Nacos系列:Nacos的Java SDK使用

    Maven依赖 Nacos提供完整的Java SDK,便于配置管理和服务发现及管理,以 Nacos-0.8.0 版本为例 添加Maven依赖: <dependency> <group ...

  3. hadoop环境安装及简单Map-Reduce示例

    说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...

  4. Keil MDK版兼容51系列单片机开发环境安装

    一.安装源文件下载 百度网盘链接:https://pan.baidu.com/s/18tnjFgVat4q2hDSh7LAD8A 提取码:    2295 二.安装及破解 1.安装51的编辑器 双击安 ...

  5. Vue开发环境安装并集成element-ui示例

    此文为转载,原文链接:https://blog.csdn.net/weixin_44670973/article/details/88871106 在此对原文中部分内容进行补充. 补充:element ...

  6. Nacos系列:基于Nacos的注册中心

    前言 所谓注册中心,其实是分布式架构演进过程中的产物,在系统中充当一个协调者的角色.但是,为什么需要这样一个协调者的角色呢?我们先来看一个例子,以便理解为什么分布式架构中需要有注册中心. 案例 小明和 ...

  7. Nacos系列:欢迎来到Nacos的世界!

    什么是Nacos? Nacos 是构建以"服务"为中心的现代应用架构 (例如微服务范式.云原生范式) 的服务基础设施. Nacos可以做什么? 1.动态配置服务:支持以中心化.外部 ...

  8. Nacos系列:基于Nacos的配置中心

    前言 在看正文之前,我想请你回顾一下自己待过的公司都是怎么管理配置的,我想应该会有以下几种方式: 1.硬编码 没有什么配置不配置的,直接写在代码里面,比如使用常量类 优势:对开发友好,开发清楚地知道代 ...

  9. SpringCloud系列之Nacos应用篇

    前言 原先项目是以SpringConfig作为项目配置中心组件,Eureka作为服务注册发现组件,基本上就是SpringCloud全家桶,Eureka已经停更,所以前期调研可替换方案,主流替换方案有C ...

随机推荐

  1. Berry Jam codeforces 1278C

    题目大意: 有两种类型的果酱,一个梯子,从中间开始吃,可以吃左边的,也可以吃右边的,最终要使两种类型的果酱的数量想等 题解: 思路对了,但是没考虑完. 对梯子的左侧的果酱I我们用两个数组记录其从1到i ...

  2. gdb 调试中No symbol “***” in current context解决方法

    主要是因为GCC/G++版本和GDB不匹配造成的,网上也有说是因为O2优化问题,具体啥原因需要自己尝试一下. 解决: 放狗搜索,解决办法是在编译是加-gdwarf-3即可,出现这样的原因是gcc,gd ...

  3. 4.JS跳转路由/刷新/返回页面

    1.JS跳转路由(需要拿到父组件的history) clickHandle(){ let history = this.props.history; history.push( '/home') } ...

  4. [转+自]SSH工作原理

    SSH工作原理 熟悉Linux的人肯定都知道SSH.SSH是一种用于安全访问远程服务器的网络协议.它将客户端与服务端之间的消息通过加密保护起来,这样就无法被窃取或篡改了.那么它安全性是如何实现的呢? ...

  5. redis: List列表类型(四)

    list设置值(头部):lpush list one list设置值(尾部):**rpush ** list one list获取值:lrange list 0 -1 list获取指定范围的值:lra ...

  6. python 使用记录及问题

    编码问题 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 1: ordinal not in range(12 ...

  7. Spring Boot 自定义kafka 消费者配置 ContainerFactory最佳实践

    Spring Boot 自定义kafka 消费者配置 ContainerFactory最佳实践 本篇博文主要提供一个在 SpringBoot 中自定义 kafka配置的实践,想象这样一个场景:你的系统 ...

  8. 干货!Python中字符串、列表、元祖、字典,集合之间的转换

    一.字符串的转化 1.字符串转换成列表 字符串转换成list 的时候,str可以作为迭代对象,直接放入:也可以使用split对字符串进行切割.然后返回list s = '1a1b1c' print(l ...

  9. web前端该怎么入门?web前端入门教程(非常详细)

    初学编程的小伙伴经常会遇到的问题,1.没资源 2.没人带 3.不知道从何开始 ,小编也是从新手期过来的,所以很能理解萌新的难处,现在整理一些以前自己学习的一些资料送给大家,希望对广大初学小伙伴有帮助! ...

  10. 动静结合?Ruby 和 Java 的基础语法比较(入门篇)

    前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...