前言:
Nacos是阿里巴巴开发的配置中心和注册中心,在Nacos之前,其实还有很多相同的产品,比如注册中心:Eureka,Consul, zookeaper;配置中心:Config、apollo等,他们的功能都是单一的,要不是注册中心要不是配置中心,而Nacos不同,他同时兼有配置和注册两种服务功能
一、Nacos介绍
官网走你
要介绍Nacos首先肯定是要介绍注册中心、配置中心是什么了
配置中心:
系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。这个回答有点官方哈,其实就是当微服务较多时,管理每个服务的配置信息比较困难,尤其是当我们想要在服务启动过程中将新的配置信息生效时更加困难了,这时候就有了配置中心的概念,将每个服务的管理配置文件的功能抽离出来,专门交给一个服务去管理,这个服务呢就是配置中心啦
注册中心
注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
举个现实生活中的例子,比如说,我们手机中的通讯录的两个使用场景:
当我想给张三打电话时,那我需要在通讯录中按照名字找到张三,然后就可以找到他的手机号拨打电话。
李四办了手机号,那么他把手机号告诉我,我把李四的号码存进通讯录,后续,我就可以从通讯录找到他。
这就是注册中心的两个重要概念,服务注册和服务发现
下面看一下Nacos官方地图,看地图不迷路
功能还是很多的,主要也是集中在注册中心和配置中心
二、Nacos安装
这部分,按理说是要写到博客中的,但是一是Nacos安装非常简单,二是网上太多描述的案例,我就不重复造轮子了,请看传送门
Nacos1.4.0 Windows单机模式启动和集群启动
我感觉这篇博客写的还是很不错的,当然也可以直接官方文档走起
三、Nacos之配置中心
1.快速Demo
-
提供本地Nacos服务,当然是以单机standalone的模式启动
-
在http://127.0.0.1:8848/nacos的nacos ui页面中创建一条配置信息
-
创建一个springboot项目
-
引入maven依赖
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.1</version>
</dependency>
- 创建一个web访问获取配置的请求
/**
* @program: nacos-demo
* @description: 获取Nacos中的配置信息
* @create: 2020-11-29 10:47
**/
@RestController
@RequestMapping("config")
public class GetConfigMessage {
@GetMapping("get")
public Object getConfigMessage() throws NacosException {
String serverAddr = "127.0.0.1:8848";
String dataId = "nacos-simple-demo";
String group = "DEFAULT_GROUP";
Properties properties = new Properties();
properties.put("serverAddr",serverAddr);
ConfigService configService = NacosFactory.createConfigService(properties);
String content = configService.getConfig(dataId,group,2000);
return content;
}
}
这里的serverAddr、dataId 、group 都和当时在nacos ui中创建的配置信息保持一致即可,例如下图
这样就可以了,当我们启动项目的时候,就可以通过访问相关请求获取在nacos中创建的配置信息了
2.配置模型
在nacos ui界面我们可以看到这个
这个是nacos默认的namespace——public,也就是说像上面的快速demo,使用的就是默认的namespace,但是我们也可以创建更多的namespace,那么namespace是什么?goupId、dataId又是什么?
通过下图我们可以更加直接的了解他们三个级别在项目的中管理
这下子很清晰了吧,我是这样简单的认为的namespace就是项目中的不同环境,而group就是一个项目,dataId就是具体的单体工程了
3. Namespace创建
关于GroupId、DataId的创建,通过快速Demo肯定是知道了,但是Namespace是如何创建的呢?这个也很简单的,接下来我们就简单的介绍一下nacos ui界面
可以看到上图中的红色的框框了,在这里就可以直接创建了,这里不得不感慨一下,如果国内的软件发展起来了,至少以后使用这些开发工具不用为英语发愁了。还需要努力啊,共勉
记住这个命名空间ID,请求配置信息的时候需要用到,之前请求时没有用到是因为它默认的就是public,在配置列表这里切换namespace
切换对应的namespace即可了。
如果我们想在快速demo那里获取test的配置信息的话,那么需要修改一下demo,如下
@RestController
@RequestMapping("config")
public class GetConfigMessage {
@GetMapping("get")
public Object getConfigMessage() throws NacosException {
String serverAddr = "127.0.0.1:8848";
String dataId = "nacos-simple-demo";
String group = "DEFAULT_GROUP";
String namespace = "c1f1507f-bb5a-401d-967c-780fb00f9e81"; //命名空间ID
Properties properties = new Properties();
properties.put("serverAddr",serverAddr);
properties.put("namespace",namespace);
ConfigService configService = NacosFactory.createConfigService(properties);
String content = configService.getConfig(dataId,group,2000);
return content;
}
}
需要添加对namespace的设置,大概就这样
4. Nacos ui界面介绍
主要看一下圈上的部分,服务管理和集群管理的话,等一下再说!下面就是介绍一下功能点吧,具体的自己尝试一下就了解了
-
配置管理中配置列表是我们刚刚接触过的,里边可以添加、查询、导出、导入配置信息;
-
配置管理中的历史版本类似于git上的版本管理,其实就是记录30天内修改配置信息的记录,然后如果有需要的话,可以回退到任何版本;
-
监听查询:这个是当配置信息改变的时候,我们不可能重启服务再此加载配置信息,这个时候在程序中建立一个监听,就可以时刻获取到新修改的配置信息了;
-
权限控制下是对访问ui界面的用户权限做出的修改,可以在里边创建用户、修改用户密码、权限等。其实就是一个用户、角色、权限这三者的基本信息的设置页面
-
命名空间:这个刚刚有提到,就是创建新的命名空间的
具体的自己操作一下,理解更加深刻 -
nacos ui界面的密码其实是Dcrypt加密的,我们也可以直接修改数据库进行密码修改
四、Nacos与springCloud配置获取
这个其实就是在一个SpringCloud项目中如何获取Nacos的配置中心的配置信息,这个直接看Demo就好了,目前我写的博客感觉不涉及高深的东西,都是常规的使用,多说一句,所谓的高深也就是涉及多种个人不理解的方面,所以才高深
Demo
- 依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId