Microconfig.io ашиглан микро үйлчилгээний тохиргоог хялбархан удирдаарай

Микросервисийг хөгжүүлэх, дараагийн үйл ажиллагаанд тулгарч буй гол бэрхшээлүүдийн нэг бол тэдгээрийн жишээнүүдийг чадварлаг, үнэн зөв тохируулах явдал юм. Миний бодлоор шинэ тогтолцоо үүнд тусална microconfig.io. Энэ нь зарим ердийн програмын тохиргооны ажлыг нэлээд гоёмсог байдлаар шийдвэрлэх боломжийг танд олгоно.

Хэрэв танд олон микро үйлчилгээ байгаа бөгөөд тэдгээр нь тус бүрдээ өөрийн тохиргооны файл/файлтай ирдэг бол тэдгээрийн аль нэгэнд нь алдаа гарах магадлал өндөр бөгөөд зохих ур чадвар, бүртгэлийн системгүйгээр үүнийг барихад маш хэцүү байдаг. Хүрээний өөртөө зориулж тавьдаг гол ажил бол хуулбарын тохиргооны параметрүүдийг багасгах, ингэснээр алдаа нэмэх магадлалыг багасгах явдал юм.

Нэг жишээ авч үзье. Бидэнд тохиргооны файл бүхий энгийн програм байна гэж бодъё ямл. Энэ нь ямар ч хэл дээрх микро үйлчилгээ байж болно. Энэхүү үйлчилгээнд хүрээг хэрхэн ашиглаж болохыг харцгаая.

Гэхдээ эхлээд илүү хялбар болгохын тулд microconfig.io залгаасыг суулгасны дараа Idea IDE дээр хоосон төсөл үүсгэцгээе.

Microconfig.io ашиглан микро үйлчилгээний тохиргоог хялбархан удирдаарай

Бид залгаасыг эхлүүлэх тохиргоог тохируулсан тул та дээрх дэлгэцийн зураг дээрх шиг анхдагч тохиргоог ашиглаж болно.

Манай үйлчилгээг захиалга гэж нэрлэдэг бөгөөд дараа нь шинэ төсөлд бид ижил төстэй бүтцийг бий болгоно.

Microconfig.io ашиглан микро үйлчилгээний тохиргоог хялбархан удирдаарай

Тохируулгын файлыг үйлчилгээний нэртэй хавтсанд байрлуулна - өргөдөл.yaml. Бүх микро үйлчилгээнүүд нь ямар нэгэн орчинд нээгддэг тул үйлчилгээний тохиргоог бий болгохоос гадна орчныг өөрөө тайлбарлах шаардлагатай: үүний тулд бид хавтас үүсгэх болно. envs мөн манай ажлын орчны нэр бүхий файлыг нэмнэ үү. Тиймээс уг хүрээ нь орчин дахь үйлчилгээний тохиргооны файлуудыг үүсгэх болно dev, учир нь энэ параметрийг залгаасын тохиргоонд тохируулсан болно.

Файлын бүтэц dev.yaml Энэ нь маш энгийн байх болно:

mainorder:
    components:
         - order

Хүрээ нь бүлэглэсэн тохиргоотой ажилладаг. Манай үйлчилгээний хувьд бүлгийн нэрийг сонгоно уу үндсэн захиалга. Энэхүү хүрээ нь орчны файлаас ийм бүлэг програмуудыг олж, тэдгээрийн бүх тохиргоог харгалзах хавтаснаас олдог.

Үйлчилгээний тохиргооны файлд өөрөө Захиалга Одоогоор зөвхөн нэг параметрийг зааж өгье:

spring.application.name: order

Одоо залгаасыг ажиллуулъя, энэ нь шинж чанарт заасан замын дагуу манай үйлчилгээнд шаардлагатай тохиргоог үүсгэнэ.

Microconfig.io ашиглан микро үйлчилгээний тохиргоог хялбархан удирдаарай

болно даван туулах мөн залгаас суулгахгүйгээр хүрээний түгээлтийг татаж аваад командын мөрөөс ажиллуулаарай.
Энэ шийдэл нь бүтээх сервер дээр ашиглахад тохиромжтой.

Энэ хүрээ нь төгс ойлгодог гэдгийг тэмдэглэх нь зүйтэй үл хөдлөх хөрөнгийн синтакс, өөрөөр хэлбэл хамтад нь ашиглаж болох энгийн өмчийн файлууд ямл тохиргоо.

Өөр үйлчилгээг нэмье төлбөрийн мөн одоо байгаа нэгийг нь төвөгтэй болгодог.
В Захиалга:

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

В төлбөрийн:

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

Эдгээр тохиргооны гол асуудал бол үйлчилгээний тохиргоонд их хэмжээний хуулж буулгах явдал юм. Хүрээ нь үүнээс ангижрахад хэрхэн туслахыг харцгаая. Хамгийн ойлгомжтой зүйлээс эхэлье - тохиргоо байгаа эсэх eureka бичил үйлчилгээ бүрийн тайлбарт. Тохиргооны файлтай шинэ лавлах үүсгэж, түүнд шинэ тохиргоо нэмье:

Microconfig.io ашиглан микро үйлчилгээний тохиргоог хялбархан удирдаарай

Одоо төсөл болгондоо мөрийг нэмж оруулъя #эврика орно.

Энэхүү хүрээ нь eureka тохиргоог автоматаар олж, үйлчилгээний тохиргооны файлууд руу хуулах бөгөөд бид үүнийг орчны файлд зааж өгөхгүй тул тусдаа eureka тохиргоог үүсгэхгүй. dev.yaml. Үйлчилгээ Захиалга:

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

Мөн бид импортын мөрийг өөрчилснөөр мэдээллийн сангийн тохиргоог тусдаа тохиргоонд шилжүүлж болно #eureka, oracle орно.

Фреймворк нь тохиргооны файлуудыг сэргээх үед өөрчлөлт бүрийг хянаж, үндсэн тохиргооны файлын хажууд тусгай файлд байрлуулдаг гэдгийг тэмдэглэх нь зүйтэй. Бүртгэлийн бичилт нь дараах байдалтай харагдана: “Хадгалагдсан 1 шинж чанар өөрчлөгдөнө order/diff-application.yaml" Энэ нь том хэмжээний тохиргооны файлуудын өөрчлөлтийг хурдан илрүүлэх боломжийг олгоно.

Тохиргооны нийтлэг хэсгүүдийг устгах нь танд шаардлагагүй олон хуулж буулгахаас ангижрах боломжийг олгодог боловч өөр өөр орчинд тохируулгыг уян хатан байдлаар үүсгэх боломжийг олгодоггүй - манай үйлчилгээний төгсгөлийн цэгүүд нь дан бөгөөд хатуу кодлогдсон байдаг, энэ нь муу юм. Үүнийг арилгахыг хичээцгээе.

Бүх төгсгөлийн цэгүүдийг бусдын лавлаж болох нэг тохиргоонд байлгах нь сайн шийдэл байх болно. Энэ зорилгын үүднээс орлуулалтыг дэмжих тогтолцоог нэвтрүүлсэн. Тохируулгын файл ингэж өөрчлөгдөх болно eureka:

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

Одоо энэ орлуулагч хэрхэн ажилладагийг харцгаая. Систем нь нэртэй бүрэлдэхүүн хэсгийг олдог төгсгөл мөн үүнээс утга учрыг хайдаг eurekaip, дараа нь үүнийг бидний тохиргоонд орлуулна. Гэхдээ өөр өөр орчны талаар юу хэлэх вэ? Үүнийг хийхийн тулд тохиргооны файл үүсгэнэ үү төгсгөл дараах төрөл application.dev.yaml. Фреймворк нь файлын өргөтгөл дээр үндэслэн энэ тохиргоог аль орчинд хамаарахыг шийдэж, ачаална.

Microconfig.io ашиглан микро үйлчилгээний тохиргоог хялбархан удирдаарай

Dev файлын агуулга:

eurekaip: 192.89.89.111
dbip: 192.168.0.100

Бид үйлчилгээнийхээ портуудад ижил тохиргоог үүсгэж болно:

server.port: ${ports@order}.

Бүх чухал тохиргоонууд нэг дор байгаа бөгөөд ингэснээр тохиргооны файл дахь тархсан параметрүүдээс болж алдаа гарах магадлалыг бууруулдаг.

Энэхүү хүрээ нь олон бэлэн орлуулагчаар хангадаг, жишээлбэл, та тохиргооны файл байрладаг директорийн нэрийг авч, түүнд хуваарилж болно:

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

Үүний ачаар тохиргоонд програмын нэрийг нэмж зааж өгөх шаардлагагүй бөгөөд үүнийг нийтлэг модульд, жишээлбэл, ижил эврикад байрлуулж болно.

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

Тохиргооны файл Захиалга нэг мөр болгон бууруулна:

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

Хэрэв бид эцэг эхийн тохиргооноос ямар нэгэн тохиргоо хийх шаардлагагүй бол бид үүнийг тохиргоондоо зааж өгөх боломжтой бөгөөд үүнийг үүсгэх явцад ашиглах болно. Өөрөөр хэлбэл, ямар нэг шалтгаанаар захиалгын үйлчилгээнд өвөрмөц нэр хэрэгтэй бол бид параметрийг орхих болно хавар.програм.нэр.

Тусдаа файлд хадгалагдсан үйлчилгээнд тусгай бүртгэлийн тохиргоог нэмэх хэрэгтэй гэж бодъё, жишээлбэл, logback.xml. Үүний тулд тусдаа бүлэг тохиргоо үүсгэцгээе:

Microconfig.io ашиглан микро үйлчилгээний тохиргоог хялбархан удирдаарай

Үндсэн тохиргоонд бид шаардлагатай бүртгэлийн тохиргооны файлыг орлуулагч ашиглан хаана байрлуулахыг хүрээнд хэлэх болно. @ConfigDir:

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

Файлд logback.xml Бид стандарт хавсралтуудыг тохируулдаг бөгөөд тэдгээр нь тохиргоог үүсгэх явцад өөрчлөгддөг орлуулагчдыг агуулж болно, жишээлбэл:

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

Үйлчилгээний тохиргоонд импорт нэмэх замаар буцах, бид үйлчилгээ тус бүрийн бүртгэлийг автоматаар тохируулдаг:

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

Хүрээний боломжтой бүх орлуулагчтай илүү дэлгэрэнгүй танилцах цаг болжээ.

${this@env} - одоогийн орчны нэрийг буцаана.
${…@name} - бүрэлдэхүүн хэсгийн нэрийг буцаана.
${…@configDir} — бүрэлдэхүүн хэсгийн тохиргооны лавлах руу бүрэн замыг буцаана.
${…@resultDir} — бүрэлдэхүүн хэсгийн очих директор руу бүрэн замыг буцаана (үр дүнгийн файлуудыг энэ директорт байрлуулах болно).
${this@configRoot} — тохиргооны дэлгүүрийн үндсэн лавлах руу бүрэн замыг буцаана.

Систем нь мөн орчны хувьсагчдыг авах боломжийг олгодог, жишээ нь java руу орох зам:
${env@JAVA_HOME}
Аль ч, хүрээ нь бичигдсэн учраас ЖАВА, бид дуудлагатай төстэй системийн хувьсагчдыг авч болно System::getProperty Ийм бүтцийг ашиглан:
${[имэйлээр хамгаалагдсан]}
Өргөтгөлийн хэлний дэмжлэгийг дурдах нь зүйтэй Хаврын EL. Дараах илэрхийллүүд нь тохиргоонд хэрэглэгдэх боломжтой:

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

мөн та илэрхийллийг ашиглан тохиргооны файлд локал хувьсагчдыг ашиглаж болно #var:

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

Тиймээс уг хүрээ нь микро үйлчилгээний нарийн тохируулга, уян хатан тохиргооны нэлээд хүчирхэг хэрэгсэл юм. Энэхүү хүрээ нь үндсэн үүргээ төгс биелүүлдэг - тохиргоон дахь хуулбарыг буулгах, тохиргоог нэгтгэх, үр дүнд нь гарч болзошгүй алдааг багасгахын зэрэгцээ тохиргоог хялбархан нэгтгэж, өөр өөр орчинд өөрчлөх боломжийг олгодог.

Хэрэв та энэ хүрээг сонирхож байгаа бол түүний албан ёсны хуудсанд зочилж, бүрэн эхээр нь танилцахыг зөвлөж байна баримт бичиг, эсвэл эх сурвалжуудыг ухаж энд.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх