ЛСсно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° микросСрвизитС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° 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 , синтаксиса, Ρ‚.Π΅. ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с свойства, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π°Π΅Π΄Π½ΠΎ с 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.

Врябва Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ всяка промяна ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ прослСдява ΠΈ записва Π² спСциалСн Ρ„Π°ΠΉΠ» Π΄ΠΎ основния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ». Π—Π°ΠΏΠΈΡΡŠΡ‚ Π² нСговия Π»ΠΎΠ³ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°: β€œStored 1 property changes to 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