ЛСсно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° микросСрвизи с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° microconfig.io

Π•Π΄Π½Π° ΠΎΡ‚ основнитС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ послСдващата Сксплоатация Π½Π° микросСрвизи Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ ΠΈ ΠΏΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎ настройванС Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ инстанции. На Ρ‚ΠΎΠ²Π°, спорСд ΠΌΠ΅Π½, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ новият Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ microconfig.io. Π’ΠΎΠΉ позволява доста Π΅Π»Π΅Π³Π°Π½Ρ‚Π½ΠΎ Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ някои Ρ€ΡƒΡ‚ΠΈΠ½Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° настройка Π½Π° прилоТСния.

Ако ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ микросСрвизи ΠΈ всСки ΠΎΡ‚ тях ΠΈΠ΄Π²Π° със свой собствСн Ρ„Π°ΠΉΠ»/Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° настройки, вСроятността Π΄Π° допуснСтС Π³Ρ€Π΅ΡˆΠΊΠ° Π² някой ΠΎΡ‚ тях Π΅ голяма, ΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ умСния ΠΈ систСма Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° я Ρ…Π²Π°Π½Π΅Ρ‚Π΅. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°, която Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ си поставя, Π΅ Π΄Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° Π΄ΡƒΠ±Π»ΠΈΡ€Π°Ρ‰ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° настройкитС Π½Π° инстанцията, Ρ‚Π°ΠΊΠ° намалявайки вСроятността ΠΎΡ‚ добавянС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ просто ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» yaml. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС всСки микросСрвис Π½Π° всСки Π΅Π·ΠΈΠΊ. НСка Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈ към Ρ‚ΠΎΠ·ΠΈ сСрвис.

Но ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π°, Π·Π° ΠΏΠΎ-голямо удобство, Ρ‰Π΅ създадСм ΠΏΡ€Π°Π·Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Idea IDE, слСд ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ инсталирамС плъгина microconfig.io:

ЛСсно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° микросСрвизи с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° microconfig.io

НастройвамС конфигурацията Π·Π° стартиранС Π½Π° плъгина, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ Π½Π° Π΅ΠΊΡ€Π°Π½Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅.

ΠΠ°ΡˆΠΈΡΡ‚ сСрвис сС Π½Π°Ρ€ΠΈΡ‡Π° order, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² новия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‰Π΅ създадСм ΠΏΠΎΠ΄ΠΎΠ±Π½Π° структура:

ЛСсно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° микросСрвизи с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° microconfig.io

Π’ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ€Π²ΠΈΡΠ° поставямС конфигурационния Ρ„Π°ΠΉΠ» β€” application.yaml. Всички микросСрвизи сС стартират Π² някаква срСда, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ освСн ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ Ρ„Π°ΠΉΠ»Π° Π½Π° самия сСрвис, трябва Π΄Π° опишСм ΠΈ самата срСда: Π·Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ създадСм ΠΏΠ°ΠΏΠΊΠ° envs ΠΈ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² нСя Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° срСда. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ Ρ‰Π΅ създадС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° сСрвиситС Π² срСдата dev, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² настройкитС Π½Π° плъгина Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Ρ„Π°ΠΉΠ»Π° dev.yaml Ρ‰Π΅ бъдС доста простичка:

mainorder:
    components:
         - order

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ Π² Π³Ρ€ΡƒΠΏΠΈ. Π—Π° нашия сСрвис Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ ΠΈΠΌΠ΅ Π·Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° mainorder. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ Π½Π°ΠΌΠΈΡ€Π° всяка Ρ‚Π°ΠΊΠ°Π²Π° Π³Ρ€ΡƒΠΏΠ° прилоТСния Π² Ρ„Π°ΠΉΠ»Π° Π·Π° срСди ΠΈ създава ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π° всички тях, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΠΌΠΈΡ€Π° Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΠΈ.

Π’ самия Ρ„Π°ΠΉΠ» Π·Π° настройки Π½Π° сСрвиса order Ρ‰Π΅ Π·Π°Π΄Π°Π΄Π΅ΠΌ засСга само Π΅Π΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€:

spring.application.name: order

Π‘Π΅Π³Π° стартирайтС плъгина, ΠΈ Ρ‚ΠΎΠΉ Ρ‰Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° конфигурация Π½Π° нашия сСрвис ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π°Ρ‚Π° Π² свойствата ΠΏΡŠΡ‚Π΅ΠΊΠ°:

ЛСсно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° микросСрвизи с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° microconfig.io

МоТС Π΄Π° сС справим ΠΈ Π±Π΅Π· инсталиранС Π½Π° плъгин, просто изтСгляйки дистрибуцията Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ стартирайки я ΠΎΡ‚ командния Ρ€Π΅Π΄.
Π’ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΅ подходящо Π·Π° ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅.

Π‘Π»Π΅Π΄Π²Π° Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π° property синтаксиса, тоСст ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ property Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π°Π΅Π΄Π½ΠΎ с yaml ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅.

НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡ‰Π΅ Π΅Π΄Π½Π° услуга payment ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° услоТним ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π°Ρ‚Π°.
Π’ order:

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

Π’ payment:

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

А Π² всСки ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ сСга Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ€Π΅Π΄Π° #include eureka.

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сам Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈ конфигурацията eureka ΠΈ Ρ‰Π΅ я ΠΊΠΎΠΏΠΈΡ€Π° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° услугитС, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½Π°Ρ‚Π° конфигурация eureka няма Π΄Π° бъдС създадСна, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ няма Π΄Π° я посочим във Ρ„Π°ΠΉΠ»Π° Π½Π° срСдата dev.yaml. Услуга order:

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

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° изнСсСм настройкитС Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»Π½Π° конфигурация, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ Ρ€Π΅Π΄Π° Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° #include eureka, oracle.

Π‘Π»Π΅Π΄Π²Π° Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ всяка промяна ΠΏΡ€ΠΈ рСгСнСрация Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сС прослСдява ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ сС записва Π² спСциалСн Ρ„Π°ΠΉΠ» Π΄ΠΎ основния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ». Π—Π°ΠΏΠΈΡΡŠΡ‚ Π² Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»Π° ΠΌΡƒ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°: β€œΠ—Π°ΠΏΠ°Π·Π΅Π½ΠΈ 1 ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° свойства Π² order/diff-application.yaml”. Π’ΠΎΠ²Π° позволява Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Π˜Π·Π½Π°ΡΡΠ½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ‰ΠΈΡ‚Π΅ части ΠΎΡ‚ конфигурацията позволява Π΄Π° сС ΠΈΠ·Π±Π°Π²ΠΈΠΌ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π½ΡƒΠΆΠ΅Π½ копипаста, Π½ΠΎ Π½Π΅ позволява гъвкаво създаванС Π½Π° конфигурация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди β€” Π΅Π½Π΄ΠΏΠΎΠΈΠ½Ρ‚ΠΈΡ‚Π΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ услуги са СдинствСни ΠΈ Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄Π½Π°Ρ‚ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. НСка ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ.

Π”ΠΎΠ±Ρ€ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄Π° сС Π΄ΡŠΡ€ΠΆΠ°Ρ‚ всички Π΅Π½Π΄ΠΏΠΎΠΈΠ½Ρ‚ΠΈ Π² някаква Π΅Π΄Π½Π° конфигурация, Π½Π° която Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΠΎΠ·ΠΎΠ²Π°Ρ‚ останалитС. Π—Π° Ρ‚ΠΎΠ²Π° Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π΅ΠΉΡΡ…ΠΎΠ»Π΄ΡŠΡ€ΠΈ. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ„Π°ΠΉΠ»Π° Π·Π° конфигурация eureka:

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

Π‘Π΅Π³Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ»Π΅ΠΉΡΡ…ΠΎΠ»Π΄ΡŠΡ€. БистСмата Π½Π°ΠΌΠΈΡ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° с ΠΈΠΌΠ΅Ρ‚ΠΎ endpoints ΠΈ Ρ‚ΡŠΡ€ΡΠΈ Π² Π½Π΅Π³ΠΎ стойността eurekaip, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ вмъквамС Π² Π½Π°ΡˆΠ°Ρ‚Π° конфигурация. Но ΠΊΠ°ΠΊ Π΄Π° сС справим с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ срСди? Π—Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ създадСм Ρ„Π°ΠΉΠ» с настройки Π² endpoints слСдния Π²ΠΈΠ΄ 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}

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π°, Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° посочвамС ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² конфигурацията, Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ Π² ΠΎΠ±Ρ‰ ΠΌΠΎΠ΄ΡƒΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ eureka:

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

Π€Π°ΠΉΠ»ΡŠΡ‚ с конфигурация order Ρ‰Π΅ сС ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ Π΄ΠΎ Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄:

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

Ако някоя настройка ΠΎΡ‚ родитСлската конфигурация Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° я посочим Π² Π½Π°ΡˆΠ°Ρ‚Π° конфигурация ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ тя Ρ‰Π΅ бъдС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. ВоСст, Π°ΠΊΠΎ ΠΏΠΎ някаква ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π½ΠΈ Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΎ ΠΈΠΌΠ΅ Π·Π° услугата order, просто Ρ‰Π΅ оставим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° spring.application.name.

Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ Π² услугата Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ пСрсонализирани настройки Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ„Π°ΠΉΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, logback.xml. БъздавамС Π·Π° Π½Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½Π° Π³Ρ€ΡƒΠΏΠ° с настройки:

ЛСсно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° микросСрвизи с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° microconfig.io

Π’ основната конфигурация посочвамС Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° къдС Π΄Π° постави нуТния Π½ΠΈ Ρ„Π°ΠΉΠ» с настройки Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° плСйсхолдСра @ConfigDir:

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

Π’ Ρ„Π°ΠΉΠ»Π° logback.xml настройвамС стандартнитС Π°ΠΏΠΏΠ΅Π½Π΄Π΅Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΏΠ»Π΅ΠΉΡΡ…ΠΎΠ»Π΄ΡŠΡ€ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΡŠΡ‚ Ρ‰Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

logs/${this@name}.log

ΠšΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° услугитС ΠΈΠΌΠΏΠΎΡ€Ρ‚ logback, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ настроСно Π»ΠΎΠ³Π²Π°Π½Π΅ Π·Π° всяка услуга:

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

Π’Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ със всички Π½Π°Π»ΠΈΡ‡Π½ΠΈ плСйсхолдСри Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ°:

${this@env} β€” Π²Ρ€ΡŠΡ‰Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° срСда.
${…@name} β€” Π²Ρ€ΡŠΡ‰Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.
${…@configDir} β€” Π²Ρ€ΡŠΡ‰Π° пълния ΠΏΡŠΡ‚ Π΄ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° config Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.
${…@resultDir} β€” Π²Ρ€ΡŠΡ‰Π° пълния ΠΏΡŠΡ‚ към дирСкторията Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ поставСни Π² Ρ‚Π°Π·ΠΈ дирСктория).
${this@configRoot} β€” Π²Ρ€ΡŠΡ‰Π° пълния ΠΏΡŠΡ‚ към ΠΊΠΎΡ€Π΅Π½Π½Π°Ρ‚Π° дирСктория Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

БистСмата ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° позволява ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡŠΡ‚Ρ към java:
${env@JAVA_HOME}
Или, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ Π΅ написан Π½Π° JAVA, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ систСмни ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° System::getProperty Ρ‡Ρ€Π΅Π· конструкция ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Π²ΠΈΠ΄:
${system@os.name}
Π‘Ρ‚Ρ€ΡƒΠ²Π° си Π΄Π° сС спомСнС ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Spring EL. Π’ конфигурацията сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ:

connection.timeoutInMs: #{5 * 60 * 1000}
datasource.maximum-pool-size: #{${this@datasource.minimum-pool-size} + 10} 

ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΈΠ·Ρ€Π°Π·: #var:

#var feedRoot: ${system@user.home}/feed
folder:
 root: ${this@feedRoot}
 success: ${this@feedRoot}/archive
 error: ${this@feedRoot}/error

По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ прСдставлява доста ΠΌΠΎΡ‰Π΅Π½ инструмСнт Π·Π° Ρ„ΠΈΠ½Π° ΠΈ гъвкава настройка Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° микросСрвиситС. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ изпълнява основната си Π·Π°Π΄Π°Ρ‡Π° β€” ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° повторСнията Π² настройкитС, консолидиранС Π½Π° настройкитС ΠΈ, Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ позволява лСсно ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ промяна Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди.

Ако стС заинтСрСсовани ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° посСтитС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° ΠΌΡƒ страница ΠΈ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ с ΠΏΡŠΠ»Π½Π°Ρ‚Π° докумСнтацията, ΠΈΠ»ΠΈ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ изходния ΠΊΠΎΠ΄ Ρ‚ΡƒΠΊ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster