Stjórnaðu stillingum örþjónustu á auðveldan hátt með microconfig.io

Eitt helsta vandamálið við þróun og síðari rekstur örþjónustu er hæf og nákvæm uppsetning tilvika þeirra. Að mínu mati getur ný umgjörð hjálpað til við þetta microconfig.io. Það gerir þér kleift að leysa nokkur venjubundin forritastillingarverkefni nokkuð glæsilega.

Ef þú ert með margar örþjónustur, og hver þeirra kemur með sína eigin stillingarskrá/skrár, þá eru miklar líkur á að gera villu í einni þeirra, sem getur verið mjög erfitt að ná án viðeigandi kunnáttu og skógarhöggskerfis. Helsta verkefnið sem ramminn setur sér er að lágmarka tvíteknar stillingarstillingar færibreytur tilviks og draga þannig úr líkum á að villu bætist við.

Við skulum skoða dæmi. Segjum að við höfum einfalt forrit með stillingarskrá jamml. Þetta getur verið hvaða örþjónusta sem er á hvaða tungumáli sem er. Við skulum sjá hvernig hægt er að beita rammanum á þessa þjónustu.

En fyrst, til meiri þæginda, skulum við búa til tómt verkefni í Idea IDE, eftir að hafa sett upp microconfig.io viðbótina í það:

Stjórnaðu stillingum örþjónustu á auðveldan hátt með microconfig.io

Við setjum upp ræsingarstillingu viðbótarinnar, þú getur notað sjálfgefna stillingu, eins og á skjámyndinni hér að ofan.

Þjónustan okkar er kölluð pöntun, síðan í nýju verkefni munum við búa til svipaða uppbyggingu:

Stjórnaðu stillingum örþjónustu á auðveldan hátt með microconfig.io

Settu stillingarskrána í möppuna með þjónustuheitinu - application.yaml. Allar örþjónustur eru ræstar í einhvers konar umhverfi, þannig að auk þess að búa til stillingar fyrir þjónustuna sjálfa er nauðsynlegt að lýsa umhverfinu sjálfu: fyrir þetta munum við búa til möppu envs og bæta skrá við það með nafni vinnuumhverfis okkar. Þannig mun ramminn búa til stillingarskrár fyrir þjónustu í umhverfinu dev, þar sem þessi færibreyta er stillt í stillingum viðbótarinnar.

Uppbygging skráa dev.yaml það verður frekar einfalt:

mainorder:
    components:
         - order

Ramminn vinnur með stillingar sem eru flokkaðar saman. Fyrir þjónustu okkar skaltu velja nafn fyrir hópinn aðalskipan. Ramminn finnur hvern slíkan hóp af forritum í umhverfisskránni og býr til stillingar fyrir þau öll, sem það finnur í samsvarandi möppum.

Í þjónustustillingarskránni sjálfri til Við skulum aðeins tilgreina eina færibreytu í bili:

spring.application.name: order

Nú skulum við keyra viðbótina og það mun búa til nauðsynlegar stillingar fyrir þjónustu okkar í samræmi við slóðina sem tilgreind er í eiginleikum:

Stjórnaðu stillingum örþjónustu á auðveldan hátt með microconfig.io

Þú getur ná saman og án þess að setja upp viðbót, einfaldlega hlaðið niður rammadreifingunni og keyrt hana frá skipanalínunni.
Þessi lausn er hentug til notkunar á byggingarþjóni.

Það er athyglisvert að umgjörðin skilur fullkomlega eign setningafræði, það er venjulegar eignaskrár sem hægt er að nota saman í jamml stillingar.

Við skulum bæta við annarri þjónustu greiðslu og flækja þann sem fyrir er.
В til:

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

В greiðslu:

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

Helsta vandamálið við þessar stillingar er tilvist mikið magn af copy-paste í þjónustustillingunum. Við skulum sjá hvernig ramminn mun hjálpa til við að losna við það. Við skulum byrja á því augljósasta - tilvist stillingar Eureka í lýsingu hverrar örþjónustu. Við skulum búa til nýja möppu með stillingaskránni og bæta við nýrri stillingu við hana:

Stjórnaðu stillingum örþjónustu á auðveldan hátt með microconfig.io

Og nú skulum við bæta línunni við hvert verkefni okkar #innihalda eureka.

Ramminn mun sjálfkrafa finna eureka stillingarnar og afrita hana í þjónustustillingarskrárnar, en aðskilin eureka stilling verður ekki búin til, þar sem við munum ekki tilgreina hana í umhverfisskránni dev.yaml. Þjónusta til:

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

Við getum líka fært gagnagrunnsstillingarnar í sérstaka uppsetningu með því að breyta innflutningslínunni í #innihalda eureka, véfrétt.

Það er athyglisvert að ramminn rekur hverja breytingu þegar stillingarskrár eru endurgerðar og setur hana í sérstaka skrá við hlið aðalstillingarskrárinnar. Færslan í notendaskrá þess lítur svona út: „Geymd 1 eign breytist í order/diff-application.yaml" Þetta gerir þér kleift að greina fljótt breytingar á stórum stillingarskrám.

Með því að fjarlægja sameiginlega hluta stillingarinnar geturðu losað þig við mikið af óþarfa afrita-líma, en gerir þér ekki kleift að búa til sveigjanlega stillingar fyrir mismunandi umhverfi - endapunktar þjónustu okkar eru einstakir og harðkóðaðir, þetta er slæmt. Við skulum reyna að fjarlægja þetta.

Góð lausn væri að hafa alla endapunkta í einni uppsetningu sem aðrir geta vísað til. Í þessu skyni hefur stuðningur við staðgengla verið tekinn inn í rammann. Svona mun stillingarskráin breytast Eureka:

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

Nú skulum við sjá hvernig þessi staðgengill virkar. Kerfið finnur íhlut sem heitir endapunktar og leitar að merkingu í því eurekaip, og kemur því síðan í staðinn fyrir uppsetninguna okkar. En hvað með mismunandi umhverfi? Til að gera þetta skaltu búa til stillingaskrá í endapunktar eftirfarandi gerð application.dev.yaml. Ramminn ákveður sjálfstætt, byggt á skráarviðbótinni, hvaða umhverfi þessi uppsetning tilheyrir og hleður henni:

Stjórnaðu stillingum örþjónustu á auðveldan hátt með microconfig.io

Dev skrá innihald:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Við getum búið til sömu stillingar fyrir höfn þjónustu okkar:

server.port: ${ports@order}.

Allar mikilvægar stillingar eru á einum stað og dregur þannig úr líkum á villum vegna dreifðra breytu í stillingarskrám.

Ramminn býður upp á marga tilbúna staðgengla, til dæmis geturðu fengið nafn möppunnar sem stillingarskráin er í og ​​úthlutað henni:

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

Þökk sé þessu er engin þörf á að tilgreina viðbótarheiti forritsins í uppsetningunni og það er líka hægt að setja það í sameiginlega einingu, til dæmis í sömu eureka:

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

Stillingarskráin til verður minnkað í eina línu:

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

Ef við þurfum enga stillingu frá foreldri stillingum, getum við tilgreint það í stillingum okkar og það verður notað við kynslóð. Það er að segja, ef við þurfum af einhverjum ástæðum sérstakt nafn fyrir pöntunarþjónustuna, munum við bara skilja færibreytuna eftir vor.forritsnafn.

Segjum að þú þurfir að bæta sérsniðnum skráningarstillingum við þjónustuna, sem eru geymdar í sérstakri skrá, til dæmis, logback.xml. Við skulum búa til sérstakan hóp stillinga fyrir það:

Stjórnaðu stillingum örþjónustu á auðveldan hátt með microconfig.io

Í grunnstillingunni munum við segja rammanum hvar á að setja skráningarstillingaskrána sem við þurfum með því að nota staðgengil @ConfigDir:

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

Í skrá logback.xml við stillum staðlaða viðauka, sem aftur geta einnig innihaldið staðgengla sem ramminn mun breytast við gerð stillinga, til dæmis:

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

Með því að bæta innflutningi við þjónustustillingar logback, fáum við sjálfkrafa stillta skráningu fyrir hverja þjónustu:

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

Það er kominn tími til að kynna sér nánar alla tiltæka staðgengla rammans:

${this@env} - skilar nafni núverandi umhverfis.
${…@name} — skilar heiti íhlutsins.
${…@configDir} — skilar fullri slóð að stillingarskrá íhlutarins.
${…@resultDir} — skilar fullri slóð að áfangaskrá íhlutans (skrárnar sem myndast verða settar í þessa möppu).
${this@configRoot} — skilar fullri slóð að rótarskrá stillingageymslunnar.

Kerfið gerir þér einnig kleift að fá umhverfisbreytur, til dæmis slóðina að java:
${env@JAVA_HOME}
Annað hvort, þar sem ramminn er skrifaður inn JAVA, getum við fengið kerfisbreytur svipaðar símtalinu System::getProperty með því að nota uppbyggingu eins og þessa:
${[netvarið]}
Það er þess virði að minnast á stuðning við framlengingartungumálið Vor EL. Eftirfarandi orðasambönd eiga við í uppsetningunni:

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

og þú getur notað staðbundnar breytur í stillingarskrám með því að nota tjáninguna #var:

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

Þannig er ramminn nokkuð öflugt tæki til að fínstilla og sveigjanlega uppsetningu á örþjónustu. Ramminn uppfyllir aðalverkefni sitt fullkomlega - að útrýma copy-paste í stillingum, sameina stillingar og, þar af leiðandi, lágmarka hugsanlegar villur, á sama tíma og þú getur auðveldlega sameinað stillingar og breytt þeim fyrir mismunandi umhverfi.

Ef þú hefur áhuga á þessum ramma mæli ég með því að fara á opinberu síðu þess og kynnast öllu skjöl, eða grafa í heimildum hér.

Heimild: www.habr.com

Bæta við athugasemd