Java微服務(wù)之nacos的使用及說(shuō)明
Nacos 簡(jiǎn)介
Nacos 是阿里巴巴開源的一個(gè)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)。Nacos 支持幾乎所有主流類型的服務(wù)發(fā)現(xiàn)、配置和管理,包括 Kubernetes 服務(wù)、Spring Cloud 服務(wù)、Dubbo 服務(wù)等。
Nacos 的核心功能包括服務(wù)注冊(cè)與發(fā)現(xiàn)、動(dòng)態(tài)配置服務(wù)、動(dòng)態(tài) DNS 服務(wù)和元數(shù)據(jù)管理。
Nacos 名稱來(lái)源于“Naming”和“Configuration”的組合,即“命名”和“配置”。Nacos 的設(shè)計(jì)目標(biāo)是簡(jiǎn)化微服務(wù)架構(gòu)中的服務(wù)治理和配置管理,提供高可用、高性能和易擴(kuò)展的解決方案。
Nacos 核心功能
服務(wù)注冊(cè)與發(fā)現(xiàn)
Nacos 支持服務(wù)的自動(dòng)注冊(cè)與發(fā)現(xiàn)。服務(wù)提供者啟動(dòng)時(shí)向 Nacos 注冊(cè)自己的服務(wù),服務(wù)消費(fèi)者通過(guò) Nacos 獲取服務(wù)提供者的地址列表,實(shí)現(xiàn)服務(wù)的動(dòng)態(tài)調(diào)用。
動(dòng)態(tài)配置服務(wù)
Nacos 提供動(dòng)態(tài)配置管理功能,支持配置的動(dòng)態(tài)更新和推送。配置變更時(shí),Nacos 會(huì)實(shí)時(shí)通知訂閱該配置的服務(wù),無(wú)需重啟服務(wù)即可生效。
動(dòng)態(tài) DNS 服務(wù)
Nacos 支持基于 DNS 的服務(wù)發(fā)現(xiàn),可以將服務(wù)名解析為具體的 IP 地址和端口。Nacos 還支持權(quán)重路由和健康檢查,確保流量的合理分配。
元數(shù)據(jù)管理
Nacos 支持服務(wù)的元數(shù)據(jù)管理,可以為服務(wù)添加自定義的標(biāo)簽和屬性,便于服務(wù)的分類和篩選。
Nacos 安裝與部署
Nacos 支持多種部署方式,包括單機(jī)模式、集群模式和 Docker 部署。以下以單機(jī)模式為例介紹 Nacos 的安裝步驟。
下載 Nacos
從 Nacos 的 GitHub 倉(cāng)庫(kù)下載最新版本的安裝包:
wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz
解壓并啟動(dòng)
解壓下載的安裝包并啟動(dòng) Nacos:
tar -xvf nacos-server-2.0.3.tar.gz cd nacos/bin sh startup.sh -m standalone
訪問(wèn)控制臺(tái)
啟動(dòng)成功后,訪問(wèn) http://localhost:8848/nacos,默認(rèn)用戶名和密碼均為 nacos。
Nacos 服務(wù)注冊(cè)與發(fā)現(xiàn)
以下通過(guò)一個(gè)簡(jiǎn)單的 Spring Boot 項(xiàng)目演示如何使用 Nacos 進(jìn)行服務(wù)注冊(cè)與發(fā)現(xiàn)。
創(chuàng)建 Spring Boot 項(xiàng)目
創(chuàng)建一個(gè) Spring Boot 項(xiàng)目,添加以下依賴:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
配置 Nacos 服務(wù)器地址
在 application.yml 中配置 Nacos 服務(wù)器地址:
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: nacos-demo
啟動(dòng)服務(wù)
啟動(dòng) Spring Boot 項(xiàng)目,服務(wù)會(huì)自動(dòng)注冊(cè)到 Nacos。打開 Nacos 控制臺(tái),可以在“服務(wù)列表”中看到注冊(cè)的服務(wù)。
服務(wù)調(diào)用
通過(guò) RestTemplate 或 Feign 調(diào)用其他服務(wù):
@RestController
public class DemoController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/call")
public String call() {
return restTemplate.getForObject("http://nacos-demo/hello", String.class);
}
}
Nacos 動(dòng)態(tài)配置管理
Nacos 的動(dòng)態(tài)配置管理功能允許在不重啟服務(wù)的情況下更新配置。以下演示如何使用 Nacos 管理配置。
添加配置管理依賴
在項(xiàng)目中添加以下依賴:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
創(chuàng)建配置文件
在 Nacos 控制臺(tái)中創(chuàng)建一個(gè)配置,Data ID 為 nacos-demo.properties,內(nèi)容如下:
demo.message=Hello Nacos
加載配置
在 bootstrap.yml 中配置 Nacos 服務(wù)器地址和數(shù)據(jù) ID:
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: properties
name: nacos-demo
使用配置
通過(guò) @Value 注解獲取配置值:
@RestController
public class ConfigController {
@Value("${demo.message}")
private String message;
@GetMapping("/message")
public String getMessage() {
return message;
}
}
動(dòng)態(tài)更新配置
在 Nacos 控制臺(tái)中修改 demo.message 的值,服務(wù)會(huì)實(shí)時(shí)獲取最新的配置。
Nacos 高級(jí)特性
命名空間
Nacos 支持多命名空間,用于隔離不同環(huán)境或團(tuán)隊(duì)的配置和服務(wù)??梢栽?application.yml 中指定命名空間:
spring:
cloud:
nacos:
discovery:
namespace: dev
config:
namespace: dev
配置分組
Nacos 支持配置分組,可以對(duì)配置進(jìn)行邏輯隔離??梢栽?bootstrap.yml 中指定分組:
spring:
cloud:
nacos:
config:
group: DEFAULT_GROUP
健康檢查
Nacos 提供健康檢查機(jī)制,自動(dòng)剔除不健康的服務(wù)實(shí)例??梢酝ㄟ^(guò)以下配置調(diào)整健康檢查的間隔:
spring:
cloud:
nacos:
discovery:
heartbeat-interval: 5000
heartbeat-timeout: 15000
Nacos 集群部署
為了提高可用性,Nacos 支持集群部署。以下是集群部署的步驟。
修改集群配置
在 conf/cluster.conf 中配置集群節(jié)點(diǎn)的 IP 和端口:
192.168.1.1:8848 192.168.1.2:8848 192.168.1.3:8848
啟動(dòng)集群
在每個(gè)節(jié)點(diǎn)上啟動(dòng) Nacos:
sh startup.sh
配置負(fù)載均衡
通過(guò) Nginx 或其他負(fù)載均衡工具將請(qǐng)求分發(fā)到集群節(jié)點(diǎn):
upstream nacos-cluster {
server 192.168.1.1:8848;
server 192.168.1.2:8848;
server 192.168.1.3:8848;
}
server {
listen 8848;
server_name localhost;
location / {
proxy_pass http://nacos-cluster;
}
}
總結(jié)
Nacos 是一個(gè)功能強(qiáng)大的服務(wù)發(fā)現(xiàn)和配置管理平臺(tái),支持動(dòng)態(tài)服務(wù)注冊(cè)、配置管理和健康檢查。
通過(guò)本文的介紹,可以了解 Nacos 的基本功能和使用方法,并掌握其高級(jí)特性和集群部署方式。
Nacos 的易用性和高性能使其成為微服務(wù)架構(gòu)中的理想選擇。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 使用JAVA獲取nacos配置信息出現(xiàn)null,獲取不到的解決
- java動(dòng)態(tài)修改nacos的yml配置方式
- Java實(shí)現(xiàn)Consul/Nacos根據(jù)GPU型號(hào)、顯存余量執(zhí)行負(fù)載均衡的步驟詳解
- Java?Nacos與Gateway的使用操作筆記
- 解決nacos報(bào)錯(cuò)java.lang.ClassNotFoundException: com.netflix.config.DynamicPropertyFactory的問(wèn)題
- 解決Nacos集群?jiǎn)?dòng)失敗:java版本問(wèn)題
相關(guān)文章
Spring常用注解及自定義Filter的實(shí)現(xiàn)
這篇文章主要介紹了Spring常用注解及自定義Filter的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
springboot lua檢查redis庫(kù)存的實(shí)現(xiàn)示例
本文主要介紹了springboot lua檢查redis庫(kù)存的實(shí)現(xiàn)示例,為了優(yōu)化性能,通過(guò)Lua腳本實(shí)現(xiàn)對(duì)多個(gè)馬戲場(chǎng)次下的座位等席的庫(kù)存余量檢查,感興趣的可以了解一下2024-09-09
springboot后端使用LocalDate接收日期的問(wèn)題解決
在做Java開發(fā)時(shí),肯定會(huì)碰到傳遞時(shí)間參數(shù)的情況,本文主要介紹了springboot后端使用LocalDate接收日期的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
用IDEA創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)步驟記錄
Idea有著非常簡(jiǎn)便的Spring Boot新建過(guò)程,同時(shí)依靠pom自動(dòng)下載依賴,下面這篇文章主要給大家介紹了關(guān)于用IDEA創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
MyBatis實(shí)現(xiàn)動(dòng)態(tài)SQL的實(shí)現(xiàn)方法
這篇文章主要介紹了MyBatis實(shí)現(xiàn)動(dòng)態(tài)SQL的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
java異常處理執(zhí)行順序詳解try catch finally
try catch語(yǔ)句是java語(yǔ)言用于捕獲異常并進(jìn)行處理的標(biāo)準(zhǔn)方式,對(duì)于try catch及try catch finally執(zhí)行順序必須有深入的了解2021-10-10

