Bi microconfig.io re bi hêsanî mîhengên mîkroxizmetê birêve bibin

Yek ji pirsgirêkên sereke di pêşkeftin û xebata paşîn a mîkroservisan de veavakirina jêhatî û rast a nimûneyên wan e. Bi dîtina min, çarçoveyek nû dikare bi vê yekê re bibe alîkar microconfig.io. Ew dihêle hûn hin karên mîhengê serîlêdana rûtîn bi rengek xweşik çareser bikin.

Ger we gelek karûbarên mîkro hene, û her yek ji wan bi pelê/pelên veavakirina xwe ve tê, wê hingê îhtimalek mezin heye ku di yek ji wan de xeletiyek çêbibe, ku meriv dikare bêyî jêhatîbûna rast û pergalek têketinê were girtin pir dijwar be. Karê sereke yê ku çarçove ji xwe re destnîşan dike ev e ku pîvanên mîhengê yên mînaka dubare kêm bike, bi vî rengî îhtîmala zêdekirina xeletiyek kêm bike.

Ka em li mînakekê binêrin. Ka em bibêjin serîlêdanek me ya hêsan bi pelek veavakirinê heye yaml. Ev dikare bi her zimanî her mîkroxizmetek be. Ka em bibînin ka çarçove çawa dikare li ser vê karûbarê were sepandin.

Lê pêşî, ji bo rehetiya mezintir, em di Idea IDE de projeyek vala biafirînin, piştî ku pêveka microconfig.io tê de saz bikin:

Bi microconfig.io re bi hêsanî mîhengên mîkroxizmetê birêve bibin

Me veavakirina destpêkirina pêvekê saz kir, hûn dikarin veavakirina xwerû bikar bînin, wekî di dîmena jorîn de.

Karûbarê me jê re ferman tê gotin, wê hingê di projeyek nû de em ê avahiyek wusa biafirînin:

Bi microconfig.io re bi hêsanî mîhengên mîkroxizmetê birêve bibin

Pelê veavakirinê di peldanka bi navê karûbarê de bixin - sepan.yaml. Hemî karûbarên mîkro di celebek hawîrdorê de têne destpêkirin, ji ber vê yekê, ji bilî afirandina mîhengek ji bo karûbarê bixwe, pêdivî ye ku jîngehê bixwe jî were ravekirin: ji bo vê yekê em ê peldankek biafirînin. envs û pelek bi navê hawîrdora me ya xebatê lê zêde bike. Bi vî rengî, çarçove dê pelên mîhengê ji bo karûbarên li hawîrdorê biafirîne dev, ji ber ku ev parametre di mîhengên pêvekê de tê danîn.

Struktura pelê dev.yaml ew ê pir hêsan be:

mainorder:
    components:
         - order

Çarçove bi mîhengên ku bi hev re têne kom kirin re dixebite. Ji bo karûbarê me, navek ji bo komê hilbijêrin fermana sereke. Çarçove her komeka weha ya serîlêdanan di pelê jîngehê de dibîne û ji bo hemî wan veavakirinan diafirîne, ku ew di peldankên têkildar de dibîne.

Di pelê mîhengên karûbarê bixwe de emir Ka em ji bo niha tenê yek parametreyê diyar bikin:

spring.application.name: order

Naha em pêvekê bimeşînin, û ew ê li gorî riya ku di taybetmendiyan de hatî destnîşan kirin veavakirina pêdivî ya karûbarê me çêbike:

Bi microconfig.io re bi hêsanî mîhengên mîkroxizmetê birêve bibin

dikare derbas bibin û bêyî ku pêvekek saz bikin, bi tenê belavkirina çarçoveyê dakêşin û wê ji rêzika fermanê bimeşînin.
Ev çareserî ji bo karanîna li ser serverek çêkirinê maqûl e.

Hêjayî gotinê ye ku çarçove bi tevahî fêm dike mal hevoksazî, ango pelên milkê asayî yên ku dikarin bi hev re tê de werin bikar anîn yaml veavakirinên.

Ka em xizmetek din lê zêde bikin diravdanî û ya heyî tevlihev bikin.
В emir:

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

В diravdanî:

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

Pirsgirêka sereke ya van mîhengan hebûna hejmareke mezin a kopî-paste di mîhengên karûbarê de ye. Ka em bibînin ka çarçove dê çawa alîkariyê bike ku jê xilas bibe. Ka em bi ya herî eşkere dest pê bikin - hebûna veavakirinê eureka di danasîna her mîkroxizmetê de. Ka em bi pelê mîhengan re pelrêçek nû biafirînin û vesaziyek nû lê zêde bikin:

Bi microconfig.io re bi hêsanî mîhengên mîkroxizmetê birêve bibin

Û naha em rêzê li her projeya xwe zêde bikin #eureka tê de.

Çarçove dê bixweber veavakirina eureka bibîne û wê li pelên veavakirina karûbarê kopî bike, dema ku veavakirinek eureka ya cihê neyê afirandin, ji ber ku em ê wê di pelê jîngehê de diyar nekin. dev.yaml. Xizmetkar emir:

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

Di heman demê de em dikarin mîhengên databasê bi guheztina xeta import-ê veguhezînin veavakirinek cihê #Eureka, oracle tê de.

Hêjayî gotinê ye ku çarçove dema ku pelên vesazkirinê ji nû ve çêdike her guhertinek dişopîne û wê di pelek taybetî de li kêleka pelê veavakirina sereke bi cih dike. Navnîşa di têketina wê de wiha xuya dike: "1 milkê hilanîn tê guhertin order/diff-application.yaml" Ev dihêle hûn zû guheztinên pelên mîhengê yên mezin bibînin.

Rakirina beşên hevpar ên mîhengê dihêle hûn ji gelek kopî-paste-ya nehewce xilas bibin, lê rê nade ku hûn bi nermî ji bo hawîrdorên cihêreng mîhengek biafirînin - xalên dawî yên karûbarên me bêhempa û hişk-kodkirî ne, ev xirab e. Ka em hewl bidin ku vê rakin.

Çareseriyek baş dê ev be ku hemî xalên dawiyê di yek veavakirinê de ku yên din dikarin referans bikin bimînin. Ji bo vê armancê piştgirî ji bo cihgiran di çarçoveyê de hate destnîşan kirin. Bi vî rengî pelê veavakirinê dê biguhere eureka:

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

Naha em bibînin ka ev cîhgir çawa dixebite. Pergal beşek bi navê xwe dibîne xalên dawî û li wateyekê digere eurekaip, û dûv re wê di veavakirina me de cîh digire. Lê li ser hawîrdorên cûda çi? Ji bo vê yekê, pelê mîhengan di nav de biafirînin xalên dawî cureyê jêrîn application.dev.yaml. Çarçoveyek serbixwe, li ser bingeha dirêjkirina pelê, biryar dide ku ev veavakirin girêdayî kîjan hawîrdorê ye û wê bar dike:

Bi microconfig.io re bi hêsanî mîhengên mîkroxizmetê birêve bibin

Naveroka pelê Dev:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Em dikarin heman veavakirinê ji bo benderên karûbarên xwe biafirînin:

server.port: ${ports@order}.

Hemî mîhengên girîng li yek cîhek in, bi vî rengî îhtîmala xeletiyan ji ber pîvanên belavbûyî yên di pelên mîhengê de kêm dike.

Çarçove gelek cîhgiranên amade peyda dike, mînakî, hûn dikarin navê pelrêça ku pelê veavakirinê tê de ye bistînin û wê destnîşan bikin:

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

Bi saya vê yekê, ne hewce ye ku di veavakirinê de navê serîlêdanê zêde were destnîşankirin û ew dikare di modulek hevpar de jî were danîn, mînakî, di heman eureka de:

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

Pelê veavakirinê emir dê bibe yek rêz:

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

Ger ji veavakirina dêûbav ji me re mîhengek ne hewce be, em dikarin wê di veavakirina xwe de diyar bikin û ew ê di dema nifşê de were sepandin. Ango, heke ji ber hin sedeman em ji bo karûbarê fermanê navek bêhempa hewce ne, em ê tenê pîvanê bihêlin bihar.application.name.

Ka em bibêjin ku hûn hewce ne ku mîhengên têketina xwerû li karûbarê zêde bikin, ku di pelek cûda de têne hilanîn, mînakî, logback.xml. Ka em ji bo wê komek mîhengên cihê biafirînin:

Bi microconfig.io re bi hêsanî mîhengên mîkroxizmetê birêve bibin

Di veavakirina bingehîn de, em ê ji çarçovê re vebêjin ku em pelê mîhengên têketinê li ku derê bi karanîna cîhgirek hewcedar bi cîh bikin @ConfigDir:

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

Di pelê de logback.xml em pêvekên standard mîheng dikin, ku di heman demê de dikarin cîhgiran jî bihewînin ku çarçove dê di dema hilberîna mîhengan de biguhezîne, mînakî:

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

Bi lê zêdekirina import li mîhengên karûbarê logback, em bixweber ji bo her karûbar têketinek mîheng digirin:

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

Wext e ku meriv bi hûrgulî bi hemî cîhên berdest ên çarçoweyê re nas bike:

${this@env} - navê hawîrdora heyî vedigerîne.
${…@name} - navê pêkhateyê vedigerîne.
${…@configDir} - riya tevahî vedigerîne pelrêça mîhengê ya pêkhateyê.
${…@resultDir} - riya tevahî vedigerîne pelrêça mebesta pêkhateyê (pelên encam dê di vê pelrêçê de bêne danîn).
${this@configRoot} - riya tevahî vedigerîne pelrêça root ya dikana veavakirinê.

Pergal di heman demê de dihêle hûn guhêrbarên jîngehê bistînin, mînakî riya java:
${env@JAVA_HOME}
An jî, ji ber ku çarçove tê de hatî nivîsandin JAVA, em dikarin guhêrbarên pergalê yên mîna bangê bistînin Pergal::getProperty bikaranîna avahiyeke bi vî rengî:
${[email parastî]}
Hêjayî gotinê ye ku piştgirî ji bo zimanê dirêjkirinê Bihar EL. Gotinên jêrîn di veavakirinê de têne sepandin:

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

û hûn dikarin guhêrbarên herêmî di pelên veavakirinê de bi karanîna îfadeyê bikar bînin #var:

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

Ji ber vê yekê, çarçoveyek ji bo birêkûpêkkirin û veavakirina maqûl a mîkroxizmetan amûrek pir bi hêz e. Çarçove bi rengek bêkêmasî peywira xwe ya sereke pêk tîne - rakirina kopî-paste di mîhengan de, berhevkirina mîhengan û, wekî encamek, kêmkirina xeletiyên gengaz, di heman demê de dihêle hûn bi hêsanî veavakirinan berhev bikin û wan ji bo derdorên cihêreng biguhezînin.

Heke hûn di vê çarçoveyê de eleqedar in, ez pêşniyar dikim ku serdana rûpela wê ya fermî bikin û bi tevahî nas bikin belgekirin, an jî li çavkaniyan bikolin vir.

Source: www.habr.com

Add a comment