Lawula kalula ukulungiselelwa kwe-microservice nge-microconfig.io

Enye yezinkinga ezinkulu ekuthuthukisweni nasekusebenzeni okulandelayo kwama-microservices ukucushwa okunekhono nokunembile kwezimo zabo. Ngokubona kwami, uhlaka olusha lungasiza kulokhu microconfig.io. Ikuvumela ukuthi uxazulule imisebenzi ethile yokumisa uhlelo lokusebenza ngobuhle.

Uma unama-microservices amaningi, futhi ngayinye yazo iza nefayela/amafayela ayo okucushwa, khona-ke kukhona amathuba aphezulu okwenza iphutha kwelinye lawo, okungaba nzima kakhulu ukubamba ngaphandle kwekhono elifanele kanye nesistimu yokungena. Umsebenzi oyinhloko uhlaka oluzibekela lona wukunciphisa amapharamitha wokucushwa kwesibonelo esiyimpinda, ngaleyo ndlela kuncishiswe amathuba okwengeza iphutha.

Ake sibheke isibonelo. Ake sithi sinesicelo esilula esinefayela lokumisa yaml. Lokhu kungaba yinoma iyiphi i-microservice kunoma yiluphi ulimi. Ake sibone ukuthi uhlaka lungasetshenziswa kanjani kule sevisi.

Kepha okokuqala, ukuze kube lula kakhulu, ake sakhe iphrojekthi engenalutho ku-Idea IDE, ngemuva kokufaka i-plugin ye-microconfig.io kuyo:

Lawula kalula ukulungiselelwa kwe-microservice nge-microconfig.io

Setha ukucushwa kokuqaliswa kwe-plugin, ungasebenzisa ukucushwa okuzenzakalelayo, njengakusithombe-skrini esingenhla.

Inkonzo yethu ibizwa ngokuthi i-oda, khona-ke kuphrojekthi entsha sizokwakha isakhiwo esifanayo:

Lawula kalula ukulungiselelwa kwe-microservice nge-microconfig.io

Faka ifayela lokumisa kufolda enegama lesevisi - isicelo.yaml. Wonke ama-microservices ethulwa endaweni ethile, ngakho-ke, ngaphezu kokwenza ukulungiselelwa kwenkonzo ngokwayo, kuyadingeka ukuchaza imvelo ngokwayo: kulokhu sizokwakha ifolda. envs bese wengeza ifayela kuyo enegama lendawo esisebenzela kuyo. Ngakho-ke, uhlaka luzodala amafayela okucushwa kwezinsizakalo endaweni dev, njengoba le pharamitha isethwe kuzilungiselelo ze-plugin.

Isakhiwo sefayela dev.yaml kuzoba lula kakhulu:

mainorder:
    components:
         - order

Uhlaka lusebenza nezilungiselelo eziqoqwe ndawonye. Ngesevisi yethu, khetha igama leqembu i-mainorder. Uhlaka luthola iqembu ngalinye elinjalo lezinhlelo zokusebenza efayeleni lemvelo futhi lidale ukulungiselelwa kwazo zonke, elikuthola kumafolda ahambisanayo.

Efayelini lezilungiselelo zesevisi ngokwalo Oda Ake sicacise ipharamitha eyodwa kuphela okwamanje:

spring.application.name: order

Manje ake siqalise i-plugin, futhi izokhiqiza ukucushwa okudingekayo kwenkonzo yethu ngokuvumelana nendlela echazwe ezakhiweni:

Lawula kalula ukulungiselelwa kwe-microservice nge-microconfig.io

unga dlula futhi ngaphandle kokufaka i-plugin, vele ulande ukusatshalaliswa kohlaka bese ulisebenzisa emugqeni womyalo.
Lesi sixazululo sifanele ukusetshenziswa kuseva yokwakha.

Kuyaphawuleka ukuthi uhlaka luqonda ngokuphelele impahla i-syntax, okungukuthi, amafayela esakhiwo ajwayelekile angasetshenziswa ndawonye ku yaml ukucupha.

Ake sengeze enye isevisi lokukhokha bese uxabanisa ekhona.
Π’ Oda:

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

Π’ lokukhokha:

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

Inkinga enkulu ngalokhu kulungiselelwa ukuba khona kwenani elikhulu lokukopisha-unamathisele kuzilungiselelo zesevisi. Ake sibone ukuthi uhlaka luzosiza kanjani ukuqeda. Ake siqale ngokusobala kakhulu - ukuba khona kokucushwa i-eureka encazelweni ye-microservice ngayinye. Masidale uhla lwemibhalo olusha ngefayela lezilungiselelo bese sengeza ukucushwa okusha kulo:

Lawula kalula ukulungiselelwa kwe-microservice nge-microconfig.io

Futhi manje ake sengeze umugqa kuphrojekthi yethu ngayinye #ihlanganisa i-eureka.

Uhlaka luzothola ngokuzenzakalelayo ukucushwa kwe-eureka futhi lukopishe kumafayela okulungiselelwa kwesevisi, kuyilapho ukucushwa kwe-eureka okuhlukile ngeke kudalwe, ngoba ngeke sikucacise kufayela lemvelo. dev.yaml. Isevisi Oda:

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

Futhi singahambisa izilungiselelo zedathabheyisi ekucushweni okuhlukile ngokushintsha ulayini wokungenisa ukuze ube #faka i-eureka, i-oracle.

Kuyaphawuleka ukuthi uhlaka lulandelela ushintsho ngalunye lapho luvuselela amafayela okumisa futhi luwabeke efayeleni elikhethekile eduze kwefayela eliyinhloko lokumisa. Okufakiwe kulogi lwayo kubukeka kanje: β€œImpahla egciniwe engu-1 ishintsha ku order/diff-application.yaml" Lokhu kukuvumela ukuthi ubone ngokushesha izinguquko kumafayela amakhulu okumisa.

Ukususa izingxenye ezivamile zokucushwa kukuvumela ukuthi ulahle okuningi okungadingekile kokukopisha-unamathise, kodwa akukuvumeli ukuthi udale ngokuguquguqukayo ukucushwa kwezindawo ezahlukahlukene - iziphetho zezinsizakalo zethu zihlukile futhi zinekhodi eqinile, lokhu kubi. Ake sizame ukususa lokhu.

Isixazululo esihle kungaba ukugcina wonke amaphoyinti ekucushweni okukodwa abanye abangabhekisela kukho. Ngale njongo, ukusekelwa kwezimeli zethulwe ohlakeni. Yile ndlela ifayela lokucushwa elizoshintsha ngayo i-eureka:

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

Manje ake sibone ukuthi lesi simeli sisebenza kanjani. Isistimu ithola ingxenye eqanjwe ukuphela futhi ubheka incazelo kuyo eurekap, bese siyifaka esikhundleni sokucushwa kwethu. Kodwa kuthiwani ngezindawo ezahlukene? Ukuze wenze lokhu, dala ifayela lezilungiselelo ku ukuphela uhlobo olulandelayo application.dev.yaml. Uhlaka ngokuzimela, olususelwe kusandiso sefayela, lunquma ukuthi iyiphi indawo okucushwa kuyo futhi luyasilayisha:

Lawula kalula ukulungiselelwa kwe-microservice nge-microconfig.io

Okuqukethwe kwefayela le-Dev:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Singadala ukucushwa okufanayo kwezimbobo zezinsizakalo zethu:

server.port: ${ports@order}.

Zonke izilungiselelo ezibalulekile zisendaweni eyodwa, ngaleyo ndlela zinciphisa amathuba okuba namaphutha ngenxa yemingcele ehlakazekile kumafayela okumisa.

Uhlaka luhlinzeka ngezibambindawo eziningi esezenziwe ngomumo, ngokwesibonelo, ungathola igama lenkomba lapho ifayela lokumisa litholakala khona futhi ulinikeze:

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

Ngenxa yalokhu, asikho isidingo sokucacisa igama lohlelo lokusebenza ekucushweni futhi lingafakwa kumojula evamile, isibonelo, ku-eureka efanayo:

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

Ifayela lokumisa Oda izokwehliswa ibe umugqa owodwa:

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

Uma singadingi noma yisiphi isilungiselelo esivela ekucushweni komzali, singakucacisa ekucushweni kwethu futhi sizosetshenziswa ngesikhathi sokukhiqiza. Okusho ukuthi, uma ngesizathu esithile sidinga igama eliyingqayizivele lesevisi ye-oda, sizovele sishiye ipharamitha spring.application.name.

Ake sithi udinga ukwengeza izilungiselelo zokungena ngokwezifiso enkonzweni, ezigcinwa efayeleni elihlukile, isibonelo, logback.xml. Masidale iqembu elihlukile lezilungiselelo zalo:

Lawula kalula ukulungiselelwa kwe-microservice nge-microconfig.io

Ekucushweni okuyisisekelo, sizotshela uhlaka ukuthi singabeka kuphi ifayela lezilungiselelo zokugawuna esizidingayo sisebenzisa isimeli. @ConfigDir:

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

Kufayela logback.xml silungisa izithasiselo ezijwayelekile, zona ezingaqukatha izimeli uhlaka oluzozishintsha ngesikhathi sokwenziwa kokucushwa, isibonelo:

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

Ngokungeza ukungenisa ekulungiselelweni kwesevisi i-logback, sithola ngokuzenzakalelayo ukungena okulungiselelwe kusevisi ngayinye:

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

Isikhathi sokujwayelana nemininingwane eminingi nazo zonke izibambindawo ezitholakalayo zohlaka:

${this@env} - ibuyisela igama lendawo yamanje.
${…@name} β€” ibuyisela igama lengxenye.
${…@configDir} β€” ibuyisela indlela egcwele kuhla lwemibhalo lwengxenye.
${…@resultDir} β€” ibuyisela indlela egcwele kuhla lwemibhalo lwengxenye (amafayela azotholakala azofakwa kulolu hlu lwemibhalo).
${this@configRoot} β€” ibuyisela indlela egcwele kumkhombandlela wesitolo sokucushwa.

Uhlelo futhi likuvumela ukuthi uthole okuguquguqukayo kwemvelo, isibonelo indlela eya ku-java:
${env@JAVA_HOME}
Noma, njengoba uhlaka lubhalwe ngo I-JAVA, singathola okuguquguqukayo kwesistimu okufana nocingo Isistimu::getProperty usebenzisa isakhiwo esifana nalesi:
${[i-imeyili ivikelwe]}
Kufanelekile ukusho usekelo lolimi olunwetshiwe Intwasahlobo EL. Izinkulumo ezilandelayo ziyasebenza ekucushweni:

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

futhi ungasebenzisa okuguquguqukayo kwasendaweni kumafayela okumisa usebenzisa isisho #var:

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

Ngakho-ke, uhlaka luyithuluzi elinamandla lokulungisa kahle kanye nokucushwa okuguquguqukayo kwama-microservices. Uhlaka lufeza ngokuphelele umsebenzi walo oyinhloko - ukususa ikhophi-unamathisele kuzilungiselelo, ukuhlanganisa izilungiselelo futhi, ngenxa yalokho, ukunciphisa amaphutha angenzeka, kuyilapho kukuvumela ukuthi uhlanganise kalula izilungiselelo futhi uziguqule ezindaweni ezahlukene.

Uma unentshisekelo kulolu hlaka, ngincoma ukuthi uvakashele ikhasi layo elisemthethweni futhi ujwayelane ngokugcwele imibhalo, noma umbe emithonjeni lapha.

Source: www.habr.com

Engeza amazwana