1. 概念
Nacos 是阿里巴巴的开源的项目,全称 Naming Configuration Service,注册中心和配置中心是其提供的两大功能。注册中心即提供服务注册和服务发现功能。因此Nacos 还是 Spring Cloud Alibaba 组件之一,负责服务注册与发现。
综述:Nacos 就是注册中心 + 配置中心的组合,解决微服务开发涉及到的服务注册与发现,服务配置,服务管理等问题。
1.1 Nacos注册中心
作为注册中心,Nacos与Dubbo使用的zookeeper相比而言,两者差异还是比较大的,两种差异在于:
- zookeeper是一种分布式的协调服务,它天生是作为分布式数据一致性场景下的解决方案,所以zookeeper是CP的,
它牺牲了可用性来保证一致性
,在极端情况下(master选举期间)服务会对外停止,对于服务可用性要求比较高的系统是难以接受的。 - Nacos是一种去中心化的架构,属于CAP理论里的AP架构,支持最终一致性,在分布式服务发现与注册场景下具有很不错的性能。目前dubbo官方也支持使用Nacos代替zookeeper。
注册中心原理
1.2 Nacos配置中心
动态配置管理是配置中心的功能,通过动态配置服务,我们可以在所有环境中以集中和动态的方式管理所有应用程序或服务的配置信息。这种服务能够让我们的服务拥有更多的灵活性,不需要重启服务即可做到配置实时生效,非常适合于“配置优先”的服务开发。动态配置中心可以实现配置更新时无需重新部署应用程序和服务即可使相应的配置信息生效,这极大了增加了系统的运维能力。
2.部署方法
2.1 安装下载
支持windows和linux,下载地址,版本情况如下:
- nacos-server-2.0.0-ALPHA.2.tar.gz 已编译Linux和macOS格式
- nacos-server-2.0.0-ALPHA.2.zip windows版本
- Source code(zip) windows版本源码
- Source code (tar.gz) Linux和macOS格式源码
2.2 启动
Nacos支持多种方式:
- 单机模式 - 用于测试和单机试用。
- 集群模式 - 用于生产环境,确保高可用。
- 多集群模式 - 用于多数据中心场景。
因此根据不同平台,执行不同的配置操作:
(1)单机模式
两种方式处理:
方法一:修改bin目录下的startup.cmd文件,将set MODE="cluster"一行改成set MODE="standalone",然后直接运行startup.cmd。运行成功后,访问http://localhost:8848/nacos可以查看Nacos的主页,默认账号密码都是nacos。
方法二:执行以下命令
Linux/Unix/Mac:sh startup.sh -m standalone
Windows:cmd startup.cmd -m standalone
注意执行命令之前看是否存在环境变量,没有可以在startup.cmd设置
set "JAVA=C:\Program Files\Java\jre1.8.0_144\bin\java.exe"
(1)数据库集群模式
conf 目录找到相关配置,然后进行修改操作:
- 根据nacos-mysql.sql 初始化SQL
创建数据库,库名:nacos_config,字符集:utf8 — UTF-8 Unicode,排序规则:utf8_general_ci,nacos/conf/nacos-mysql.sql文件里的sql脚本执行到上面新建的数据库中。 - 修改nacos/conf/application.properties配置文件
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
- 维持bin目录下的startup.cmd文件中的set MODE="cluster"这一行不变,然后将nacos/conf/cluster.conf.example文件复制一份改名为cluster.conf,但是要保持里面内容为空。
-
启动bin目录下的startup.cmd文件,启动成功之后效果如下: