前言

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

那么问题来了,如何更加优雅的实现?欢迎来到 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/

最新文章

  1. org.dbunit.database.ambiguoustablenameexception
  2. SQL ISNULL 函数
  3. javascript:算法之数组去重
  4. PCL 1.4.0 VS 2010 Configuration
  5. 解决ultravnc在win2008 R2下CTRL+ALT+DELETEA组合键发送失败的问题
  6. CSS3_新特性预览
  7. Log4net使用笔记
  8. D.xml
  9. android 关于提高第三方app的service优先级
  10. iOS-联系人应用(一)
  11. Linux下批量修改文件名方法
  12. Ruby方法参数默认值的一个小技巧在Rails中的应用
  13. every、some数组方法
  14. 网络 --- 3 socket模块 粘包
  15. impdp导入文件失败问题解决(ORA-39001/ORA-39000/ORA-39143)
  16. P1244 青蛙过河
  17. [Android 动画]简要分析一下Animator 与 Animation
  18. POST 400 (BAD REQUEST)
  19. Think PHP递归获取所有的子分类的ID (删除当前及子分类)
  20. 一个Spark job的生命历程

热门文章

  1. C#图片旋转
  2. fprintf函数将格式打印到文件,非常好用(怎么没早点发现这个函数)
  3. Qt编译和使用boost库(附QT5.51的Boost下载)good
  4. C++Builder 中如何修改服务描述,使用ChangeServiceConfig2(SERVICE_CONFIG_DESCRIPTION)
  5. 代理Delegate的小应用(使用setModelData设置下拉日期对话框)
  6. Spring cloud stream【入门介绍】
  7. Spring Boot:整合MyBatis框架
  8. bean 解析、注册、实例化流程源码剖析
  9. ZooKeeper —— 单机环境和集群环境搭建
  10. JavaWeb入门_模仿天猫整站Tmall_JavaEE实践项目