java B2B2C 原始碼多租戶電子商城系統-Spring Cloud整合Netflix Archaius介紹

weixin_33762321發表於2019-01-18

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());
	}
}
複製程式碼

java B2B2C 原始碼多租戶電子商城系統

相關文章