接着上一篇的【springcloud alibaba】注册中心之nacos,这一篇主要讲nacos的配置中心能力。nacos的集群部署及持久化请看上一篇

--------------------------------------------------目录-----------------------------------------------

1.微服务配置中心是什么

2.微服务为什么配置中心

  2.1 传统项目中的配置处理,一般可能存在的问题

  2.2 微服务配置中心

3.常见的微服务中心对比

4.nacos配置中心的使用

5.如何技术选型

6.nacos配置中心原理

--------------------------------------正文 -----------------------------------------------

1.微服务配置中心是什么

  「配置中心」,顾名思义,就是用来统一管理微服务项目中所有配置的系统。一个规范和成熟互联网研发团队,微服务项目中多般使用到配置中心。

2.微服务为什么配置中心

  2.1 传统项目中的配置处理,一般可能存在的问题

    2.1.1 静态化配置。这种做法虽然简单,但如果参数需要修改,就非常的不灵活,甚至需要重启运行中的项目才能生效。
    2.1.2 配置文件无法区分环境。(springboot项目profile支持环境区分)
    2.1.3 配置文件过于分散。如果一个项目中存在多个逻辑模块独立部署,每个模块所使用的配置内容又不相同,传统的做法是会在每一个模块中都放一个配置文件,甚至不同模块的配置文件格式还不一样。那么长期的结果就是配置文件过于分散混乱,难以管理。
    2.1.4 配置修改无法追溯。(配置放在代码中,通过git/svn提交记录可追溯)

  2.2 微服务配置中心 

    「配置中心」的思路就是把项目中各种配置、各种参数、各种开关,全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。
    简单来说:
      当各微服务应用需要加载配置信息时(例:启动时),会到配置中心获取「配置中心」中的配置信息;
      当需要实时更新运行中的应用的配置时,在置配中心更新对应微服务应用的配置,之后或通过配置中心将配置的变更信息推送给微服务应用,或微服务应用主动到配置中心拉取变更的配置信息。
      即能做到不停机动态变更配置信息。

  即:微服务配置中心能提高配置的安全性(一些敏感信息不需要放在代码的配置文件中),能支持实时修改,不需要重启应用;

3.常见的微服务中心对比

  对比源自:深度对比三种主流微服务配置中心

  功能特性对比总结

  这里列一个表格总结一下三个产品的功能特点:

  

4.nacos配置中心的使用

  4.1 nacos配置中心核心概念

    参考自:https://zhuanlan.zhihu.com/p/165539448

    官网wiki: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

    

    配置集

    多个键值对,一般指一个配置文件。

    一组相关或者不相关的配置项的集合称为配置集(多个键值对/一个配置文件)。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

    配置集id

    给这个配置文件起一个全局唯一的 ID。

    Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。

    配置分组

    多个配置文件放在一起,形成组,一般用于区分项目。

    Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

    配置快照

    缓存配置信息。

    Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。配置快照类似于 Git 中的本地 commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期(expiration)的概念。

    命名空间

    用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

  4.2 nacos客户端配置及使用
    首先,启动上一篇部署好的nacos集群,并进行登陆,默认账号/密码为:nacos/nacos

    创建测试项目如:

    

    引入spring-cloud-starter-alibaba-nacos-config 的starter.

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

    在运行此 Example 之前, 必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址,例如:

    bootstrap.properties  
spring.application.name=nacos-config-client
spring.cloud.nacos.config.server-addr=120.79.7.7:8888

    启动类: 

/**
* @author wjqhuaxia
* @create 2020-12-28 23:26
*/
@SpringBootApplication
public class ProviderApplication { public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :"+userName+"; age: "+userAge);
}
}

    在nacos配置管理中添加nacos-config-client.properties文件

   启动测试项目,项目启动时默认加载项目名.properties文件,例:nacos-config-client.properties

  获取配置中心的数据项:

  4.3 nacos实用配置方式

  

  或者也可以使用namespace区分不同项目,使用group区分不同环境。

5.如何技术选型

  理解需求、技术特点是技术选型的首要任务

  配置中心的维度(是否具备以下能力):
    1.配置集中管理:分布式配置中心最基础的要求
    2.配置实效性:配置的修改实时生效要求
    3.安全性:应用和配置的管理具有完善的权限管理机制,并且新增编辑和发布环节,尽量减少了人工误操作发生的概率,所有的操作都有审计日志,方便追踪
    4.配置修改简单:提供的图形化界面形式的配置管理
    5.部署简单:依赖非常少
    6.开源:源码的重要性不言而喻,无论是解决问题、扩展新功能、或者后期代替官方渠道进而形成满足自身特定需求的版本
    7.版本发布管理:所有的配置发布都有版本概念,从而可以方便地支持配置的回滚
    8.灰度发布:支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例
    9.权限管理、发布审核、操作审计:
      应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。
      所有的操作都有审计日志,可以方便地追踪问题
    10.提供开放平台API

6.nacos配置中心原理

  https://www.cnblogs.com/jsjwk/p/10880671.html

参考:

  https://blog.csdn.net/crave_shy/article/details/81285217

  https://www.cnblogs.com/jsjwk/p/10880671.html

  http://www.360doc.com/content/19/0403/17/99071_826205359.shtml

  http://blog.didispace.com/spring-cloud-alibaba-3/

最新文章

  1. Fisher–Yates shuffle 洗牌(shuffle)算法
  2. MyBatis Sql语句中的转义字符
  3. 更好更快更高效解析JSON说明
  4. URAL 2056 Scholarship 水题
  5. Android动画的实现 上
  6. BootStrap2学习日记9---文本框的前缀和后缀
  7. ☀【组件】字符串 string
  8. asp.net基础
  9. gstreamer让playbin能够播放rtp over udp流数据
  10. Ext布局篇
  11. python开发的一些tips
  12. css3技巧属性之text-overflow
  13. Apple使用Apache Mesos重建Siri后端服务
  14. C语言指针2(空指针,野指针)
  15. 从JS和jQuery浅谈DOM操作,当我们在获取时,究竟获取了什么
  16. redis的线程模型是什么?
  17. Hadoop重新格式化HDFS的方法
  18. idea 红线 并提示idea cant resolve symbol
  19. tensorFlow(四)浅层神经网络
  20. 【Spring】15、spring mvc路径匹配原则

热门文章

  1. MVC框架介绍分析
  2. deepin使用synergy鼠标越界软件实现和另一台windows系统共享鼠标
  3. 谷粒学院-2-mybatisplus
  4. Leetcode:1008. 先序遍历构造二叉树
  5. Echarts的应用实践
  6. Java大整形BigInteger的用法
  7. SPRING.NET FRAMEWORK 3.0 GA啦
  8. Magento 2.2 SQL注入漏洞
  9. Apollo mqtt 服务器搭建
  10. noip模拟31[time&#183;game&#183;cover]