A sauƙaƙe sarrafa saitunan microservice tare da microconfig.io

Ɗaya daga cikin manyan matsalolin ci gaba da aiki na ƙananan ƙananan ayyuka shine dacewa da daidaitaccen daidaita yanayin su. A ganina, sabon tsarin zai iya taimakawa da wannan microconfig.io. Yana ba ku damar warware wasu ayyuka na saitin aikace-aikacen yau da kullun da kyau.

Idan kana da microservices da yawa, kuma kowannensu ya zo da nasa fayil/fayil ɗinsa, to akwai yuwuwar yin kuskure a ɗayansu, wanda zai iya zama da wahala a kama ba tare da ƙwarewar da ta dace ba da tsarin shiga. Babban aikin da tsarin ya tsara wa kansa shine rage kwafin sigogin daidaitawa, ta haka rage yuwuwar ƙara kuskure.

Bari mu kalli misali. Bari mu ce muna da aikace-aikace mai sauƙi tare da fayil ɗin sanyi yaml. Wannan na iya zama kowane microservice a kowane harshe. Bari mu ga yadda za a iya amfani da tsarin ga wannan sabis ɗin.

Amma da farko, don ƙarin dacewa, bari mu ƙirƙiri aikin fanko a cikin Idea IDE, bayan shigar da kayan aikin microconfig.io a ciki:

A sauƙaƙe sarrafa saitunan microservice tare da microconfig.io

Mun saita saitin ƙaddamar da plugin ɗin, zaku iya amfani da saitunan tsoho, kamar yadda yake a cikin hoton da ke sama.

Ana kiran sabis ɗinmu tsari, to a cikin sabon aikin za mu ƙirƙiri irin wannan tsari:

A sauƙaƙe sarrafa saitunan microservice tare da microconfig.io

Sanya fayil ɗin sanyi a cikin babban fayil tare da sunan sabis - aikace-aikace.yaml. Ana ƙaddamar da duk microservices a cikin wani nau'in yanayi, don haka, ban da ƙirƙirar saiti don sabis ɗin kanta, yana da mahimmanci a bayyana yanayin da kansa: don wannan za mu ƙirƙiri babban fayil. envs kuma ƙara fayil zuwa gare shi tare da sunan yanayin aikin mu. Don haka, tsarin zai haifar da fayilolin sanyi don ayyuka a cikin muhalli dev, tun da an saita wannan siga a cikin saitunan plugin.

Tsarin fayil dev.yaml zai zama mai sauqi qwarai:

mainorder:
    components:
         - order

Tsarin yana aiki tare da saitunan da aka haɗa tare. Don sabis ɗinmu, zaɓi suna don ƙungiyar babban tsari. Tsarin yana samo kowane irin wannan rukunin aikace-aikacen a cikin fayil ɗin yanayi kuma ya ƙirƙira jeri ga duka su, waɗanda yake samuwa a cikin manyan fayiloli masu dacewa.

A cikin saitunan sabis fayil kanta domin Bari mu ƙayyade siga ɗaya kawai a yanzu:

spring.application.name: order

Yanzu bari mu gudanar da plugin ɗin, kuma zai samar da tsarin da ake buƙata don sabis ɗinmu bisa ga hanyar da aka ƙayyade a cikin kaddarorin:

A sauƙaƙe sarrafa saitunan microservice tare da microconfig.io

iya yi tare kuma ba tare da shigar da plugin ba, kawai zazzage tsarin rarrabawa da gudanar da shi daga layin umarni.
Wannan bayani ya dace don amfani akan uwar garken ginin.

Yana da kyau a lura cewa tsarin ya fahimta daidai dukiya syntax, wato, fayilolin dukiya na yau da kullun waɗanda za a iya amfani da su tare a ciki yaml daidaitawa.

Bari mu ƙara wani sabis biya kuma ku rikitar da wanda ke akwai.
В domin:

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

В biya:

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

Babban matsala tare da waɗannan saitunan shine kasancewar babban adadin kwafi a cikin saitunan sabis. Bari mu ga yadda tsarin zai taimaka kawar da shi. Bari mu fara tare da mafi bayyane - kasancewar sanyi eureka a cikin bayanin kowane microservice. Bari mu ƙirƙiri sabon kundin adireshi tare da fayil ɗin saituna kuma ƙara sabon tsari gare shi:

A sauƙaƙe sarrafa saitunan microservice tare da microconfig.io

Kuma yanzu bari mu ƙara layi zuwa kowane aikin mu #hada eureka.

Tsarin zai nemo saitin eureka ta atomatik kuma ya kwafa shi zuwa fayilolin tsarin sabis, yayin da ba za a ƙirƙiri keɓantaccen tsarin eureka ba, tunda ba za mu ƙididdige shi a cikin fayil ɗin mahalli ba. dev.yaml. Sabis domin:

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

Hakanan zamu iya matsar da saitunan bayanan bayanai zuwa wani tsari daban ta canza layin shigo da zuwa #hada eureka, baka.

Yana da kyau a lura cewa tsarin yana bin kowane canji lokacin sabunta fayilolin sanyi kuma ya sanya shi cikin fayil na musamman kusa da babban fayil ɗin sanyi. Shigar da ke cikin log ɗinsa yayi kama da haka: “Ajiye 1 dukiya yana canzawa zuwa oda/diff-application.yaml" Wannan yana ba ku damar gano canje-canje da sauri zuwa manyan fayilolin sanyi.

Cire ɓangarorin gama gari na daidaitawa yana ba ku damar kawar da yawancin kwafin kwafin da ba dole ba, amma ba ya ba ku damar ƙirƙirar tsari don yanayi daban-daban - ƙarshen ayyukanmu na musamman ne kuma masu wuyar ƙima, wannan mara kyau. Mu yi kokarin cire wannan.

Kyakkyawan bayani shine kiyaye duk wuraren ƙarewa a cikin tsari ɗaya wanda wasu zasu iya tunani. Don wannan dalili, an gabatar da tallafi ga masu riƙe da wuri a cikin tsarin. Wannan shine yadda fayil ɗin sanyi zai canza eureka:

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

Yanzu bari mu ga yadda wannan wurin zama ke aiki. Tsarin yana samo wani sashi mai suna ƙarshen kuma yana neman ma'ana a cikinsa eurekaip, sa'an nan kuma musanya shi a cikin tsarin mu. Amma fa game da mahalli daban-daban? Don yin wannan, ƙirƙiri fayil ɗin saituna a ciki ƙarshen nau'in mai zuwa aikace-aikace.dev.yaml. Tsarin da kansa, dangane da tsawo na fayil, yana yanke shawarar wane yanayi ne wannan tsarin ya ke kuma ya loda shi:

A sauƙaƙe sarrafa saitunan microservice tare da microconfig.io

Abubuwan da ke cikin fayil na Dev:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Za mu iya ƙirƙirar tsari iri ɗaya don tashar jiragen ruwa na ayyukanmu:

server.port: ${ports@order}.

Duk mahimman saituna suna wuri ɗaya, don haka rage yuwuwar kurakurai saboda tarwatsa sigogi a cikin fayilolin sanyi.

Tsarin yana ba da masu riƙe wuri da yawa, alal misali, zaku iya samun sunan kundin adireshi wanda fayil ɗin sanyi yake cikinsa kuma sanya shi:

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

Godiya ga wannan, babu buƙatar ƙara ƙayyadadden sunan aikace-aikacen a cikin tsari kuma ana iya sanya shi a cikin tsarin gama gari, misali, a cikin eureka ɗaya:

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

Fayil ɗin daidaitawa domin za a rage zuwa layi daya:

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

Idan ba mu buƙatar kowane saiti daga tsarin iyaye, za mu iya ƙayyade shi a cikin tsarin mu kuma za a yi amfani da shi yayin tsarawa. Wato, idan saboda wasu dalilai muna buƙatar suna na musamman don sabis ɗin oda, za mu bar ma'aunin kawai spring.application.name.

Bari mu ce kana buƙatar ƙara saitunan shiga na al'ada zuwa sabis ɗin, waɗanda aka adana a cikin wani fayil daban, misali, shiga.xml. Bari mu ƙirƙiri rukunin saituna daban don shi:

A sauƙaƙe sarrafa saitunan microservice tare da microconfig.io

A cikin tsari na asali, za mu gaya wa tsarin inda za mu sanya fayil ɗin saitin shiga da muke buƙata ta amfani da mai riƙewa @ConfigDir:

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

A cikin fayil shiga.xml muna saita daidaitattun appenders, wanda kuma zai iya ƙunsar masu riƙewa waɗanda tsarin zai canza yayin tsara tsarin saiti, misali:

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

Ta ƙara shigo da kaya zuwa saitunan sabis shiga, muna samun saita shiga ta atomatik don kowane sabis:

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

Lokaci ya yi da za a san ƙarin dalla-dalla tare da duk waɗanda ke akwai na tsarin:

${wannan@env} - mayar da sunan yanayin halin yanzu.
${…@name} - mayar da sunan bangaren.
${…@configDir} - yana mayar da cikakken hanyar zuwa kundin tsarin saitin kayan aikin.
${…@resultDir} - yana dawo da cikakken hanyar zuwa wurin jagorar abubuwan da aka nufa (za'a sanya fayilolin da aka samu a cikin wannan kundin adireshin).
${wannan@configRoot} - yana dawo da cikakken hanyar zuwa tushen kundin adireshi na kantin sayar da kaya.

Hakanan tsarin yana ba ku damar samun canjin yanayi, misali hanyar zuwa java:
${env@JAVA_HOME}
Ko dai, tunda an rubuta tsarin a ciki JAVA, za mu iya samun tsarin tsarin kama da kira Tsarin :: GetProperty ta amfani da tsari kamar haka:
${[email kariya]}
Yana da daraja ambaton goyan bayan yaren faɗaɗawa Spring EL. Kalmomi masu zuwa suna aiki a cikin tsari:

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

kuma zaka iya amfani da masu canji na gida a cikin fayilolin sanyi ta amfani da magana #var:

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

Don haka, tsarin babban kayan aiki ne mai ƙarfi don daidaitawa da sassauƙan daidaitawar microservices. Tsarin ya cika ainihin aikinsa - kawar da kwafin-manna a cikin saituna, ƙarfafa saitunan kuma, sakamakon haka, rage yawan kurakurai masu yiwuwa, yayin da ba ku damar haɗawa cikin sauƙi da canza su don wurare daban-daban.

Idan kuna sha'awar wannan tsarin, Ina ba da shawarar ziyartar shafin yanar gizon sa kuma ku san cikakken takardun shaida, ko tona cikin kafofin a nan.

source: www.habr.com

Add a comment