E hoʻokele maʻalahi i nā hoʻonohonoho microservice me microconfig.io

ʻO kekahi o nā pilikia nui i ka hoʻomohala ʻana a me ka hana ma hope o nā microservices ʻo ia ka hoʻonohonoho kūpono a pololei o kā lākou mau manawa. I koʻu manaʻo, hiki i kahi hoʻolālā hou ke kōkua i kēia microconfig.io. Hiki iā ʻoe ke hoʻoponopono i kekahi mau hana hoʻonohonoho noi maʻamau me ka nani.

Inā he nui kāu microservices, a hele mai kēlā me kēia o lākou me kāna faila / faila hoʻonohonoho ponoʻī, a laila aia kahi kiʻekiʻe o ka hana hewa i kekahi o lākou, hiki ke paʻakikī loa e hopu me ka ʻole o ke akamai kūpono a me kahi ʻōnaehana logging. ʻO ka hana nui i hoʻonohonoho ʻia e ka framework nona iho, ʻo ia ka hōʻemi ʻana i nā ʻāpana hoʻonohonoho hoʻonohonoho lua, a laila e hōʻemi ana i ka hiki ke hoʻohui i kahi hewa.

E nānā kākou i kekahi laʻana. E ʻōlelo mākou he noi maʻalahi me kahi faila hoʻonohonoho ʻehu. Hiki kēia i kekahi microservice ma kekahi ʻōlelo. E ʻike kākou pehea e hoʻohana ʻia ai ke ʻano hana i kēia lawelawe.

Akā ʻo ka mea mua, no ka ʻoi aku ka maʻalahi, e hana mākou i kahi papahana ʻole ma Idea IDE, ma hope o ka hoʻokomo ʻana i ka plugin microconfig.io i loko:

E hoʻokele maʻalahi i nā hoʻonohonoho microservice me microconfig.io

Hoʻonohonoho mākou i ka hoʻonohonoho hoʻonohonoho plugin, hiki iā ʻoe ke hoʻohana i ka hoʻonohonoho paʻamau, e like me ka kiʻi ma luna.

Ua kapa ʻia kā mākou lawelawe, a laila ma kahi papahana hou e hana mākou i kahi ʻano like:

E hoʻokele maʻalahi i nā hoʻonohonoho microservice me microconfig.io

E kau i ka faila hoʻonohonoho i loko o ka waihona me ka inoa lawelawe - palapala noi.yaml. Hoʻokuʻu ʻia nā microservices āpau i kekahi ʻano kaiapuni, no laila, i ka hoʻohui ʻana i kahi config no ka lawelawe ponoʻī, pono e wehewehe i ke kaiapuni ponoʻī: no kēia mea e hana mākou i kahi waihona. envs a hoʻohui i kahi faila me ka inoa o kā mākou wahi hana. No laila, e hana ka framework i nā faila hoʻonohonoho no nā lawelawe i ke kaiapuni make, no ka mea ua hoʻonohonoho ʻia kēia ʻāpana i nā hoʻonohonoho plugin.

Hoʻolālā waihona dev.yaml e maʻalahi loa ia:

mainorder:
    components:
         - order

Hana ʻia ke kāʻei me nā hoʻonohonoho i hui pū ʻia. No kā mākou lawelawe, koho i kahi inoa no ka hui hoʻonohonoho nui. Loaʻa ka framework i kēlā me kēia pūʻulu o nā noi i loko o ka faila environment a hana i nā hoʻonohonoho no lākou a pau, i loaʻa iā ia ma nā waihona pili.

Ma ka waihona hoʻonohonoho lawelawe pono'ī aoao E kuhikuhi i hoʻokahi wale nō parameter i kēia manawa:

spring.application.name: order

I kēia manawa, e holo kāua i ka plugin, a e hana ia i ka hoʻonohonoho pono no kā mākou lawelawe e like me ke ala i kuhikuhi ʻia i nā waiwai:

E hoʻokele maʻalahi i nā hoʻonohonoho microservice me microconfig.io

e hiki e hana pū me ka pilikia 'ole a me ka ʻole o ka hoʻokomo ʻana i kahi plugin, e hoʻoiho wale i ka hoʻohele ʻana i ka framework a holo ia mai ka laina kauoha.
He kūpono kēia hoʻonā no ka hoʻohana ʻana ma kahi kikowaena kūkulu.

Pono e hoʻomaopopo i ka hoʻomaopopo pono ʻana o ka framework waiwai syntax, ʻo ia hoʻi, nā waihona waiwai maʻamau i hiki ke hoʻohana pū ʻia ma ʻehu nā hoʻonohonoho.

E hoʻohui i kahi lawelawe ʻē aʻe uku a hoʻopilikino i ka mea i loaʻa.
В aoao:

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

В uku:

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

ʻO ka pilikia nui me kēia mau hoʻonohonoho ʻana, ʻo ia ka nui o ka kope-paste i nā hoʻonohonoho lawelawe. E ʻike kākou pehea e kōkua ai ke kāʻei e hoʻopau iā ia. E hoʻomaka me ka mea maopopo loa - ke alo o ka hoʻonohonoho eureka i ka wehewehe ʻana o kēlā me kēia microservice. E hana mākou i papa kuhikuhi hou me ka faila hoʻonohonoho a hoʻohui i kahi hoʻonohonoho hou iā ia:

E hoʻokele maʻalahi i nā hoʻonohonoho microservice me microconfig.io

A i kēia manawa e hoʻohui i ka laina i kēlā me kēia o kā mākou papahana #include eureka.

E ʻike maʻalahi ka framework i ka hoʻonohonoho eureka a kope iā ia i nā faila hoʻonohonoho lawelawe, ʻoiai ʻaʻole e hana ʻia kahi hoʻonohonoho eureka ʻokoʻa, no ka mea ʻaʻole mākou e kuhikuhi iā ia i ka faila environment. dev.yaml. lawelawe aoao:

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

Hiki iā mākou ke hoʻoneʻe i nā hoʻonohonoho waihona i kahi hoʻonohonoho ʻokoʻa ma o ka hoʻololi ʻana i ka laina hoʻokomo i #include eureka, ʻōlelo ʻōlelo.

He mea pono e hoʻomaopopo i ka hoʻopili ʻana o ka framework i kēlā me kēia hoʻololi i ka wā e hana hou ai i nā faila hoʻonohonoho a waiho ʻia i kahi faila kūikawā ma hope o ka faila hoʻonohonoho nui. Penei ke ʻano o ke komo ʻana i loko o kāna log: “Hoʻololi 1 waiwai i mālama ʻia kauoha/diff-application.yaml" Hiki iā ʻoe ke ʻike koke i nā loli i nā faila hoʻonohonoho nui.

ʻO ka wehe ʻana i nā ʻāpana maʻamau o ka hoʻonohonoho e hiki ai iā ʻoe ke hoʻopau i ka nui o nā kope-paste pono ʻole, akā ʻaʻole ia e ʻae iā ʻoe e hana maʻalahi i kahi hoʻonohonoho no nā kaiapuni like ʻole - he ʻokoʻa a paʻakikī nā hopena o kā mākou lawelawe, ʻino kēia. E ho'āʻo kākou e wehe i kēia.

ʻO kahi hoʻonā maikaʻi, ʻo ia ka mālama ʻana i nā helu hope i hoʻokahi hoʻonohonoho i hiki i nā poʻe ʻē aʻe ke kuhikuhi. No kēia kumu, ua hoʻokomo ʻia ke kākoʻo no ka poʻe paʻa i ke kahua. Penei ka hoʻololi ʻana o ka faila hoʻonohonoho eureka:

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

I kēia manawa e ʻike kākou i ka hana ʻana o kēia placeholder. Loaʻa ka ʻōnaehana i kahi mea i kapa ʻia hopena a nana i ke ano o loko eurekaip, a laila hoʻololi iā ia i kā mākou hoʻonohonoho. Akā, pehea nā kaiapuni like ʻole? No ka hana ʻana i kēia, hana i kahi faila hoʻonohonoho ma hopena ʻo kēia ʻano application.dev.yaml. Hoʻoholo kūʻokoʻa ka framework, e pili ana i ka hoʻonui ʻana i ka faila, e hoʻoholo i ke ʻano o kēia hoʻonohonoho a hoʻouka iā ia:

E hoʻokele maʻalahi i nā hoʻonohonoho microservice me microconfig.io

Nā waihona waihona Dev:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Hiki iā mākou ke hana i ka hoʻonohonoho like no nā awa o kā mākou lawelawe:

server.port: ${ports@order}.

Aia nā hoʻonohonoho koʻikoʻi a pau ma kahi hoʻokahi, a laila e hōʻemi ana i ka likelilike o nā hewa ma muli o nā ʻāpana hoʻopuehu i nā faila hoʻonohonoho.

Hāʻawi ka framework i nā mea paʻa i hoʻomākaukau ʻia, no ka laʻana, hiki iā ʻoe ke kiʻi i ka inoa o ka papa kuhikuhi kahi i loaʻa ai ka faila hoʻonohonoho a hāʻawi iā ia:

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

Mahalo i kēia, ʻaʻohe pono e hoʻohui i ka inoa noi ma ka hoʻonohonoho ʻana a hiki ke kau ʻia i loko o kahi module maʻamau, no ka laʻana, i ka eureka like:

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

ʻO ka faila hoʻonohonoho aoao e hoemiia i hookahi laina:

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

Inā ʻaʻole pono mākou i kahi hoʻonohonoho mai ka hoʻonohonoho makua, hiki iā mākou ke kuhikuhi iā ia i kā mākou hoʻonohonoho a hoʻohana ʻia i ka wā o ka hanauna. ʻO ia hoʻi, inā no kekahi kumu e pono ai mākou i kahi inoa kūʻokoʻa no ka lawelawe kauoha, e waiho wale mākou i ka palena puna.application.name.

E ʻōlelo mākou pono ʻoe e hoʻohui i nā hoʻonohonoho logging maʻamau i ka lawelawe, i mālama ʻia i kahi faila ʻokoʻa, no ka laʻana, logback.xml. E hana kākou i pūʻulu hoʻonohonoho kaʻawale no ia:

E hoʻokele maʻalahi i nā hoʻonohonoho microservice me microconfig.io

Ma ka hoʻonohonoho kumu, e haʻi mākou i ka framework kahi e waiho ai i ka faila hoʻonohonoho logging e pono ai mākou e hoʻohana i kahi placeholder @ConfigDir:

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

Ma ka waihona logback.xml hoʻonohonoho mākou i nā mea hoʻopili maʻamau, a hiki ke loaʻa i nā placeholder e hoʻololi ʻia ka framework i ka wā o ka hana ʻana o nā configs, no ka laʻana:

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

Ma ka hoʻohui ʻana i ka hoʻokomo i nā hoʻonohonoho lawelawe hoʻihoʻi hou, loaʻa iā mākou ka hoʻopaʻa inoa ʻana no kēlā me kēia lawelawe:

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

ʻO ka manawa kēia e kamaʻāina ai i nā kikoʻī hou aku me nā wahi paʻa āpau i loaʻa o ka framework:

${kēia@env} - hoʻihoʻi i ka inoa o ke kaiapuni o kēia manawa.
${…@inoa} - hoʻihoʻi i ka inoa o ka ʻāpana.
${...@configDir} - hoʻihoʻi i ke ala piha i ka papa kuhikuhi config o ka mea.
${…@resultDir} - hoʻihoʻi i ke ala piha i ka papa kuhikuhi wahi (e waiho ʻia nā faila i kēia papa kuhikuhi).
${kēia@configRoot} - hoʻihoʻi i ke ala piha i ka papa kuhikuhi kumu o ka hale kūʻai hoʻonohonoho.

ʻAe ka ʻōnaehana iā ʻoe e kiʻi i nā ʻano like ʻole, no ka laʻana ke ala i java:
${env@JAVA_HOME}
A i ʻole, no ka mea ua kākau ʻia ka framework i loko ʻO JAVA, hiki iā mākou ke loaʻa nā ʻōnaehana ʻōnaehana like me ke kelepona Pūnaehana::getProperty me ka hoʻohana ʻana i kahi hale e like me kēia:
${[pale ʻia ka leka uila]}
Pono e haʻi i ke kākoʻo no ka ʻōlelo hoʻonui Puna EL. Ua pili kēia mau ʻōlelo i ka hoʻonohonoho:

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

a hiki iā ʻoe ke hoʻohana i nā loli kūloko i nā faila hoʻonohonoho me ka hoʻohana ʻana i ka ʻōlelo #var:

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

No laila, ʻo ka framework kahi mea hana ikaika loa no ka hoʻoponopono maikaʻi ʻana a me ka hoʻonohonoho maʻalahi o nā microservices. Hoʻokō pono ka framework i kāna hana nui - ka hoʻopau ʻana i ka kope-paste i nā hoʻonohonoho, hoʻohui i nā hoʻonohonoho a, ma muli o ka hopena, e hōʻemi ana i nā hewa hiki ke hiki, ʻoiai e ʻae iā ʻoe e hoʻohui maʻalahi i nā hoʻonohonoho a hoʻololi iā lākou no nā wahi like ʻole.

Inā makemake ʻoe i kēia framework, paipai wau e kipa i kāna ʻaoʻao kūhelu a e kamaʻāina me ka piha palapala, a eli i na kumu maanei.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka