前言

在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等。一般会通过硬编码、配置文件或者数据库的形式实现。

那么问题来了,如何更加优雅的实现?欢迎来到 Nacos 的世界!

Nacos 配置管理

Nacos 是阿里巴巴的开源的项目,全称 Naming Configuration Service ,专注于服务发现和配置管理领域。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 生态图

如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如

  • Spring Cloud
  • Apache Dubbo and Dubbo Mesh TODO
  • Kubernetes and CNCF TODO。

使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。

Nacos Spring Boot 快速开始

这里以为 Spring-Boot2.x 为例:

pom.xml引入依赖:

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

启动类:

package com.itstyle.nacos;

import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* 启动类
* 创建者 爪哇笔记 https://blog.52itstyle.vip
* 创建时间 2019年7月14日
* dataId 可以根据自己的项目自定义
* autoRefreshed 是一个布尔值, Nacos 就会把最新的配置推送到该应用的所有机器上,简单而高效。
*/
@SpringBootApplication
@NacosPropertySource(dataId = "itstyle.blog", autoRefreshed = true)
public class Application {
private static final Logger logger = LoggerFactory.getLogger(Application.class); public static void main(String[] args){
SpringApplication.run(Application.class, args);
logger.info("启动");
}

使用案例:

package com.itstyle.nacos;

import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; /**
* 创建者 爪哇笔记 https://blog.52itstyle.vip
*/
@Controller
@RequestMapping(value = "config")
public class NacosConfigController { @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache; @RequestMapping(value = "/get", method = RequestMethod.GET)
@ResponseBody
public boolean get() {
return useLocalCache;
}
}

配置文件引入:

# 安全机制,建议走内网、配置防火墙
nacos.config.server-addr=127.0.0.1:8848

服务端安装配置请参考:

https://nacos.io/zh-cn/docs/quick-start.html

主页:

dataId 一定要与系统配置保持一致,配置内容为键值对的方式。

实例化数据库

Nacos Server 默认使用的是内嵌的数据库,生产环境建议修改使用 mysql 数据库存储配置信息。

在配置文件application.properties添加配置:

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

创建数据库,在Nacos Server conf文件夹下,找到nacos-mysql.sql文件,导入创建的数据库即可。

Nacos默认账号密码为:nacos,修改密码需要使用引入:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

然后使用代码加密:

package com.itstyle.nacos;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
* 创建者 爪哇笔记 https://blog.52itstyle.vip
*/
public class PasswordEncoderUtil {
public static void main(String[] args) {
System.out.println(new BCryptPasswordEncoder().encode("nacos"));
}
}

小结

总的来说,Nacos 还是蛮方便的,配置中心也仅仅是它的一个小功能而已。

演示案例

http://47.104.197.9:8848/nacos/

参考

https://nacos.io/en-us/

SpringBoot开发案例Nacos配置管理中心的更多相关文章

  1. SpringBoot开发案例之多任务并行+线程池处理

    前言 前几篇文章着重介绍了后端服务数据库和多线程并行处理优化,并示例了改造前后的伪代码逻辑.当然了,优化是无止境的,前人栽树后人乘凉.作为我们开发者来说,既然站在了巨人的肩膀上,就要写出更加优化的程序 ...

  2. SpringBoot开发案例从0到1构建分布式秒杀系统

    前言 ​最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路.俗话说,脱离案例讲架构都是耍流氓,最终使用SpringBoot模拟实现了部分秒杀场 ...

  3. SpringBoot开发案例之整合Dubbo分布式服务

    前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了.在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使 ...

  4. SpringBoot开发案例之打造私有云网盘

    前言 最近在做工作流的事情,正好有个需求,要添加一个附件上传的功能,曾找过不少上传插件,都不是特别满意.无意中发现一个很好用的开源web文件管理器插件 elfinder,功能比较完善,社区也很活跃,还 ...

  5. SpringBoot开发案例之整合Activiti工作流引擎

    前言 JBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,JBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官 ...

  6. SpringBoot开发案例之整合Kafka实现消息队列

    前言 最近在做一款秒杀的案例,涉及到了同步锁.数据库锁.分布式锁.进程内队列以及分布式消息队列,这里对SpringBoot集成Kafka实现消息队列做一个简单的记录. Kafka简介 Kafka是由A ...

  7. SpringBoot开发案例之分布式集群共享Session

    前言 在分布式系统中,为了提升系统性能,通常会对单体项目进行拆分,分解成多个基于功能的微服务,如果有条件,可能还会对单个微服务进行水平扩展,保证服务高可用. 那么问题来了,如果使用传统管理 Sessi ...

  8. 转载-SpringBoot开发案例之整合日志管理

    转载:https://cloud.tencent.com/developer/article/1097579 有一种力量无人能抵挡,它永不言败生来倔强.有一种理想照亮了迷茫,在那写满荣耀的地方. 00 ...

  9. SpringBoot开发案例之打造十万博文Web篇

    前言 通过 Python 爬取十万博文之后,最重要的是要让互联网用户访问到,那么如何做呢? 选型 从后台框架.前端模板.数据库连接池.缓存.代理服务.限流等组件多个维度选型. 后台框架 SpringB ...

随机推荐

  1. Windows10 使用Virtual Box一启动虚拟机就蓝屏(错误代码SYSTEM_SERVICE_EXCEPTION)解决方案

    原文:Windows10 使用Virtual Box一启动虚拟机就蓝屏(错误代码SYSTEM_SERVICE_EXCEPTION)解决方案 一打开虚拟机电脑就立马蓝屏重启,新建虚拟机也没用,然后就开始 ...

  2. Collection was modified; enumeration operation may not execute.的异常处理

    Collection was modified; enumeration operation may not execute.的异常处理 在运行程序时遇到这样一段异常,仔细检查后发现是使用Foreac ...

  3. memcached的使用一

    1.安装memcached  需要一个memcache.exe文件,打开cmd窗口,切换到可执行文件目录,执行memcache -的install命令. 2.连接服务 做测试可以打开电脑的telnet ...

  4. Unity开发概览(HoloLens开发系列)

    本文翻译自:Unity development overview 要开始使用Unity创建全息应用,点此安装包含Unity HoloLens技术预览的开发工具.Unity HoloLens技术预览基于 ...

  5. Dlib 19.4(算法,压缩,图像处理,机器学习,Meta编程,网络,HTTP服务器)

    Algorithms API Wrappers Bayesian Nets Compression Containers Graph Tools Image Processing Linear Alg ...

  6. TCP打洞和UDP打洞的区别 (相互直接访问)

    为什么网上讲到的P2P打洞基本上都是基于UDP协议的打洞?难道TCP不可能打洞?还是TCP打洞难于实现?     假设现在有内网客户端A和内网客户端B,有公网服务端S.     如果A和B想要进行UD ...

  7. Qt 5.6.2 静态编译(VS2013 x86 target xp openssl icu webkit)

    在去年4月份的时候,我写过一篇动态编译Qt5.6.0的文章,当时是为了解决webkit不能在winxp下面跑的问题,动态编译有一个缺点,就是发布的时候,要携带一大堆dll,使安装包的体积增大.而静态编 ...

  8. C++与QML混合编程实现2048

    http://blog.csdn.net/ieearth/article/details/42705305

  9. 使用wireshark捕获SSL/TLS包并分析

    原创博客,转载请注出处! TLS运作方式如下图:

  10. 【设计模式】结构型05组合模式(Composite Pattern)

    组合模式(Composite Pattern) 意图:将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 主要解决:它在我们 ...