Ni irọrun ṣakoso awọn atunto microservice pẹlu microconfig.io

Ọkan ninu awọn iṣoro akọkọ ni idagbasoke ati iṣẹ atẹle ti awọn iṣẹ microservices ni agbara ati iṣeto deede ti awọn iṣẹlẹ wọn. Ni ero mi, ilana tuntun le ṣe iranlọwọ pẹlu eyi microconfig.io. O gba ọ laaye lati yanju diẹ ninu awọn iṣẹ ṣiṣe iṣeto ohun elo deede ni didara.

Ti o ba ni ọpọlọpọ awọn microservices, ati pe ọkọọkan wọn wa pẹlu faili / awọn faili iṣeto ti ara rẹ, lẹhinna iṣeeṣe giga kan wa ti ṣiṣe aṣiṣe ninu ọkan ninu wọn, eyiti o le nira pupọ lati mu laisi ọgbọn to dara ati eto gedu. Iṣẹ akọkọ ti ilana ṣeto fun ararẹ ni lati dinku awọn aye atunto apẹẹrẹ ẹda-iwe, nitorinaa idinku iṣeeṣe ti ṣafikun aṣiṣe.

Jẹ́ ká wo àpẹẹrẹ kan. Jẹ ki a sọ pe a ni ohun elo ti o rọrun pẹlu faili iṣeto ni iṣu. Eleyi le jẹ eyikeyi microservice ni eyikeyi ede. Jẹ ki a wo bii ilana ṣe le lo si iṣẹ yii.

Ṣugbọn akọkọ, fun irọrun nla, jẹ ki a ṣẹda iṣẹ akanṣe kan ni Idea IDE, lẹhin fifi sori ẹrọ itanna microconfig.io ninu rẹ:

Ni irọrun ṣakoso awọn atunto microservice pẹlu microconfig.io

A ṣeto iṣeto ifilọlẹ ohun itanna, o le lo iṣeto aiyipada, bi ninu sikirinifoto loke.

Iṣẹ wa ni a pe ni aṣẹ, lẹhinna ninu iṣẹ akanṣe tuntun a yoo ṣẹda eto ti o jọra:

Ni irọrun ṣakoso awọn atunto microservice pẹlu microconfig.io

Gbe faili iṣeto ni folda pẹlu orukọ iṣẹ - ohun elo.yaml. Gbogbo awọn iṣẹ microservices ni a ṣe ifilọlẹ ni iru agbegbe kan, nitorinaa, ni afikun si ṣiṣẹda atunto fun iṣẹ funrararẹ, o jẹ dandan lati ṣe apejuwe agbegbe funrararẹ: fun eyi a yoo ṣẹda folda kan. envs ki o si fi faili kan kun pẹlu orukọ agbegbe iṣẹ wa. Nitorinaa, ilana naa yoo ṣẹda awọn faili atunto fun awọn iṣẹ ni agbegbe dev, niwon a ti ṣeto paramita yii ni awọn eto itanna.

Ilana faili dev.yaml yoo rọrun pupọ:

mainorder:
    components:
         - order

Ilana naa n ṣiṣẹ pẹlu awọn atunto ti a ṣe akojọpọ. Fun iṣẹ wa, yan orukọ fun ẹgbẹ naa akọkọ aṣẹ. Ilana naa wa iru ẹgbẹ awọn ohun elo kọọkan ninu faili ayika ati ṣẹda awọn atunto fun gbogbo wọn, eyiti o rii ninu awọn folda ti o baamu.

Ninu faili eto iṣẹ funrararẹ ibere Jẹ ki a pato paramita kan nikan fun bayi:

spring.application.name: order

Bayi jẹ ki a ṣiṣẹ ohun itanna naa, ati pe yoo ṣe agbekalẹ iṣeto ti a beere fun iṣẹ wa ni ibamu si ọna ti o ṣalaye ninu awọn ohun-ini:

Ni irọrun ṣakoso awọn atunto microservice pẹlu microconfig.io

le gba nipasẹ ati laisi fifi sori ẹrọ ohun itanna kan, nìkan ṣe igbasilẹ pinpin ilana ati ṣiṣe lati laini aṣẹ.
Ojutu yii dara fun lilo lori olupin Kọ.

O tọ lati ṣe akiyesi pe ilana ni oye daradara ohun ini sintasi, iyẹn ni, awọn faili ohun-ini lasan ti o le ṣee lo papọ ni iṣu awọn atunto.

Jẹ ki a fi iṣẹ miiran kun owo ki o si complicate awọn ti wa tẹlẹ.
В ibere:

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

В owo:

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

Iṣoro akọkọ pẹlu awọn atunto wọnyi jẹ niwaju iwọn nla ti daakọ-lẹẹmọ ninu awọn eto iṣẹ. Jẹ ká wo bi awọn ilana yoo ran xo ti o. Jẹ ká bẹrẹ pẹlu awọn julọ kedere - niwaju iṣeto ni eureka ninu awọn apejuwe ti kọọkan microservice. Jẹ ki a ṣẹda itọsọna tuntun pẹlu faili eto ki o ṣafikun iṣeto tuntun si rẹ:

Ni irọrun ṣakoso awọn atunto microservice pẹlu microconfig.io

Ati nisisiyi jẹ ki a fi ila si kọọkan ti wa ise agbese #pẹlu eureka.

Ilana naa yoo wa iṣeto eureka laifọwọyi ati daakọ si awọn faili iṣeto iṣẹ, lakoko ti iṣeto eureka lọtọ kii yoo ṣẹda, nitori a ko ni pato ni faili ayika. dev.yaml. Iṣẹ ibere:

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

A tun le gbe awọn eto data sinu iṣeto lọtọ nipa yiyipada laini agbewọle si #pẹlu eureka, oracle.

O tọ lati ṣe akiyesi pe ilana naa tọpa iyipada kọọkan nigbati awọn faili atunto atunto ati gbe e sinu faili pataki kan lẹgbẹẹ faili iṣeto akọkọ. Akọsilẹ inu akọọlẹ rẹ dabi eyi: “Awọn ohun-ini 1 ti a fipamọ si yipada si ibere/diff-application.yaml" Eyi n gba ọ laaye lati rii awọn ayipada ni iyara si awọn faili iṣeto nla.

Yiyọ awọn ẹya ti o wọpọ ti iṣeto naa gba ọ laaye lati yọkuro pupọ ti ẹda-lẹẹmọ ti ko wulo, ṣugbọn ko gba ọ laaye lati ṣẹda iṣeto ni irọrun fun awọn agbegbe oriṣiriṣi - awọn aaye ipari ti awọn iṣẹ wa jẹ alailẹgbẹ ati koodu-lile, eyi jẹ buburu. Jẹ ká gbiyanju lati yọ yi.

Ojutu ti o dara yoo jẹ lati tọju gbogbo awọn aaye ipari ni iṣeto kan ti awọn miiran le tọka si. Fun idi eyi, atilẹyin fun awọn ti o ni aaye ti ṣe afihan sinu ilana. Eyi ni bii faili iṣeto yoo yipada eureka:

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

Bayi jẹ ki a wo bi ibi-itọju yii ṣe n ṣiṣẹ. Awọn eto ri a paati ti a npè ni endpoints ati ki o nwa fun itumo ninu rẹ eurekaip, ati lẹhinna rọpo rẹ sinu iṣeto ni wa. Ṣugbọn kini nipa awọn agbegbe oriṣiriṣi? Lati ṣe eyi, ṣẹda faili eto ninu endpoints awọn wọnyi iru ohun elo.dev.yaml. Ilana ni ominira, ti o da lori ifaagun faili, pinnu iru agbegbe ti iṣeto ni jẹ ti o si gbe e:

Ni irọrun ṣakoso awọn atunto microservice pẹlu microconfig.io

Awọn akoonu faili Dev:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

A le ṣẹda iṣeto kanna fun awọn ebute oko oju omi ti awọn iṣẹ wa:

server.port: ${ports@order}.

Gbogbo awọn eto pataki wa ni aye kan, nitorinaa idinku iṣeeṣe ti awọn aṣiṣe nitori awọn aye ti tuka ni awọn faili iṣeto ni.

Ilana naa pese ọpọlọpọ awọn aye ti o ti ṣetan, fun apẹẹrẹ, o le gba orukọ itọsọna ninu eyiti faili iṣeto naa wa ki o fi si:

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

Ṣeun si eyi, ko si iwulo lati pato orukọ ohun elo ni iṣeto ni afikun ati pe o tun le gbe sinu module ti o wọpọ, fun apẹẹrẹ, ni eureka kanna:

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

Faili iṣeto ni ibere yoo dinku si ila kan:

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

Ti a ko ba nilo eto eyikeyi lati iṣeto obi, a le ṣe pato ninu iṣeto wa ati pe yoo lo lakoko iran. Iyẹn ni, ti o ba jẹ fun idi kan a nilo orukọ alailẹgbẹ fun iṣẹ aṣẹ, a yoo kan fi paramita naa silẹ orisun omi.application.orukọ.

Jẹ ki a sọ pe o nilo lati ṣafikun awọn eto gedu aṣa si iṣẹ naa, eyiti o fipamọ sinu faili lọtọ, fun apẹẹrẹ, logback.xml. Jẹ ki a ṣẹda akojọpọ eto lọtọ fun rẹ:

Ni irọrun ṣakoso awọn atunto microservice pẹlu microconfig.io

Ninu iṣeto ipilẹ, a yoo sọ fun ilana nibiti a le gbe faili awọn eto gedu ti a nilo nipa lilo ibi-ipamọ kan @ConfigDir:

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

Ninu faili logback.xml a tunto awọn appenders boṣewa, eyiti o le tun ni awọn oniwun aaye ti ilana naa yoo yipada lakoko iran awọn atunto, fun apẹẹrẹ:

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

Nipa fifi agbewọle wọle si awọn atunto iṣẹ logback, a ni atunto gedu laifọwọyi fun iṣẹ kọọkan:

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

O to akoko lati mọ ni alaye diẹ sii pẹlu gbogbo awọn ti o wa ni aaye ti ilana naa:

${yi@env} - pada awọn orukọ ti awọn ti isiyi ayika.
${…@name} - pada awọn orukọ ti awọn paati.
${…@configDir} - pada ni kikun ona si paati ká konfigi liana.
${…@resultDir} - da pada ni kikun ona si paati ká nlo liana (awọn Abajade awọn faili yoo wa ni gbe ni yi liana).
${eyi@configRoot} - pada ni kikun ona si root liana ti awọn iṣeto ni itaja.

Eto naa tun gba ọ laaye lati gba awọn oniyipada ayika, fun apẹẹrẹ ọna si java:
${env@JAVA_HOME}
Boya, niwon awọn ilana ti kọ sinu JAVA, a le gba eto oniyipada iru si ipe Eto :: getProperty lilo eto bii eyi:
${[imeeli ni idaabobo]}
O tọ lati darukọ atilẹyin fun ede itẹsiwaju Orisun omi EL. Awọn ikosile wọnyi wulo ninu iṣeto:

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

ati pe o le lo awọn oniyipada agbegbe ni awọn faili iṣeto ni lilo ikosile #var:

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

Nitorinaa, ilana naa jẹ ohun elo ti o lagbara pupọ fun isọdọtun-itanran ati iṣeto rọ ti awọn iṣẹ microservices. Ilana naa ni pipe ni pipe iṣẹ-ṣiṣe akọkọ rẹ - imukuro ẹda-lẹẹmọ ni awọn eto, isọdọkan awọn eto ati, bi abajade, idinku awọn aṣiṣe ti o ṣeeṣe, lakoko gbigba ọ laaye lati ni irọrun darapọ awọn atunto ati yi wọn pada fun awọn agbegbe oriṣiriṣi.

Ti o ba nifẹ si ilana yii, Mo ṣeduro ṣabẹwo si oju-iwe osise rẹ ki o faramọ pẹlu kikun iwe aṣẹ, tabi ma wà sinu awọn orisun nibi.

orisun: www.habr.com

Fi ọrọìwòye kun