2023-03-11  阅读(4)
原文作者:柒's Blog 原文地址:https://blog.52itstyle.vip/archives/1304/

202303111617216901.png

前言

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

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

Nacos 配置管理

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

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

Nacos 生态图

202303111617223042.png

如 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

主页:

202303111617235913.png

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

202303111617244384.png

实例化数据库

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 还是蛮方便的,配置中心也仅仅是它的一个小功能而已。

参考

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


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文