Bevezetés a Netflix Archaius tavaszi felhővel

1. Áttekintés

A Netflix Archaius egy erőteljes konfigurációkezelő könyvtár.

Egyszerűen fogalmazva, ez egy olyan keretrendszer, amely felhasználható a konfigurációs tulajdonságok összegyűjtésére számos különböző forrásból, gyors, szálbiztos hozzáférést kínálva hozzájuk.

Ráadásul a könyvtár lehetővé teszi, hogy a tulajdonságok futás közben dinamikusan változhassanak, lehetővé téve a rendszer számára, hogy az alkalmazás újraindítása nélkül megszerezze ezeket a variációkat.

Ebben a bevezető oktatóprogramban felállítunk egy egyszerű Spring Cloud Archaius konfigurációt, elmagyarázzuk, mi történik a motorháztető alatt, és végül meglátjuk, hogy a Spring hogyan teszi lehetővé az alapbeállítás kiterjesztését.

2. Netflix Archaius funkciók

Mint tudjuk, a Spring Boot már rendelkezik eszközökkel az externalizált konfigurációk kezeléséhez, akkor miért kellene más mechanizmus felállításával foglalkozni?

Jól, Az Archaius olyan praktikus és érdekes szolgáltatásokat kínál, amelyeket más konfigurációs keretrendszer nem vesz figyelembe. Néhány legfontosabb pontja a következő:

  • Dinamikus és gépelt tulajdonságok
  • Visszahívási mechanizmus, amely a tulajdonságmutációkra hivatkozik
  • Használatra kész dinamikus konfigurációs források, például URL-ek, JDBC és Amazon DynamoDB megvalósítása
  • JMX MBean, amelyhez a Spring Boot Actuator vagy a JConsole hozzáférhet a tulajdonságok ellenőrzéséhez és kezeléséhez
  • Dinamikus tulajdonságok ellenőrzése

Ezek a jutalmak sok esetben hasznosak lehetnek.

Ezért a Spring Cloud egy olyan könyvtáron dolgozott, amely lehetővé teszi a „tavaszi környezet hídjának” egyszerű konfigurálását, hogy az Archaius olvashassa a tulajdonságokat a tavaszi környezetből.

3. Függőségek

Tegyük hozzá a tavasz-felhő-indító-netflix-archaius alkalmazásunkhoz az összes szükséges függőséget hozzáadja a projektünkhöz.

Opcionálisan hozzáadhatjuk tavasz-felhő-netflix a miénknek függőségMenedzsment szakaszban, és támaszkodhat a műtárgyak verzióinak specifikációjára:

  org.springframework.cloud spring-cloud-starter-netflix-archaius org.springframework.cloud spring-cloud-netflix 2.0.1. KÖZLEMÉNY 

Megjegyzés: Ellenőrizhetjük a Maven Central alkalmazást, hogy ellenőrizzük, az indító könyvtár legújabb verzióját használjuk-e.

4. Használat

Amint hozzáadjuk a szükséges függőséget, hozzáférhetünk a keretrendszer által kezelt tulajdonságokhoz:

DynamicStringProperty dynamicProperty = DynamicPropertyFactory.getInstance () .getStringProperty ("baeldung.archaius.property", "alapértelmezett érték"); Karakterlánc tulajdonságCurrentValue = dynamicProperty.get ();

Dolgozzunk ki egy rövid példát, hogy megnézzük, hogyan érhető el ez a dobozon kívül.

4.1. Gyors példa

Alapértelmezés szerint dinamikusan kezeli az összes nevű fájlban meghatározott tulajdonságot konfig.tulajdonságok az alkalmazás osztályútvonalán.

Tehát adjuk hozzá az erőforrások mappánkhoz néhány tetszőleges tulajdonsággal:

# config.properties baeldung.archaius.properties.one = egy FROM: config.properties

Most szükségünk lesz arra, hogy a tulajdonságok értékét bármikor ellenőrizhessük. Ebben az esetben létrehozunk egy RestController amely lekéri az értékeket JSON válaszként:

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

Próbáljuk ki. Kérést küldhetünk erre a végpontra, és a szolgáltatás lekéri a tárolt értékeket konfig.tulajdonságok a várakozásoknak megfelelően.

Eddig nincs nagy baj, igaz? Ok, folytassuk, és a szolgáltatás újraindítása nélkül változtassuk meg a tulajdonság értékeit az classpath fájlban. Ennek eredményeként körülbelül egy perc múlva a végpont felé történő hívásnak be kell szereznie az új értékeket. Nagyon klassz, nem?

Ezután megpróbáljuk megérteni, mi történik a motorháztető alatt.

5. Hogyan működik?

Először próbáljuk meg megérteni az összképet.

Az Archaius az Apache Commons Configuration könyvtárának kiterjesztése, néhány olyan jó funkcióval, mint például a dinamikus források lekérdezési keretrendszere, nagy átviteli sebességgel és szálbiztos megvalósítással.

A tavasz-felhő-netflix-archaius A könyvtár akkor kerül játékba, összevonva az összes tulajdonságforrást, és automatikusan konfigurálva az Archaius eszközöket ezekhez a forrásokhoz.

5.1. A Netflix Archaius könyvtár

Meghatározza az összetett konfigurációt, a különböző konfigurációk különböző forrásokból származó gyűjteményét.

Ezenfelül ezek a konfigurációs források némelyike ​​támogathatja a változások futásidejű lekérdezését. Az Archaius interfészeket és néhány előre definiált megvalósítást biztosít az ilyen típusú források konfigurálásához.

A források gyűjteménye úgy van hierarchizálva, hogy ha egy tulajdonság többféle konfigurációban van, akkor a végső érték lesz a legfelső nyílásban található.

Végül a ConfigurationManager kezeli az egész rendszerre kiterjedő konfigurációs és telepítési kontextust. Telepítheti a végső kompozit konfigurációt, vagy módosítás céljából visszakeresheti a telepített konfigurációt.

5.2. Tavaszi felhő támogatás

A Spring Cloud Archaius könyvtár fő feladata az összes különböző konfigurációs forrás a ConcurrentCompositeConfiguration és telepítse a ConfigurationManager.

Az elsőbbségi sorrend, amelyben a könyvtár meghatározza a forrásokat:

  1. Bármely Apache közös konfiguráció AbstractConfiguration az összefüggésben meghatározott bab
  2. A programban meghatározott összes forrás Autowired Tavaszi ConfigurableEnvironment
  3. Az alapértelmezett Archaius-források, amelyeket a fenti példában láthattunk
  4. Apache-ék Rendszerbeállítások és Környezetkonfiguráció források

A Spring Cloud könyvtár további hasznos funkciója az aktuátor meghatározása Végpont a tulajdonságok figyelemmel kísérésére és azokkal való interakcióra. Használata kívül esik az oktatóanyag körén.

6. Az Archaius konfigurációjának adaptálása és kiterjesztése

Most, hogy jobban megértettük az Archaius működését, jó állapotban vagyunk ahhoz, hogy elemezzük, hogyan lehet a konfigurációt az alkalmazásunkhoz igazítani, vagy hogyan lehet a konfigurációs forrásainkkal bővíteni a funkcionalitást.

6.1. Archaius támogatott konfigurációs tulajdonságok

Ha azt akarjuk, hogy az Archaius más, a konfig.tulajdonságok az egyik, definiálhatjuk a archaius.configurationSource.additionalUrls rendszer tulajdonság.

Az értéket vesszővel elválasztott URL-ek listájára elemezzük, így például az alkalmazás indításakor felvehetjük ezt a rendszertulajdonságot:

-Darchaius.configurationSource.additionalUrls = "osztályút: egyéb-dir / extra.properties, fájl: ///home/user/other-extra.properties"

Archaius elolvassa a konfig.tulajdonságok fájl, majd a többi, a megadott sorrendben. Emiatt az utóbbi fájlokban meghatározott tulajdonságok elsőbbséget élveznek az előzőekkel szemben.

Van még néhány olyan rendszer tulajdonság, amelyekkel konfigurálhatjuk az Archaius alapértelmezett konfigurációjának különböző aspektusait:

  • archaius.configurationSource.defaultFileName: az alapértelmezett konfigurációs fájl neve az osztályúton
  • archaius.fixedDelayPollingScheduler.initialDelayMills: kezdeti késleltetés a konfigurációs forrás elolvasása előtt
  • archaius.fixedDelayPollingScheduler.delayMills: késés a forrás két olvasása között; az alapértelmezett érték 1 perc

6.2. További konfigurációs források hozzáadása tavasszal

Hogyan adhatunk hozzá egy másik konfigurációs forrást, amelyet a leírt keretrendszer kezelhet? És hogyan kezelhetnénk a dinamikus tulajdonságokat nagyobb prioritással, mint a tavaszi környezetben meghatározottak?

A 4.2 szakaszban említettek áttekintésével rájöhetünk, hogy a Spring által definiált legmagasabb konfigurációk az összetett konfigurációban AbstractConfiguration az összefüggésben meghatározott bab.

Így, csak annyit kell tennünk, hogy hozzáadjuk az Apache absztrakt osztályának implementációját a Spring Context-hez az Archaius által nyújtott néhány funkció használatával, és a Spring automatikus konfigurációja spontán módon hozzáadja a felügyelt konfigurációs tulajdonságokhoz.

A dolgok egyszerűsége érdekében meglátunk egy példát, ahol az alapértelmezetthez hasonló tulajdonságfájlt konfigurálunk konfig.tulajdonságok de azzal a különbséggel, hogy nagyobb prioritással rendelkezik, mint a tavaszi környezet többi része és alkalmazási tulajdonságai:

@Bean public AbstractConfiguration addApplicationPropertiesSource () {URL configPropertyURL = (új ClassPathResource ("other-config.properties")). GetURL (); PolledConfigurationSource source = új URLConfigurationSource (configPropertyURL); return new DynamicConfiguration (forrás, új FixedDelayPollingScheduler ()); }

Számunkra szerencsés, számos konfigurációs forrást fontolgat, amelyeket szinte minden erőfeszítés nélkül beállíthatunk. Konfigurációjuk kívül esik ennek a bevezető bemutatónak a körén.

7. Következtetés

Összefoglalva: megismertük az Archaiust és néhány jó funkciót, amelyeket a konfigurációkezelés előnyeinek kihasználása érdekében kínál.

Azt is láttuk, hogy miként jelenik meg a Spring Cloud automatikus konfigurációs könyvtár, amely lehetővé teszi számunkra, hogy kényelmesen használjuk a könyvtár API-ját.

Még egyszer megtalálhatjuk az oktatóanyagban bemutatott összes példát, és másokat a Github repóban.