Tonga zvigadziriso zvemicroservice zviri nyore ne microconfig.io

Rimwe rematambudziko makuru mukuvandudza uye kunotevera kushanda kwemicroservices ndiko kugona uye kwakaringana kurongeka kwezviitiko zvavo. Mukuona kwangu, hurongwa hutsva hunogona kubatsira neizvi microconfig.io. Iyo inokutendera iwe kugadzirisa mamwe maitiro ekugadzirisa application mabasa zvine mutsindo.

Kana uine akawanda microservices, uye mumwe nomumwe wavo anouya neayo ekugadzirisa faira / mafaira, saka pane mukana mukuru wekuita chikanganiso mune chimwe chazvo, izvo zvinogona kuoma zvikuru kubata pasina unyanzvi hwakakodzera uye hurongwa hwekutema miti. Basa guru iro gadziriro inozvimisira pachezvayo ndere kudzikisa duplicate muenzaniso configuration parameters, nokudaro kuderedza mukana wekuwedzera kukanganisa.

Ngatitarisei muenzaniso. Ngatiti isu tine application yakapusa ine faira yekumisikidza yaml. Izvi zvinogona kuva chero microservice mune chero mutauro. Ngationei kuti gadziriro yacho ingashandiswa sei pabasa iri.

Asi chekutanga, kuitira kuti zvive nyore, ngatigadzire chirongwa chisina chinhu muIdea IDE, mushure mekuisa iyo microconfig.io plugin mairi:

Tonga zvigadziriso zvemicroservice zviri nyore ne microconfig.io

Isu tinomisikidza iyo plugin yekumisikidza kumisikidzwa, unogona kushandisa iyo yekumisikidza yekumisikidza, sepascreenshot iri pamusoro.

Sevhisi yedu inonzi kurongeka, saka muchirongwa chitsva tichagadzira chimiro chakafanana:

Tonga zvigadziriso zvemicroservice zviri nyore ne microconfig.io

Isa iyo faira yekumisikidza mufolda ine zita rebasa - application.yaml. Ese mamicroservices anotangwa mune imwe mhando yenzvimbo, saka, pamusoro pekugadzira config yebasa racho pacharo, zvinofanirwa kutsanangura nharaunda pachayo: nekuda kweizvi tichagadzira folda. envs uye wedzera faira kwairi ine zita renzvimbo yedu yekushanda. Nekudaro, iyo dhizaini ichagadzira mafaera ekugadzirisa emasevhisi munzvimbo hombororo, sezvo iyi parameter yakaiswa muzvirongwa zve plugin.

Chimiro chefaira dev.yaml zvichange zviri nyore:

mainorder:
    components:
         - order

Iyo framework inoshanda nemagadzirirwo akaunganidzwa pamwechete. Zvebasa redu, sarudza zita reboka mainorder. Iyo dhizaini inowana rimwe nerimwe boka rakadaro rezvishandiso mune faira rezvakatipoteredza uye rinogadzira zvigadziriso zvevose, izvo zvinowana mumaforodha anoenderana.

Musevhisi zvigadziriso faira pachayo urongwa Ngatitaurei chete parameter imwe chete ikozvino:

spring.application.name: order

Zvino ngatimhanyei plugin, uye ichagadzira iyo inodiwa kumisikidzwa yebasa redu zvinoenderana nenzira yakataurwa muzvivakwa:

Tonga zvigadziriso zvemicroservice zviri nyore ne microconfig.io

anogona pfuura uye pasina kuisa plugin, kungo dhawunirodha dhizaini yekugovera uye nekuimhanyisa kubva pamutsetse wekuraira.
Iyi mhinduro yakakodzera kushandiswa pane kuvaka server.

Zvakakosha kucherechedza kuti chimiro chinonzwisisa zvakakwana pfuma syntax, kureva, mafaera ezvivakwa zvakajairika anogona kushandiswa pamwechete mukati yaml configurations.

Ngatiwedzere imwe sevhisi mubhadharo uye kuomesa iripo.
Π’ urongwa:

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

Π’ mubhadharo:

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

Dambudziko guru nemagadzirirwo aya ndiko kuvapo kwehuwandu hwakawanda hwekopi-paste muzvirongwa zvebasa. Ngationei kuti iyo framework ichabatsira sei kuibvisa. Ngatitangei nekunyanya kujeka - kuvapo kwekugadzirisa eureka mune tsananguro yemicroservice yega yega. Ngatigadzire dhairekitori idzva nefaira rezvigadziriso uye tiwedzere gadziriso nyowani kwairi:

Tonga zvigadziriso zvemicroservice zviri nyore ne microconfig.io

Uye zvino ngatiwedzerei mutsara kune imwe neimwe yemapurojekiti edu #kusanganisira eureka.

Iyo dhizaini inozongowana iyo eureka configuration uye ikopi iyo kune sevhisi yekumisikidza mafaera, nepo yakaparadzana eureka gadziriso haizogadzirwa, sezvo isu tisingazozvitsananguri mune yemamiriro faira. dev.yaml. Service urongwa:

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

Isu tinogona zvakare kufambisa zvigadziriso zve database mune imwe gadziriso yakaparadzana nekushandura mutsara wekutumira kune #inosanganisira eureka, oracle.

Izvo zvakakosha kucherechedza kuti iyo sisitimu inoteedzera shanduko yega yega paunenge uchigadzira patsva mafaera ekugadzirisa uye woiisa mune yakakosha faira padivi peiyo huru yekumisikidza faira. Iyo yekupinda murogi yayo inotaridzika seizvi: "Yakachengetwa 1 chivakwa chinochinja kusvika order/diff-application.yaml" Izvi zvinokubvumira kuti uone nekukurumidza kuchinja kune makuru ekugadzirisa mafaira.

Kubvisa zvikamu zvakajairika zvekugadzirisa zvinokubvumira kuti ubvise zvakawanda zvisingakoshi kopi-namatidza, asi hazvikubvumiri kuti ugadzirise kugadzirisa kwemamiriro akasiyana-siyana - magumo emasevhisi edu akasiyana uye akaoma-coded, izvi zvakaipa. Ngatiedzei kubvisa izvi.

Mhinduro yakanaka ingave yekuchengeta ese mamagumo mune imwe gadziriso inogona kutaurwa nevamwe. Nechinangwa ichi, rutsigiro rwezvibatiso rwakaunzwa muhurongwa. Iyi ndiyo nzira iyo faira yekumisikidza ichachinja eureka:

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

Zvino ngationei kuti chibatiso ichi chinoshanda sei. Iyo sisitimu inowana chikamu chine zita magumo uye anotarisa zvinoreva mariri eurekaip, uye wozoitsiva mune yedu gadziriso. Asi zvakadini nemhoteredzo dzakasiyana? Kuti uite izvi, gadzira faira rekuisa mukati magumo rudzi runotevera application.dev.yaml. Iyo dhizaini yakazvimiririra, yakavakirwa pakuwedzera kwefaira, inosarudza kuti nharaunda iyi ndeipi uye inoitakura:

Tonga zvigadziriso zvemicroservice zviri nyore ne microconfig.io

Dev faira zviri mukati:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Isu tinokwanisa kugadzira iyo yakafanana gadziriso yezviteshi zvemasevhisi edu:

server.port: ${ports@order}.

Ese akakosha marongero ari munzvimbo imwechete, nekudaro achidzikisa mukana wekukanganisa nekuda kweakapararira paramita mumafaira ekugadzirisa.

Iyo dhizaini inopa akawanda akagadzirira-akagadzirirwa nzvimbo, semuenzaniso, unogona kuwana zita redhairekitori mune iyo faira yekumisikidza iripo uye woigovera:

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

Nekuda kweizvi, hapana chikonzero chekuwedzera kutsanangura zita rekushandisa mukugadzirisa uye rinogona kuiswa mune yakajairika module, semuenzaniso, mune imwecheteyo eureka:

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

The configuration file urongwa ichaderedzwa kuita mutsara mumwe:

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

Kana isu tisingade chero marongero kubva kuvabereki kumisikidzwa, tinogona kuitsanangura mukumisikidzwa kwedu uye ichashandiswa panguva yechizvarwa. Ndokunge, kana nekuda kwechimwe chikonzero isu tichida rakasiyana zita rebasa rekuraira, isu tichangosiya parameter spring.application.name.

Ngatiti iwe unoda kuwedzera zvigadziriso zvekutema matanda kune sevhisi, iyo inochengetwa mune imwe faira, semuenzaniso, logback.xml. Ngatigadzire boka rakasiyana rezvigadziriso zvayo:

Tonga zvigadziriso zvemicroservice zviri nyore ne microconfig.io

Mukugadzirisa kwekutanga, isu tichaudza iyo hurongwa kwekuisa iyo yekutema zvigadziriso faira yatinoda tichishandisa chinobatisa nzvimbo. @ConfigDir:

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

Mufaira logback.xml isu tinogadzirisa akajairwa maappender, ayo anogona zvakare kuve ane zvibatiso izvo chimiro chichachinja panguva yekugadzirwa kwezvigadziriso, semuenzaniso:

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

Nekuwedzera kunze kune zvigadziriso zvesevhisi logback, isu tinozvigadzirisa matanda ega ega sevhisi:

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

Yave nguva yekuziva zvakadzama nevose varipo vanobata nzvimbo yegadziriro:

${this@env} - inodzosera zita renzvimbo iripo.
${…@zita} - inodzorera zita rechikamu.
${…@configDir} - inodzosera iyo yakazara nzira kune iyo chikamu config dhairekitori.
${…@resultDir} - inodzosera iyo yakazara nzira kune chikamu chekuenda dhairekitori (mafaera anozoiswa achaiswa mune ino dhairekitori).
${this@configRoot} - inodzosera iyo yakazara nzira kune midzi dhairekitori yechitoro chekugadzirisa.

Iyo sisitimu zvakare inobvumidza iwe kuti uwane nharaunda dzakasiyana, semuenzaniso nzira yejava:
${env@JAVA_HOME}
Chero, sezvo chimiro chakanyorwa mukati JAVA, tinogona kuwana masisitimu akasiyana-siyana akafanana nekufona System ::getProperty uchishandisa chimiro chakadai:
${[email inodzivirirwa]}
Zvakakodzera kutaura tsigiro yemutauro wekuwedzera Spring EL. Mazwi anotevera anoshandiswa mukugadzirisa:

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

uye iwe unogona kushandisa zvimiro zvemuno mumafaira ekugadzirisa uchishandisa chirevo #var:

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

Nekudaro, iyo dhizaini chishandiso chine simba chekugadzirisa zvakanaka uye inochinjika kumisikidzwa yemicroservices. Iyo dhizaini inozadzisa basa rayo guru - kubvisa kopi-namira muzvigadziriso, kubatanidza marongero uye, semhedzisiro, kuderedza zvikanganiso zvinogoneka, uku ichikubvumidza iwe kusanganisa nyore zvigadziriso uye kuzvishandura kune dzakasiyana nharaunda.

Kana iwe uchifarira chimiro ichi, ini ndinokurudzira kushanyira yayo yepamutemo peji uye kujairana nezvakazara zvinyorwa, kana kuchera mumanyuko pano.

Source: www.habr.com

Voeg