1.1 介紹
一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平台。
Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平台。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務范式、雲原生范式) 的服務基礎設施。
其他相關產品 consul 等也要服務注冊和管理的功能
Nacos 的關鍵特性:
1. 服務發現和服務健康監測
2. 動態配置服務
3. 動態 DNS 服務
4. 服務及其元數據管理
......
1.2 nacos生態
1.3 安裝
推薦的穩定版本為1.4.2或2.0.1。
1.3.1 下載
准備工作:
1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac。
2. 64 bit JDK 1.8+;
3. Maven 3.2.x+;
github下載地址:https://github.com/alibaba/nacos.git
本次以1.3.2為例進行介紹,大家盡量選擇穩定版本
bin : 命令夾
conf: 配置文件夾
data: 輔助數據文件夾
logs : 日志文件夾
target: 編譯文件夾
1.3.2 啟動
nacos有兩種啟動方式
- 單節點啟動
- 集群啟動 (修改以下兩個文件)
- conf/cluster.conf
- conf/application.properties
- 修改配置文件
#*************** Config Module Related Configurations ***************#
### 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-conf?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
- 數據庫文件導入
把conf文件夾下的mysql文件導入到創建好的數據庫中,與步驟1的鏈接數據庫保持一致
- nacos啟動
Linux/Unix/Mac
啟動命令(standalone代表着單機模式運行,非集群模式):
sh startup.sh -m standalone
ubuntu
bash startup.sh -m standalone
Windows
啟動命令(standalone代表着單機模式運行,非集群模式):
startup.cmd -m standalone
1.3.3 web頁面訪問
默認用戶名密碼 是 nacos/nacos
----到這nacos就搭建完成了
1.4 web頁面
下面主要介紹nacos的web頁面
2. nacos集成
2.1 springboot集成
# 注意: 版本 0.2.x.RELEASE 對應的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 對應的是 Spring Boot 1.x 版本。
項目初始化搭建,引入jar包
<!--引入nacos配置包 讀取nacos上配置文件需要這個包-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.1</version>
</dependency>
<!--引入nacos服務注冊包-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.1</version>
</dependency>
<!--引入nacos-client包 個別需要加 不加會報nacos api的錯-->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>0.6.2</version>
</dependency>
ps: 注意 nacos-client的版本與上面nacos-config的有個對應關系
初始化項目
@SpringBootApplication
public class CloudNacosApplication {
@NacosInjected
private NamingService namingService;
@Value("${server.port}")
private int serverPort;
@Value("${spring.application.name}")
private String applicationName;
// 現在采用原生的nacos+springboot 需要自己手動注冊到nacos上 后期可以使用ali的nacos包,使用注解@EnableDiscoveryClient
@PostConstruct
public void registerInstance() throws NacosException {
namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
}
public static void main(String[] args) {
SpringApplication.run(CloudNacosApplication.class, args);
}
}
# 服務注冊名 單例名稱 唯一
spring:
application:
name: cloud-nacos
# 端口
server:
port: 8080
# 服務注冊地址 nacos地址
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
注冊服務,啟動項目去nacos上查看服務已經注冊
讀取配置文件 測試類如下,nacos配置文件如下
@RestController
@NacosPropertySource(dataId = "huhy-dev",autoRefreshed = true)
public class NacosConfiigController {
@NacosValue(value = "${huhy.username:yang}",autoRefreshed = true)
private String username;
/**
* 測試nacosvalue獲取配置文件屬性
* @return
*/
@GetMapping("/getUsername")
public String getUserName(){
return "hello "+ username;
}
}
接口測試
## 注意 先了解,后期介紹nacos+springcloud的時候詳細解析
1. @NacosValue 和 @Value的注解區別
2. @RefreshScope