SpringCloud Alibaba Nacos 服务治理中心
一、什么是Nacos?
英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民
二、Nacos能干吗?
Nacos根据官网介绍致力于发现、配置和管理微服务。Nacos既能作为SpringCloud中的Erueka组件又能作为SpringCloud中的Config组件并且Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
三、Nacos关键特性
Nacos 支持基于 DNS 和基于 RPC 的服务发现。
- 服务发现和服务健康监测
- 动态配置服务
- 动态 DNS 服务
- 服务及其元数据管理
四、Nacos中的基本概念
服务:通过预定义接口网络访问的提供给客户端的软件功能。
配置:在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。
命名空间:用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
服务注册中心:存储服务实例和服务负载均衡策略的数据库。
服务发现: 在计算机网络上,(通常使用服务名)对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。
五、如何安装部署Nacos?
通过官方直接下载发布版本:https://github.com/alibaba/nacos/releases/download/1.1.0/nacos-server-1.1.0.tar.gz解压即可运行
这里通过源码编译形式进行安装,也可以直接在官网发布版本中找到适应的版本进行使用。
由于我这里访问github网络不行所以就直接在码云拉源码了。
git clone https://gitee.com/mirrors/Nacos.git
后面脚手架使用的全部版本是1.1.0
版本所有我这里切换对应版本进行打包
#切换到1.1.0标签
git checkout 1.1.0
#进入Nacos目录,进行打包
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
#打包好后Nacos\distribution\target目录中会出现一个zip和tar
#nacos-server-1.1.0.tar.gz
#nacos-server-1.1.0.zip
我这里直接使用zip压缩包在windows环境下进行使用,解压后目录如下
bin 存放可执行脚本
conf 运行时的配置
plugins 插件
target 打包后的jar包
windows环境下运行bin目录下的startup.cmd即可,等待启动完成后访问:http://localhost:8848/nacos
如果使用Linux系统运行则sh startup.sh -m standalone
代表着单机模式运行。
默认登陆账号与密码为:nacos\nacos登陆后页面展示如下
配置管理则是我们在程序中使用的配置如SpringBoot读取的properties都可以存放在这里。
服务管理根据名字就清楚是对注册到Nacos上的服务进行管理的功能啦。
集群管理则指是Nacos集群而不是应用程序集群。
命名空间是此做多环境以及多租户(多个用户共同使用nacos)数据(配置和服务)隔离的,相当于SpringBoot 配置文件中的spring.profiles。
六、Nacos数据持久化
当我们使用默认配置启动Nacos时,所有配置文件都被Nacos保存在了内置的数据库中。
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力;如果使用内嵌数据库,注定会有存储上限,且无法移植。
在Nacos的conf目录下nacos-mysql.sql创建一个数据库运行脚本,然后在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&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
然后创建的配置会持久化到配置的数据库中。
Nacos注册中心/配置中心二合一我觉得非常好用,比起SpringCloud 需要Eureka于Config两个服务。不过二合一也并非优点,打个简单的比方在不需要配置中心的情况下Nacos的配置管理就显得多余了。