一、Nacos配置中心原理
Nacos是一個分佈式的服務中心,除了配置中心之外,還具備服務的註冊、發現和配置管理等功能。在Nacos中,配置中心的核心原理是使用數據庫進行數據存儲,為了保證高可用性和容錯性,Nacos同時支持集群搭建和數據同步機制。
在配置中心的架構設計上,Nacos採用了類似Raft算法的CAP原理,即對於一個分佈式系統,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分區容錯性)這三個要素是無法同時滿足的,必須在其中選擇兩個做出妥協。在Nacos中,Nacos的集群搭建,主要解決的是一致性和可用性的問題。
當我們在應用程序中調用Nacos服務時,首先我們會通過服務的名字來查詢Nacos服務端的IP列表,這些服務應該都有相同的功能,我們可以使用其中任何一個節點。而對於配置中心來說,使用Nacos的客戶端會在本地的緩存中持有一個配置的快照,如果本地緩存中沒有找到對應的配置信息,那麼Nacos會根據策略去進行數據存儲,它是基於標籤來區分數據的,相同標籤的數據會放在同一個數據存儲節點上。
二、Nacos配置
Nacos配置分為自動和手動兩種方式,手動配置需要手工的在Nacos後台進行修改,而對於自動配置來說,Nacos通過監聽配置信息的變更,及時的將配置更新到各個應用程序中。
//配置中心的自動配置 @Configuration @EnableDiscoveryClient @EnableFeignClients @RefreshScope public class AppConfig { //配置中心對應的配置文件名稱 @Value("${config.name:config}") private String configName; //配置中心對應的配置文件版本號 @Value("${config.version:1.0}") private String configVersion; //配置中心對應的配置文件分組名稱 @Value("${config.group:DEFAULT_GROUP}") private String configGroup; //配置中心的配置信息 //用戶信息 @Value("${user.info:}") private String userInfo; //部門信息 @Value("${dept.info:}") private String deptInfo; //企業名稱 @Value("${company.name:}") private String companyName; ... //省略其他配置 // 對於Nacos配置信息變更,會自動刷新使用@RefreshScope標註的內容 @RefreshScope @Bean public AppConfig appConfig() { return new AppConfig(); } }
三、Nacos配置中心讀取不到配置信息
如果在應用程序中使用Nacos配置中心,發現讀取不到對應的配置信息,可以從以下幾個方面進行排查。
1.檢查配置文件名稱、版本和分組是否與Nacos上的一致;
2.檢查網絡是否正常,可以嘗試使用telnet命令檢查是否可以連通。
3.在啟動過程中,檢查Nacos服務是否正常,如果Nacos服務無法正常啟動,再次嘗試。
四、Nacos配置中心指定配置
在應用程序中如果需要指定特定的配置信息進行讀取,可以使用Nacos提供的API來完成,如下所示示例代碼:
//指定讀取Nacos中的配置信息 NacosConfigService nacosConfigService = new NacosConfigService(configServerAddress, configName, configGroup, configVersion); String userInfo = nacosConfigService.getConfig("user.info", 1000);
五、Nacos配置中心密碼加密
Nacos支持對敏感信息進行加密,並且支持使用AES或者DES算法加密,這裡以AES為例,示例代碼如下。
//將需要加密的敏感信息寫入到對應的文件中。 userInfo=accesskey=AES.encrypt(secKey,YWOE9C)
六、Nacos配置中心源碼
Nacos的源碼使用Java語言編寫,使用了Spring Cloud框架和Dubbo框架,其中,配置中心的部分代碼是在「nacos-config-server」項目中完成的。在源碼中,Nacos提供了上百個API,充分的說明了Nacos的強大和高可用性。
七、Nacos配置中心熱更新原理
在Nacos配置中心中,配置信息的變更實時通知各個應用程序,從進而實現了熱更新的效果。Nacos實現熱更新的方式,是通過使用監聽組件來實現的,應用程序負責監聽Nacos的配置中心,一旦出現變動,通知應用程序立即更新。
八、Nacos配置中心啟動錯誤
在啟動Nacos配置中心時,有可能會出現500錯誤,這個問題大多是由於默認的端口號被其他的進程所佔用導致的,解決方案如下:
1.通過命令行查找被佔用的端口號,執行命令:
netstat -aon|findstr "端口號"
2.通過終止對應的程序或者服務釋放相應的端口。
九、Nacos配置中心配置
Nacos的配置主要分為三步。
1.引入Nacos的pom依賴。
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos.version}</version> </dependency>
2.在應用程序中配置Nacos服務端地址、配置中心信息等相關信息。
spring: cloud: nacos: discovery: server-addr: localhost:8848 #nacos註冊中心地址 endpoint: localhost #nacos endpoint group: test-group #nacos註冊組名 namespace: codeyu #命名空間
3.使用@EnableDiscoveryClient註解來啟用Nacos的服務註冊和發現功能。
@SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
十、Nacos配置中心的作用
Nacos的配置中心在分佈式應用系統中起到了至關重要的作用,主要包括以下幾個方面。
1.配置管理:Nacos提供了統一的配置管理機制,可以將分佈式系統中的配置信息集中管理,大大降低了管理成本。
2.配置集成:Nacos支持常用的配置格式,比如XML、JSON等,可以方便的集成不同格式的配置文件。
3.可視化管理:Nacos的控制台提供了配置文件的可視化管理界面,管理員可以方便驗證配置信息的正確性,並且可以在控制台上進行修改、發佈等操作。
4.實時通知:Nacos的配置中心支持實時通知,可以將變更的信息及時通知到各個應用程序中,從而實現熱更新效果。
5.高可用和容災:Nacos配置中心可以輕鬆的搭建高可用集群,同時通過數據同步機制來實現容災性。
總結
本文從多個方面來全方位的解析了Nacos配置中心,包括Nacos配置中心的原理、Nacos配置、Nacos配置中心讀取不到配置信息、Nacos配置中心指定配置、Nacos配置中心密碼加密、Nacos配置中心源碼、配置中心熱更新、配置中心啟動錯誤、Nacos配置中心配置和配置中心的作用等等。對於Nacos新手來說,閱讀此文,能夠深入了解Nacos配置中心的各種細節和注意事項,是一篇值得收藏的好文。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/188333.html