一、参考书籍
《Nacos架构&原理》
电子版下载地址:https://developer.aliyun.com/ebook/36
二、搭建nacos服务端
1,nacos官网下载
https://github.com/alibaba/nacos/releases
2,解压,修改配置文件,指定nacos连接的数据库配置
nacos/conf/application.properties
3,创建本地数据库,运行nacos初始化的sql
创建application.properties配置名称的数据库,运行nacos/conf/nacos-mysql.sql
4,运行nacos
先使用单机模式运行
cd nacos安装目录\nacos\bin
startup.cmd -m standalone
访问http://localhost:8848/nacos,查看运行效果
三、搭建nacos客户端
以springCloud + nacos为例
1,创建父工程
new project -> maven -> next ... -> finish
删除src目录,只保留pom.xml
指定maven-settings.xml:settings -> 搜索maven,修改相关配置
settings.xml示例如下:
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>E:\frr_repository_nacosdemo</localRepository> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings> 父工程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>org.example</groupId> <artifactId>nacos-father</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <packaging>pom</packaging> <modules> <module>待会儿创建的子工程</module> </modules> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <spring-cloud.version>2021.0.2</spring-cloud.version> <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version> </properties> <dependencyManagement> <dependencies> <!--Spring Cloud 相关依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--Spring Cloud & Alibaba 相关依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
2,创建子工程
右击父项目 -> new -> module -> spring initializr -> next ... -> finish
子工程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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.example</groupId> <artifactId>nacos-father</artifactId> <version>1.0-SNAPSHOT</version> </parent> <groupId>com.example</groupId> <artifactId>nacos-son-one</artifactId> <version>0.0.1-SNAPSHOT</version> <name>nacos-son-one</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Spring Cloud & Alibaba --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> <!-- 注册中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>
3,创建nacos的namespace,在服务端页面
在nacos服务端页面配置的相关信息都是保存在数据库对应的表中。
4,客户端nacos配置
在src-main-resource下新建bootstrap.yml文件: server: port: 8989 spring: application: # 应用名称 name: nacos-son-one profiles: active: test cloud: nacos: discovery: server-addr: http://localhost:8848 namespace: e6f53299-e336-4583-b1b6-d09675d70b49 username: nacos password: nacos config: server-addr: http://localhost:8848 namespace: e6f53299-e336-4583-b1b6-d09675d70b49 username: nacos password: nacos file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 其中,discovery是注册中心相关配置,config是配置中心相关配置
四、测试客户端获取服务端配置
按照约定,在服务端创建客户端对应的配置,一般为:应用名称-active.yml
客户端编写代码,测试获取这个配置
1,为何无法动态获取配置
修改服务端配置的值,客户端无法动态刷新获取
是因为这个controller的bean已经生成,后续没有动作去刷新这个值。
2,动态获取配置
2.1,使用spring的@RefreshScope
2.2,使用nacos的相关注解
由于cloud版本等相关问题,此处使用springboot项目为例:
重新新建一个springboot项目
五、服务注册和发现
关于nacos的openfeign工作原理:https://blog.csdn.net/qindalele/article/details/122444238
1,父工程下添加一个新模块
复制nacos-son-one,修改相关名字
2,消费者模块修改
六、集群
Nacos目录复制3份
每份都修改下端口;
配置下cluster.conf:
127.0.0.1:8845
127.0.0.1:8744
127.0.0.1:8847
每份bin目录下cmd启动
Nginx配置和启动
nacos客户端测试集群
两个模块都改成集群地址
测试关闭其中两个nacos后,也是可以正常获取配置的
标签:springcloud,配置,boot,nacos,spring,org,cloud From: https://www.cnblogs.com/seeall/p/16832137.html