Sinthani mosavuta masanjidwe a microservice ndi microconfig.io

Limodzi mwamavuto akulu pakupanga ndi kutsata kwa ma microservices ndikusintha koyenera komanso kolondola kwa zochitika zawo. Malingaliro anga, chimango chatsopano chingathandize pa izi microconfig.io. Zimakupatsani mwayi wothana ndi ntchito zina zokhazikika zamapulogalamu mokhazikika.

Ngati muli ndi ma microservices ambiri, ndipo aliyense wa iwo amabwera ndi fayilo yake yokonzekera / mafayilo, ndiye kuti pali kuthekera kwakukulu kopanga zolakwika mu imodzi mwa izo, zomwe zingakhale zovuta kuzigwira popanda luso loyenera komanso ndondomeko yodula mitengo. Ntchito yayikulu yomwe chimangochi chimadzipangira chokha ndikuchepetsa magawo osinthika, potero kuchepetsa mwayi wowonjezera cholakwika.

Tiyeni tione chitsanzo. Tiyerekeze kuti tili ndi pulogalamu yosavuta yokhala ndi fayilo yosinthira chilonda. Izi zitha kukhala microservice iliyonse muchilankhulo chilichonse. Tiyeni tiwone momwe chimango chingagwiritsidwire ntchito pa ntchitoyi.

Koma choyamba, kuti zikhale zosavuta, tiyeni tipange pulojekiti yopanda kanthu mu Idea IDE, titatha kukhazikitsa microconfig.io plugin mmenemo:

Sinthani mosavuta masanjidwe a microservice ndi microconfig.io

Timakhazikitsa kasinthidwe koyambitsa plugin, mutha kugwiritsa ntchito masinthidwe osasinthika, monga momwe ziliri pamwambapa.

Utumiki wathu umatchedwa dongosolo, ndiye mu polojekiti yatsopano tidzapanga mawonekedwe ofanana:

Sinthani mosavuta masanjidwe a microservice ndi microconfig.io

Ikani fayilo yosinthira mufoda yokhala ndi dzina lautumiki - application.yaml. Ma microservices onse amayambitsidwa mumtundu wina wa chilengedwe, kotero, kuwonjezera pa kupanga config pa ntchito yokha, m'pofunika kufotokoza chilengedwe chokha: chifukwa cha ichi tidzapanga chikwatu. envs ndikuwonjezera fayilo kwa iyo yokhala ndi dzina la malo omwe timagwirira ntchito. Chifukwa chake, chimangocho chidzapanga mafayilo osinthika azinthu zachilengedwe dev, popeza chizindikirochi chimayikidwa muzokonda za plugin.

Mapangidwe a fayilo dev.yaml zikhala zosavuta:

mainorder:
    components:
         - order

Chimango chimagwira ntchito ndi masinthidwe omwe amaphatikizidwa pamodzi. Pantchito yathu, sankhani dzina la gululo mainorder. Ndondomekoyi imapeza gulu lirilonse la mapulogalamu mu fayilo ya chilengedwe ndikupanga masinthidwe a iwo onse, omwe amawapeza m'mafoda ofanana.

Mu fayilo ya zoikamo zautumiki yokha dongosolo Tiyeni titchule parameter imodzi yokha:

spring.application.name: order

Tsopano tiyeni tiyendetse pulogalamu yowonjezera, ndipo ipanga kasinthidwe kofunikira pautumiki wathu molingana ndi njira yomwe yafotokozedwa m'magawo:

Sinthani mosavuta masanjidwe a microservice ndi microconfig.io

mungathe ingotsatirani ndipo popanda kukhazikitsa pulogalamu yowonjezera, kungotsitsa kugawa kwa chimango ndikuyendetsa kuchokera pamzere wolamula.
Yankho ili ndiloyenera kugwiritsidwa ntchito pa seva yomanga.

Ndikoyenera kudziwa kuti chimango chimamvetsetsa bwino katundu syntax, ndiye kuti, mafayilo wamba omwe angagwiritsidwe ntchito palimodzi chilonda masinthidwe.

Tiyeni tiwonjezere utumiki wina malipiro ndi kusokoneza yomwe ilipo.
Π’ dongosolo:

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

Π’ malipiro:

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

Vuto lalikulu ndi masinthidwe awa ndi kukhalapo kwa kuchuluka kwa kopi-paste muzokonda zautumiki. Tiyeni tiwone momwe chimango chingathandizire kuchotsa izo. Tiyeni tiyambe ndi zoonekeratu - kukhalapo kwa kasinthidwe Eureka pofotokoza za microservice iliyonse. Tiyeni tipange chikwatu chatsopano ndi fayilo ya zoikamo ndikuwonjezera masinthidwe atsopano kwa iwo:

Sinthani mosavuta masanjidwe a microservice ndi microconfig.io

Ndipo tsopano tiyeni tiwonjezere mzere ku iliyonse ya ntchito zathu #kuphatikizapo eureka.

Chikhazikitsochi chidzangopeza kasinthidwe ka eureka ndikuyikopera ku mafayilo okonzekera utumiki, pamene kusintha kosiyana kwa eureka sikudzapangidwa, popeza sitidzalongosola mu fayilo ya chilengedwe. dev.yaml. Utumiki dongosolo:

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

Titha kusunthanso makonda a database kuti apangidwe mosiyana posintha mzere wolowera kuti ukhale #kuphatikizapo eureka, oracle.

Ndizofunikira kudziwa kuti chimango chimatsata kusintha kulikonse pakukonzanso mafayilo osinthira ndikuyika mufayilo yapadera pafupi ndi fayilo yayikulu yosinthira. Cholowa mu chipika chake chikuwoneka motere: "Kusungidwa kwa katundu 1 ku order/diff-application.yaml" Izi zimakulolani kuti muzindikire mwamsanga kusintha kwa mafayilo akuluakulu osinthika.

Kuchotsa magawo wamba a kasinthidwe kumakupatsani mwayi wochotsa zolemba zambiri zosafunikira, koma sizikulolani kuti musinthe mawonekedwe amitundu yosiyanasiyana - malekezero a mautumiki athu ndi apadera komanso olembedwa molimba, izi ndizoyipa. Tiyeni tiyese kuchotsa izi.

Yankho labwino lingakhale kusunga mapeto onse mu kasinthidwe kamodzi komwe ena angatchule. Pachifukwa ichi, chithandizo cha oyika malo chalowetsedwa mu ndondomekoyi. Umu ndi momwe fayilo yosinthira idzasinthira Eureka:

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

Tsopano tiyeni tiwone momwe chosungira malochi chimagwirira ntchito. Dongosolo limapeza gawo lotchedwa mapeto ndikuyang'ana tanthauzo lake eurekap, ndikulowetsa m'malo mwa kasinthidwe athu. Koma bwanji za malo osiyanasiyana? Kuti muchite izi, pangani fayilo ya zoikamo mu mapeto mtundu wotsatira application.dev.yaml. Chikhazikitso payokha, kutengera kukula kwa fayilo, chimasankha kuti kasinthidwe kameneka ndi katani ndikuyika:

Sinthani mosavuta masanjidwe a microservice ndi microconfig.io

Zomwe zili mufayilo ya Dev:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Titha kupanga masinthidwe omwewo a madoko a ntchito zathu:

server.port: ${ports@order}.

Zokonda zonse zofunika zili pamalo amodzi, potero zimachepetsa mwayi wolakwika chifukwa cha magawo amwazikana mumafayilo osinthira.

Chikhazikitsochi chimapereka zosungirako zambiri zokonzekera, mwachitsanzo, mutha kupeza dzina lachikwatu momwe fayilo yosinthira ili ndikuigawa:

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

Chifukwa cha izi, palibe chifukwa chofotokozeranso dzina la pulogalamuyo mu kasinthidwe ndipo itha kuyikidwanso mu gawo wamba, mwachitsanzo, mu eureka yomweyo:

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

Fayilo yosinthira dongosolo adzachepetsedwa kukhala mzere umodzi:

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

Ngati sitifuna zochunira zilizonse kuchokera pamasinthidwe a makolo, titha kuzifotokoza m'makonzedwe athu ndipo zidzagwiritsidwa ntchito panthawi yomwe timapanga. Ndiye kuti, ngati pazifukwa zina tikufuna dzina lapadera la ntchito yoyitanitsa, tingosiya chizindikirocho spring.application.name.

Tiyerekeze kuti muyenera kuwonjezera makonda odula mitengo pautumiki, omwe amasungidwa mufayilo ina, mwachitsanzo, kubwerera.xml. Tiyeni tipange gulu lapadera la zokonda zake:

Sinthani mosavuta masanjidwe a microservice ndi microconfig.io

Pamakonzedwe oyambira, tiuza chimango komwe tingayike fayilo yoyika mitengo yomwe tikufuna kugwiritsa ntchito chosungira. @ConfigDir:

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

Mu fayilo kubwerera.xml timakonza zomangira zokhazikika, zomwe zimathanso kukhala ndi zosungirako zomwe chimango chidzasintha pakapangidwe ka configs, mwachitsanzo:

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

Powonjezera kuitanitsa ku kasinthidwe ka ntchito logback, timangopanga mitengo yokhazikika pa ntchito iliyonse:

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

Yakwana nthawi yoti mudziΕ΅e mwatsatanetsatane onse omwe ali ndi malo a chimango:

${this@env} - imabweretsanso dzina la chilengedwe chomwe chilipo.
${…@name} - imabweretsanso dzina la gawolo.
${…@configDir} - imabweretsanso njira yonse ku chikwatu cha chigawocho.
${…@resultDir} - imabweretsanso njira yonse ku chikwatu chomwe chikupitako (mafayilo otsatiridwawo adzayikidwa mu bukhuli).
${this@configRoot} - imabweretsanso njira yonse ku bukhu la mizu ya sitolo yokonzekera.

Dongosololi limakupatsaninso mwayi wopeza zosintha zachilengedwe, mwachitsanzo njira yopita ku java:
${env@JAVA_HOME}
Kapena, popeza chimango chalembedwa mu JAVA, titha kupeza zosintha zamakina zofanana ndi kuyimba Dongosolo::getProperty pogwiritsa ntchito kapangidwe kotere:
${[imelo ndiotetezedwa]}
Ndikoyenera kutchula chithandizo cha chinenero chowonjezera Spring EL. Mawu otsatirawa akugwiritsidwa ntchito pokonzekera:

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

ndipo mutha kugwiritsa ntchito zosintha zakumaloko mumafayilo osinthira pogwiritsa ntchito mawuwo #var:

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

Chifukwa chake, chimangochi ndi chida champhamvu kwambiri chokonzekera bwino komanso kusinthika kwa ma microservices. Chimangocho chimakwaniritsa bwino ntchito yake yayikulu - kuchotsa zolemba-paste muzoikamo, kuphatikiza zoikamo ndipo, chifukwa chake, kuchepetsa zolakwika zomwe zingatheke, ndikukulolani kuti muphatikize masinthidwe ndikusintha magawo osiyanasiyana.

Ngati muli ndi chidwi ndi chimango ichi, ndikupangira kuyendera tsamba lake lovomerezeka ndikudziwa zonse zolemba, kapena kukumba magwero apa.

Source: www.habr.com

Kuwonjezera ndemanga