1、概述
Netflix Archaius 是一個功能強大的配置管理庫。它是一個可用於從許多不同來源收集配置屬性的框架,提供對配置資訊的快速及執行緒安全訪問。
需要JAVA Spring Cloud大型企業分散式微服務雲構建的B2B2C電子商務平臺原始碼 一零三八七七四六二六
除此之外,Archaius允許屬性在執行時動態更改,使系統無需重新啟動應用程式即可獲得這些變化。
Netflix Archaius功能
眾所周知,Spring Boot已經提供了管理外部化配置的工具,為什麼還要設定不同的機制呢?
因為Archaius提供了一些其他任何配置框架都沒有考慮過的方便有趣的功能。其中的一些關鍵點是:
動態和型別屬性
在屬性改變時呼叫的回撥機制
動態配置源(如URL,JDBC和Amazon DynamoDB)的實現
Spring Boot Actuator或JConsole可以訪問的JMX MBean,用於檢查和操作屬性
動態屬性驗證
因此,Spring Cloud已經開發了一個庫,可以輕鬆配置“Spring Environment Bridge”,以便Archaius可以從Spring Environment中讀取屬性。
用法
一旦我們新增了所需的依賴項,我們就能夠訪問框架管理的屬性:
DynamicStringProperty propertyOneWithDynamic = DynamicPropertyFactory.getInstance()
.getStringProperty("springcloud.archaius.properties.one", "not found!");
String propertyCurrentValue = dynamicProperty.get();
複製程式碼
它是如何工作的?
首先,讓我們試著理解大局。
Archaius是Apache的Commons Configuration庫的擴充套件,新增了一些很好的功能,如動態源的輪詢框架,具有高吞吐量和執行緒安全的實現。
然後 spring-cloud-netflix-archaius 庫進入,合併所有不同的屬性源,並使用這些源自動配置Archaius工具。
2、 Netflix Archaius庫
它定義了一個複合配置,是可以從不同來源獲得的各種配置的集合。
此外,其中一些配置源可以支援在執行時輪詢更改。Archaius提供介面和一些預定義的實現來配置這些型別的源。
源集合是分層的,因此如果屬性存在於多個配置中,則最終值將是最頂部插槽中的值。
最後, ConfigurationManager處理系統範圍的配置和部署上下文。它可以安裝最終的複合配置,或檢索已安裝的複合配置進行修改。
3、 Spring Cloud支援
Spring Cloud Archaius庫的主要任務是將所有不同的配置源合併為 ConcurrentCompositeConfiguration,並使用ConfigurationManager進行安裝 。
庫定義源的優先順序是:
上下文中定義的任何Apache公共配置AbstractConfiguration bean
Autowired Spring ConfigurableEnvironment中定義的所有原始碼
預設的Archaius源,我們在上面的例子中看到過
Apache的SystemConfiguration和EnvironmentConfiguration 源
Spring Cloud庫提供的另一個有用功能是定義一個Actuator Endpoint 來監控屬性並與之互動。
使用Spring新增其他配置源
我們如何新增一個不同的配置源來由所描述的框架管理?我們如何管理優先順序高於Spring環境中定義的動態屬性?
為了簡單起見,我們將看到一個示例,我們配置一個類似於預設config.properties的屬性檔案,但其優先順序高於Spring環境和應用程式屬性的其餘部分:
@Configuration
public class ApplicationPropertiesConfigurations {
@Bean
public AbstractConfiguration addApplicationPropertiesSource() {
PolledConfigurationSource source = new URLConfigurationSource("classpath:other-config.properties");
return new DynamicConfiguration(source, new FixedDelayPollingScheduler());
}
}
複製程式碼