Úvod do služby Netflix Archaius so službou Spring Cloud

1. Prehľad

Netflix Archaius je výkonná knižnica na správu konfigurácií.

Jednoducho povedané, je to rámec, ktorý možno použiť na zhromaždenie vlastností konfigurácie z mnohých rôznych zdrojov a ponúka k nim rýchly prístup bezpečný pre vlákna.

Knižnica navyše umožňuje dynamicky meniť vlastnosti za behu, čo umožňuje systému získať tieto variácie bez nutnosti reštartovať aplikáciu.

V tomto úvodnom tutoriáli nastavíme jednoduchú konfiguráciu Spring Cloud Archaius, vysvetlíme, čo sa deje pod kapotou, a nakoniec uvidíme, ako Spring umožní rozšírenie základného nastavenia.

2. Funkcie Netflix Archaius

Ako vieme, Spring Boot už poskytuje nástroje na správu externých konfigurácií, tak prečo sa trápiť nastavením iného mechanizmu?

No, Archaius ponúka niektoré užitočné a zaujímavé funkcie, s ktorými nepočíta žiadny iný konfiguračný rámec. Niektoré z jeho kľúčových bodov sú:

  • Dynamické a typové vlastnosti
  • Mechanizmus spätného volania, ktorý sa vyvolá pri mutáciách vlastností
  • Pripravené na použitie implementácií zdrojov dynamickej konfigurácie, ako sú adresy URL, JDBC a Amazon DynamoDB
  • JMX MBean, ku ktorému je možné získať prístup pomocou Spring Boot Actuator alebo JConsole na kontrolu a manipuláciu s vlastnosťami
  • Overenie dynamických vlastností

Tieto výhody môžu byť prospešné v mnohých scenároch.

Preto Spring Cloud pracoval na knižnici, ktorá umožňuje ľahko konfigurovať „Spring Environment Bridge“, aby Archaius mohol čítať vlastnosti z Spring Environment.

3. Závislosti

Pridajme spring-cloud-starter-netflix-archaius do našej aplikácie pridá do nášho projektu všetky potrebné závislosti.

Voliteľne môžeme aj pridať jar-cloud-netflix k nášmu dependencyManagement a spoliehajte sa na jeho špecifikáciu verzií artefaktov:

  org.springframework.cloud spring-cloud-starter-netflix-archaius org.springframework.cloud spring-cloud-netflix 2.0.1.RELEASE pom import 

Poznámka: môžeme skontrolovať Maven Central a overiť, že používame najnovšiu verziu štartovacej knižnice.

4. Použitie

Po pridaní požadovanej závislosti budeme mať prístup k vlastnostiam spravovaným rozhraním:

DynamicStringProperty dynamicProperty = DynamicPropertyFactory.getInstance () .getStringProperty ("baeldung.archaius.property", "predvolená hodnota"); String propertyCurrentValue = dynamicProperty.get ();

Poďme si na krátkom príklade pozrieť, ako je to dostupné ihneď po vybalení.

4.1. Rýchly príklad

Predvolene dynamicky spravuje všetky vlastnosti definované v súbore s názvom config.properties v triede aplikácie.

Poďme ho teda pridať do nášho priečinka s niektorými svojvoľnými vlastnosťami:

# config.properties baeldung.archaius.properties.one = one OD: config.properties

Teraz budeme potrebovať spôsob, ako skontrolovať hodnoty vlastností v ktoromkoľvek konkrétnom okamihu. V takom prípade vytvoríme a RestController ktorý načíta hodnoty ako odpoveď JSON:

@RestController verejná trieda ConfigPropertiesController {private DynamicStringProperty propertyOneWithDynamic = DynamicPropertyFactory.getInstance () .getStringProperty ("baeldung.archaius.properties.one", "nenájdený!"); @GetMapping ("/ property-from-dynamic-management") public String getPropertyValue () {return propertyOneWithDynamic.getName () + ":" + propertyOneWithDynamic.get (); }}

Vyskúšajme to. Na tento koncový bod môžeme poslať požiadavku a služba načíta hodnoty uložené v config.properties podľa očakávania.

Zatiaľ nič veľké, že? Dobre, poďme ďalej a zmeňme hodnoty vlastnosti v súbore classpath bez reštartovania služby. Výsledkom by malo byť, že asi po minúte by malo volanie koncového bodu načítať nové hodnoty. Celkom v pohode, nie?

Ďalej sa pokúsime pochopiť, čo sa deje pod kapotou.

5. Ako to funguje?

Najskôr sa pokúsme pochopiť celkový obraz.

Archaius je rozšírením knižnice Apache Commons Configuration a pridáva niektoré pekné funkcie, ako je napríklad rámec pre dopytovanie dynamických zdrojov, s vysokou priepustnosťou a bezpečnou implementáciou.

The jar-cloud-netflix-archaius Potom prichádza na rad knižnica, ktorá spája všetky rôzne zdroje vlastností a automaticky konfiguruje nástroje Archaius s týmito zdrojmi.

5.1. Knižnica Netflix Archaius

Funguje tak, že definuje zloženú konfiguráciu, kolekciu rôznych konfigurácií získaných z rôznych zdrojov.

Niektoré z týchto zdrojov konfigurácie môžu navyše podporovať vyzývanie na zmeny za behu modulu. Archaius poskytuje rozhrania a niektoré preddefinované implementácie na konfiguráciu týchto typov zdrojov.

Zbierka zdrojov je hierarchizovaná, takže ak je vlastnosť prítomná vo viacerých konfiguráciách, konečná hodnota bude hodnota v najvyššom slote.

Nakoniec a ConfigurationManager spracováva kontext Konfigurácia a nasadenie v celom systéme. Môže nainštalovať konečnú zloženú konfiguráciu alebo načítať nainštalovanú konfiguráciu.

5.2. Podpora jarného cloudu

Hlavnou úlohou knižnice Spring Cloud Archaius je zlúčiť všetky rôzne konfiguračné zdroje ako a ConcurrentCompositeConfiguration a nainštalujte ho pomocou ConfigurationManager.

Poradie, v ktorom knižnica definuje zdroje, je:

  1. Akákoľvek spoločná konfigurácia Apache AbstractConfiguration fazuľa definovaná v kontexte
  2. Všetky zdroje definované v Autowired Jar Konfigurovateľné prostredie
  3. Predvolené zdroje Archaius, ktoré sme videli v príklade vyššie
  4. Apache Konfigurácia systému a Konfigurácia prostredia zdroje

Ďalšou užitočnou funkciou, ktorú poskytuje táto knižnica Spring Cloud, je definícia aktuátora Koncový bod na sledovanie a interakciu s vlastnosťami. Jeho použitie je mimo rozsahu tohto tutoriálu.

6. Prispôsobenie a rozšírenie konfigurácie Archaius

Teraz, keď lepšie rozumieme tomu, ako Archaius funguje, sme v dobrej kondícii, aby sme mohli analyzovať, ako prispôsobiť konfiguráciu našej aplikácii alebo ako rozšíriť funkčnosť pomocou našich zdrojov konfigurácie.

6.1. Archaius podporuje vlastnosti konfigurácie

Ak chceme, aby Archaius zohľadnil ďalšie konfiguračné súbory podobné súboru config.properties jeden, môžeme definovať archaius.configurationSource.additionalUrls systémový majetok.

Hodnota je analyzovaná na zoznam adries URL oddelených čiarkou, takže napríklad môžeme túto systémovú vlastnosť pridať pri spustení aplikácie:

-Darchaius.configurationSource.additionalUrls = "classpath: other-dir / extra.properties, súbor: ///home/user/other-extra.properties"

Archaius bude čítať config.properties najskôr súbor a potom ďalšie v určenom poradí. Z tohto dôvodu budú mať vlastnosti definované v posledných súboroch prednosť pred predchádzajúcimi.

Existuje niekoľko ďalších systémových vlastností, ktoré môžeme použiť na konfiguráciu rôznych aspektov predvolenej konfigurácie Archaius:

  • archaius.configurationSource.defaultFileName: predvolený názov konfiguračného súboru v triede cesty
  • archaius.fixedDelayPollingScheduler.initialDelayMills: počiatočné oneskorenie pred načítaním zdroja konfigurácie
  • archaius.fixedDelayPollingScheduler.delayMills: oneskorenie medzi dvoma načítaniami zdroja; predvolená hodnota je 1 minúta

6.2. Pridanie ďalších zdrojov konfigurácie s pružinou

Ako by sme mohli pridať iný konfiguračný zdroj, ktorý bude spravovaný opísaným rámcom? A ako by sme mohli spravovať dynamické vlastnosti s vyššou prednosťou ako tie, ktoré sú definované v jarnom prostredí?

Po preskúmaní toho, čo sme spomenuli v časti 4.2, si môžeme uvedomiť, že najvyššie konfigurácie v zloženej konfigurácii definované pružinou sú AbstractConfiguration fazuľa definovaná v kontexte.

Teda všetko, čo musíme urobiť, je pridať implementáciu tejto abstraktnej triedy Apache do nášho Spring Contextu pomocou niektorých funkcií poskytovaných Archaius a automatická konfigurácia Springu ju spontánne pridá do spravovaných konfiguračných vlastností.

Aby sme to zjednodušili, uvidíme príklad, kde konfigurujeme súbor vlastností podobný predvolenému config.properties ale s tým rozdielom, že majú vyššiu prednosť ako zvyšok jarného prostredia a vlastnosti aplikácie:

@Bean public AbstractConfiguration addApplicationPropertiesSource () {URL configPropertyURL = (nový ClassPathResource ("other-config.properties")). GetURL (); PolledConfigurationSource source = nový URLConfigurationSource (configPropertyURL); vrátiť novú DynamicConfiguration (zdroj, nový FixedDelayPollingScheduler ()); }

Našťastie pre nás uvažuje o niekoľkých konfiguračných zdrojoch, ktoré dokážeme nastaviť takmer bez námahy. Ich konfigurácia je mimo rozsahu tohto úvodného tutoriálu.

7. Záver

Ak to zhrnieme, dozvedeli sme sa niečo o Archaiuse a niektorých skvelých funkciách, ktoré ponúka na využitie výhod správy konfigurácií.

Tiež sme videli, ako vstupuje do hry knižnica automatickej konfigurácie Spring Cloud, ktorá nám umožňuje pohodlné používanie API tejto knižnice.

Opäť môžeme nájsť všetky príklady zobrazené v tomto tutoriále a ďalšie v našom repozitári Github.


$config[zx-auto] not found$config[zx-overlay] not found