一、Nacos 入門與概述
Nacos 是一個基於 Java 實現並用於發現、配置和管理微服務的開源平台。Nacos 支持幾乎所有主流類型的服務,例如 K8s、Spring Cloud、Dubbo、gRPC 和 Mesos。Nacos 具有高伸縮性和高可用性,並提供一組易於用於擴展和開發的簡單 API。以下是一些 Nacos 目前支持的功能特點:
1. 服務發現和健康檢查;
2. 動態配置服務;
3. 動態 DNS 服務;
4. 服務和配置的管理平台。
Nacos 可以用作這些目的的獨立組件,或與服務相關的其他組件(如 Spring Cloud、Dubbo、gRPC)一起使用。
二、Nacos 動態配置服務
Nacos 作為為應用程序提供動態配置服務的一種工具,並且 Nacos 提供了全方位的修改配置、刷新配置等功能。以 Spring Cloud 為例,在 Spring Cloud 項目的 bootstrap.properties(或者是 bootstrap.yml/yaml 等,根據實際使用情況設置)中將 Nacos 的地址、命名空間、應用和配置文件信息配置好,就可以實現 Nacos 開箱即用的功能。
1. @RefreshScope
註解:通過該註解標註的 Bean 會被 Actuator 暴露出來,從而實現在不重啟應用的情況下變更配置;
2. @Value
註解:獲取 Nacos 配置中心中對應的配置項並將其注入到應用程序中,在應用程序中對這個配置項的改變也會實時同步到配置中心中;
3. curl
命令與 Nacos REST API:可以通過 curl 命令或者 Nacos 提供的 REST API 來實現動態操作。
以下是一個使用 Nacos 動態配置服務的示例:
@RestController
public class TestController {
@Value("${test.config.param1}")
private String configParam1;
@GetMapping("/test/config")
public String getConfigParam(){
return configParam1;
}
}
三、Nacos 服務註冊與發現
Nacos 服務註冊與發現 是一種基於服務-註冊-發現體系結構的組件,可以與 Framework 集成,實現自動完成服務註冊與發現的功能。可以通過 HTTP、DNS 和 RPC 等多種協議進行服務的註冊和發現。
Nacos 支持的服務註冊與發現協議:
1. Apache Dubbo RPC;
2. Spring Cloud REST(尤其是 Spring Cloud Alibaba)、Feign、Ribbon;
3. motan RPC。
Nacos 提供一個易於使用的控制台,通過控制台可以輕鬆進行服務註冊、發現、治理和管理工作。控制台的使用者不僅可以使用基於發布訂閱、心跳檢測、權重和嵌套命名空間等自然可擴展的機制註冊和發現服務,還可以使用控制台方便快捷地實現服務集成和跨平台。
以下是一個使用 Nacos 服務註冊與發現的示例:
@RestController
public class TestController {
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/test/discovery")
public String getDiscoveryInfo(){
List services = discoveryClient.getServices();
return services.toString();
}
}
四、Nacos 動態 DNS 服務
Nacos 動態 DNS 服務,基於 DNS-Server 領域知識經驗,實現了一套高可用高並發的,支持動態 IP 變更場景的 DNS 服務。使用 Nacos 的動態 DNS 服務幾乎不需要改變代碼,只需要修改域名系統即可完成全網的數據中心服務治理。Nacos 的 DNS 服務具有以下特點:
1. 動態的 DNS 解析:支持 DNS 解析中間件通過 API 動態向 DNS 服務註冊、反註冊信息;
2. 動態地支持多數據中心:默認情況下,某個集群的 DNS 服務只返回當前數據中心的 IP 信息。如果您需要查詢多個數據中心的 IP,可以設置相應的參數;
3. 全局負載均衡:
4. DNS Cache 與遠程配置更新。
以下是一個使用 Nacos 動態 DNS 服務的示例:
dns.lookup('service.hello.example.com', (err, addresses, family) => {
console.log('addresses:', addresses);
});
五、Nacos 管理平台
Nacos 平台管理界面通過Web界面實現了對服務、配置、實例等內容的管理。其中最為核心的是發布配置的功能,在“配置管理”中可以查看所有的配置,當需要新增一個配置時,可以通過點擊右側“新增配置”按鈕進行配置發布。主要功能如下:
1. 集群管理:當有多台機器部署時,需要將他們組成一個集群,以便進行集中管理;
2. 服務列表:查看已經註冊的所有服務;
3. 服務監控:對已經註冊的服務進行實時監控,可以查看實例列表、運行狀態和 metrics 指標;
4. 配置列表:查看所有已發布的配置;
5. 命名空間:通過命名空間實現不同業務線之間的非法互訪。
六、Nacos 高可用性與伸縮性
Nacos 支持主備模式(master-slave),高可用模式(Standalone),多機房跨地域部署,在極端情況下也可以採用分區模式等多種部署方式,充分滿足各類業務場景需求。這些機制使得 Nacos 具備極高的可用性和伸縮性,能輕鬆實現在大規模的場景下的服務發現、配置管理等任務。
總結
本文通過對於 Nacos Github 的全面介紹,詳細介紹了 Nacos 的入門原理、核心功能以及應用場景。希望讀者能夠對於 Nacos 有更深入的了解,以此為契機,不斷學習、實踐,提高自身水平能力。
原創文章,作者:XTGWV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/361792.html