Kudeatu erraz mikrozerbitzuen konfigurazioak microconfig.io-rekin

Mikrozerbitzuen garapenean eta ondorengo funtzionamenduan arazo nagusietako bat haien instantzien konfigurazio konpetente eta zehatza da. Nire ustez, esparru berri batek lagundu dezake horretan microconfig.io. Aplikazio arrunten konfigurazio-zeregin batzuk nahiko dotore ebazteko aukera ematen du.

Mikrozerbitzu asko badituzu, eta horietako bakoitzak bere konfigurazio fitxategi/fitxategiekin badator, orduan horietako batean errore bat egiteko probabilitate handia dago, eta hori oso zaila izan daiteke trebetasun egokirik eta erregistro-sistemarik gabe harrapatzea. Markoak beretzat ezartzen duen zeregin nagusia instantzia bikoiztutako konfigurazio-parametroak minimizatzea da, horrela errore bat gehitzeko probabilitatea murrizteko.

Ikus dezagun adibide bat. Demagun aplikazio sinple bat dugula konfigurazio fitxategi batekin yaml. Hau edozein hizkuntzatako edozein mikrozerbitzu izan daiteke. Ikus dezagun nola aplika daitekeen esparrua zerbitzu honetan.

Baina lehenik eta behin, erosotasun handiagoa lortzeko, sor dezagun proiektu huts bat Idea IDEn, bertan microconfig.io plugina instalatu ondoren:

Kudeatu erraz mikrozerbitzuen konfigurazioak microconfig.io-rekin

Plugin-a abiarazteko konfigurazioa konfiguratu dugu, lehenetsitako konfigurazioa erabil dezakezu, goiko pantaila-argazkian bezala.

Gure zerbitzua ordena deitzen da, gero proiektu berri batean antzeko egitura bat sortuko dugu:

Kudeatu erraz mikrozerbitzuen konfigurazioak microconfig.io-rekin

Jarri konfigurazio fitxategia zerbitzuaren izena duen karpetan - aplikazioa.yaml. Mikrozerbitzu guztiak nolabaiteko ingurune batean abiarazten dira, beraz, zerbitzuaren beraren konfigurazioa sortzeaz gain, beharrezkoa da ingurunea bera deskribatzea: horretarako karpeta bat sortuko dugu. inbs eta gehitu fitxategi bat gure lan-ingurunearen izenarekin. Horrela, esparruak inguruneko zerbitzuen konfigurazio fitxategiak sortuko ditu dev, parametro hau pluginaren ezarpenetan ezartzen baita.

Fitxategien egitura dev.yaml nahiko erraza izango da:

mainorder:
    components:
         - order

Esparruak taldekatzen diren konfigurazioekin funtzionatzen du. Gure zerbitzurako, aukeratu taldearen izen bat ordena nagusia. Esparruak aplikazio talde bakoitza inguruneko fitxategian aurkitzen du eta guztientzako konfigurazioak sortzen ditu, dagozkien karpetetan aurkitzen dituena.

Zerbitzuaren ezarpenen fitxategian bertan ordena Zehaz dezagun parametro bakarra oraingoz:

spring.application.name: order

Orain exekutatu dezagun plugina, eta gure zerbitzurako beharrezko konfigurazioa sortuko du propietateetan zehaztutako bidearen arabera:

Kudeatu erraz mikrozerbitzuen konfigurazioak microconfig.io-rekin

ahal bat egin eta plugin bat instalatu gabe, markoaren banaketa deskargatu eta komando-lerrotik exekutatu besterik ez dago.
Soluzio hau eraikitze zerbitzari batean erabiltzeko egokia da.

Aipatzekoa da esparruak primeran ulertzen duela jabetza sintaxia, hau da, elkarrekin erabil daitezkeen propietate fitxategi arruntak yaml konfigurazioak.

Gehi dezagun beste zerbitzu bat ordainketa eta lehendik dagoena zaildu.
Π’ ordena:

eureka:
 instance.preferIpAddress: true
 client:
   serviceUrl:
     defaultZone: http://192.89.89.111:6782/eureka/
server.port: 9999
spring.application.name: order
db.url: 192.168.0.100

Π’ ordainketa:

eureka:
 instance.preferIpAddress: true
 client:
   serviceUrl:
     defaultZone: http://192.89.89.111:6782/eureka/
server.port: 9998
spring.application.name: payments
db.url: 192.168.0.100

Konfigurazio hauen arazo nagusia zerbitzuaren ezarpenetan kopia-itsatsi kopuru handia egotea da. Ikus dezagun nola lagunduko duen markoa kentzen. Has gaitezen agerikoenetik: konfigurazioaren presentzia eureka mikrozerbitzu bakoitzaren deskribapenean. Sortu dezagun direktorio berri bat ezarpenen fitxategiarekin eta gehitu konfigurazio berri bat:

Kudeatu erraz mikrozerbitzuen konfigurazioak microconfig.io-rekin

Eta orain gehi diezaiogun lerroa gure proiektu bakoitzari #sartu eureka.

Esparruak automatikoki aurkituko du eureka konfigurazioa eta zerbitzuaren konfigurazio fitxategietan kopiatuko du, eta eureka konfigurazio bereizirik ez da sortuko, ez baitugu inguruneko fitxategian zehaztuko. dev.yaml. Zerbitzua ordena:

#include eureka
server.port: 9999
spring.application.name: order
db.url: 192.168.0.100

Datu-basearen ezarpenak beste konfigurazio batera eraman ditzakegu inportazio-lerroa hona aldatuz #include eureka, oracle.

Aipatzekoa da esparruak aldaketa bakoitzaren jarraipena egiten duela konfigurazio-fitxategiak birsortzerakoan eta fitxategi berezi batean jartzen duela konfigurazio-fitxategi nagusiaren ondoan. Bere erregistroko sarrera honelakoa da: "Bordetako 1 propietatea hona aldatzen da ordena/diff-aplikazioa.yaml" Honi esker, konfigurazio-fitxategi handien aldaketak azkar hautemateko dituzu.

Konfigurazioaren zati arruntak kentzeak alferrikako kopia-itsatsi asko kentzeko aukera ematen du, baina ez dizu ingurune desberdinetarako konfigurazio bat malgutasunez sortzeko aukera ematen - gure zerbitzuen amaiera-puntuak bakarrak eta kode gogorrak dira, hori txarra da. Saia gaitezen hau kentzen.

Irtenbide on bat amaierako puntu guztiak besteek erreferentzia dezaketen konfigurazio batean mantentzea izango litzateke. Horretarako, leku-marken euskarria sartu da esparruan. Honela aldatuko da konfigurazio fitxategia eureka:

 client:
   serviceUrl:
     defaultZone: http://${endpoints@eurekaip}:6782/eureka/

Ikus dezagun orain leku-mark honek nola funtzionatzen duen. Sistemak izeneko osagai bat aurkitzen du endpoints eta zentzua bilatzen du bertan eurekaip, eta gero gure konfigurazioan ordezkatzen du. Baina zer gertatzen da ingurune ezberdinekin? Horretarako, sortu ezarpenen fitxategi bat endpoints honako mota hau aplikazioa.dev.yaml. Esparruak modu independentean, fitxategi-luzapenean oinarrituta, konfigurazio hau zein inguruneri dagokion erabakitzen du eta kargatzen du:

Kudeatu erraz mikrozerbitzuen konfigurazioak microconfig.io-rekin

Dev fitxategiaren edukia:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Gure zerbitzuen portuetarako konfigurazio bera sor dezakegu:

server.port: ${ports@order}.

Ezarpen garrantzitsu guztiak leku bakarrean daude, eta horrela konfigurazio fitxategietan sakabanatuta dauden parametroen ondorioz akatsak izateko probabilitatea murrizten da.

Esparruak prest egindako leku-marka asko eskaintzen ditu, adibidez, konfigurazio fitxategia dagoen direktorioaren izena lor dezakezu eta esleitu:

#include eureka, oracle
server.port: ${ports@order}
spring.application.name: ${this@name}

Horri esker, ez dago aplikazioaren izena gehigarririk zehaztu beharrik konfigurazioan eta modulu komun batean ere jar daiteke, adibidez, eureka berean:

client:
   serviceUrl:
     defaultZone: http://${endpoints@eurekaip}:6782/eureka/
 spring.application.name: ${this@name}

Konfigurazio fitxategia ordena lerro bakarrera murriztuko da:

#include eureka, oracle
server.port: ${ports@order}

Gurasoaren konfigurazioko ezarpenik behar ez badugu, gure konfigurazioan zehaztu dezakegu eta sorreran aplikatuko da. Hau da, arrazoiren batengatik eskaera-zerbitzurako izen esklusibo bat behar badugu, parametroa utziko dugu udaberria.aplikazioa.izena.

Demagun zerbitzura erregistro-ezarpen pertsonalizatuak gehitu behar dituzula, fitxategi bereizi batean gordetzen direnak, adibidez, logback.xml. Sortu dezagun ezarpen talde bereizi bat:

Kudeatu erraz mikrozerbitzuen konfigurazioak microconfig.io-rekin

Oinarrizko konfigurazioan, markoari esango diogu non jarri behar dugun erregistro-ezarpenen fitxategia leku-mark bat erabiliz @ConfigDir:

microconfig.template.logback.fromFile: ${logback@configDir}/logback.xml

Fitxategian logback.xml eranskin estandarrak konfiguratzen ditugu, eta, aldi berean, markoa aldatuko duten leku-markak ere izan ditzakete konfigurazioak sortzean, adibidez:

<file>logs/${this@name}.log</file>

Zerbitzuen konfigurazioei inportazioa gehituz saioa atzera, automatikoki zerbitzu bakoitzerako konfiguratutako erregistroa lortzen dugu:

#include eureka, oracle, logback
server.port: ${ports@order}

Markoaren leku-marka erabilgarri guztiak zehatzago ezagutzeko garaia da:

${this@env} - uneko ingurunearen izena itzultzen du.
${…@izena} β€” osagaiaren izena itzultzen du.
${…@configDir} β€” osagaiaren konfigurazio direktoriorako bide osoa itzultzen du.
${…@resultDir} β€” osagaiaren helmugako direktoriorako bide osoa itzultzen du (ondorioz fitxategiak direktorio honetan jarriko dira).
${this@configRoot} β€” konfigurazio biltegiko erroko direktoriorako bide osoa itzultzen du.

Sistemak ingurune-aldagaiak lortzeko aukera ematen du, adibidez, javarako bidea:
${env@JAVA_HOME}
Edo, markoa idatzita dagoenez JAVA, deiaren antzeko sistemaren aldagaiak lor ditzakegu System::getProperty honelako egitura bat erabiliz:
${[posta elektroniko bidez babestua]}
Aipatzekoa da luzapen hizkuntzarako euskarria Udaberriko EL. Konfigurazioan honako esapide hauek aplikagarriak dira:

connection.timeoutInMs: #{5 * 60 * 1000}
datasource.maximum-pool-size: #{${[email protected]} + 10} 

eta konfigurazio fitxategietan aldagai lokalak erabil ditzakezu adierazpena erabiliz #var:

#var feedRoot: ${[email protected]}/feed
folder:
 root: ${this@feedRoot}
 success: ${this@feedRoot}/archive
 error: ${this@feedRoot}/error

Horrela, esparrua tresna nahiko indartsua da mikrozerbitzuen doikuntza eta konfigurazio malguak egiteko. Esparruak ezin hobeto betetzen du bere zeregin nagusia: ezarpenetan kopiatu-itsatsi kentzea, ezarpenak finkatzea eta, ondorioz, akats posibleak gutxitzea, konfigurazioak erraz konbinatzea eta ingurune desberdinetarako aldatzea ahalbidetuz.

Esparru honetan interesatzen bazaizu, bere orri ofiziala bisitatzea eta osoa ezagutzea gomendatzen dizut dokumentazioa, edo iturrietan sakondu Hemen.

Iturria: www.habr.com

Gehitu iruzkin berria