一、Nacos安裝部署
下載Nacos安裝包:https://github.com/alibaba/nacos/releases。
解壓後目錄結構如下:
啓動腳本在bin目錄下:
1、單機安裝
windows下:
startup.cmd -m standalone
Linux下:
startup.sh -m standalone
下面以windows安裝爲例演示:
啓動成功後,訪問:http://127.0.0.1:8848/nacos/, 用戶名/密碼 默認:nacos/nacos
2、集羣安裝
以windows安裝爲例
將解壓後的文件夾再複製2份,共3份,使用本地測試,本地IP爲192.168.0.105,使用不同端口來區分
nacos-1: 192.168.0.105:8848
nacos-2: 192.168.0.105:8849
nacos-3: 192.168.0.105:8850
修改conf/cluster.conf(沒有的話,新增一個)內容如下:
192.168.0.105:8848
192.168.0.105:8849
192.168.0.105:8850
nacos-1、nacos-2、nacos-3 都修改爲以上內容;
新增mysql數據庫:nacos,將conf/nacos-mysql.sql 腳本導入到nacos數據庫中;
修改conf/application.properties配置文件(3個文件夾下server.port都相應調整下):
server.port=8848
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=nacos
db.password=nacos
配置修改完成後,分別到nacos-1/bin, nacos-2/bin, nacos-3/bin 文件夾下,使用命令啓動
startup.cmd -m cluster
集羣啓動成功後,可以在nacos後臺查看:
二、與SpringCloud整合
新建maven項目:springcloud-nacos
添加依賴:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
在bootstrap.yml(一定是bootstrap.yml文件,不是application.yml文件)文件配置以下內容:
spring:
application:
name: nacos
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
prefix: nacos
profiles:
active: dev
在上面的配置中,配置了nacos config server的地址,配置的擴展名是ymal(目前僅支持ymal和properties)。注意是沒有配置server.port的,sever.port的屬性在nacos中配置。上面的配置是和Nacos中的dataId 的格式是對應的,nacos的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix 默認爲 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
spring.profile.active 即爲當前環境對應的 profile,詳情可以參考 Spring Boot文檔。 注意:當 spring.profile.active 爲空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
file-exetension 爲配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型。
進入Nacos Console,新建一個Data ID。
新建啓動類如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class, args);
}
}
新建Controller,加上@RefreshScope註解
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class ConfigController {
@Value("${username}")
private String username;
@RequestMapping("username")
public String getConfig() {
return username;
}
}
啓動NacosApplication ,從控制檯可以看出,tomcat端口號從nacos中讀取8081。
此時訪問:http://127.0.0.1:8081/username,可以看到返回配置的內容:Jason,此時修改nacos中 username的值,會立即同步到應用中。