文章目录
Nacos
Nacos 简介
简介
Nacos是针对微服务架构中的服务发现、配置管理、服务治理的综合性解决方案。
特性
- 服务发现与服务健康检查
- 动态配置管理
- 动态DNS服务
- 服务和元数据管理
安装
-
下载压缩包
-
解压
-
启动服务
-
Windows
进入
bin
目录启动startup.cmd
-
Linux
进入
bin
目录执行命令sh shtartup.sh -m standalone
-
-
访问 http://localhost:8848/nacos/index.html
默认用户名:nacos,默认密码:nacos
-
外部mysql数据库支持
-
安装mysql数据库(5.6.5+)
-
创建数据库
nacos_config
,数据库初始化文件:nacos/conf/nacos-mysql.sql
-
修改
nacos/conf/application.properties
文件,增加mysql数据源配置spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456
-
Nacos 配置管理
Nacos 配置管理 - 基础应用
Nacos 配置管理模型
对于Nacos配置管理,通过Namespace、group、Data ID来定位到一个配置集。
-
配置集 (Data ID)
一个配置文件通常就是一个配置集
-
配置项
配置集中的包含的一个个配置内容就是配置项
-
配置分组 (Group)
不同配置分组下可以有相同的配置集
-
命名空间 (Namespace)
可用于进行不同环境的配置隔离。不同命名空间可以有相同的配置分组或配置集。
Nacos 配置管理 - Java实现
-
新建maven项目。
-
增加maven依赖
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.2.1</version> </dependency>
-
创建类,根据信息获取配置
public static void main(String[] args) throws NacosException { //nacos url String serverAddr = "127.0.0.1:8848"; //DataId String dataId = "db.properties"; //group String group = "DEFAULT_GROUP"; //namespace String namespace = "bfb75518-0f3d-47b1-b520-a27d21206013"; //属性 Properties properties = new Properties(); properties.put("serverAddr", serverAddr); //指定命名空间,若不指定则默认public //properties.put("namespace", namespace); //获取配置 ConfigService configService = NacosFactory.createConfigService(properties); String config = configService.getConfig(dataId, group, 5000); System.out.println(config); }
-
监听配置修改
configService.addListener(dataId, group, new Listener() { public Executor getExecutor() { return null; } public void receiveConfigInfo(String s) { System.out.println(s); } });
Nacos 配置管理 - 分布式系统应用
单一配置文件实现
-
创建父工程
pom.xml
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mervyn</groupId> <artifactId>nacos_config</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
-
创建子工程 service1、service2
pom.xml
<dependencies> <dependency> <groupId>com.alibab