microconfig.io உடன் மைக்ரோ சர்வீஸ் உள்ளமைவுகளை எளிதாக நிர்வகிக்கவும்

மைக்ரோ சர்வீஸின் மேம்பாடு மற்றும் அடுத்தடுத்த செயல்பாட்டில் உள்ள முக்கிய சிக்கல்களில் ஒன்று அவற்றின் நிகழ்வுகளின் திறமையான மற்றும் துல்லியமான உள்ளமைவு ஆகும். என் கருத்துப்படி, ஒரு புதிய கட்டமைப்பு இதற்கு உதவும் microconfig.io. சில வழக்கமான பயன்பாட்டு உள்ளமைவு பணிகளை மிகவும் நேர்த்தியாக தீர்க்க இது உங்களை அனுமதிக்கிறது.

உங்களிடம் பல மைக்ரோ சர்வீஸ்கள் இருந்தால், அவை ஒவ்வொன்றும் அதன் சொந்த உள்ளமைவு கோப்பு/கோப்புகளுடன் வந்தால், அவற்றில் ஒன்றில் பிழை ஏற்படுவதற்கான அதிக நிகழ்தகவு உள்ளது, இது சரியான திறன் மற்றும் பதிவு அமைப்பு இல்லாமல் பிடிக்க மிகவும் கடினமாக இருக்கும். கட்டமைப்பானது தனக்குத்தானே அமைக்கும் முக்கிய பணி, நகல் நிகழ்வு உள்ளமைவு அளவுருக்களைக் குறைப்பதாகும், இதன் மூலம் பிழையைச் சேர்ப்பதற்கான வாய்ப்பைக் குறைக்கிறது.

ஒரு உதாரணத்தைப் பார்ப்போம். எங்களிடம் உள்ளமைவு கோப்புடன் எளிமையான பயன்பாடு உள்ளது என்று வைத்துக்கொள்வோம் யாழ். இது எந்த மொழியிலும் எந்த மைக்ரோ சர்வீஸாகவும் இருக்கலாம். இந்தச் சேவையில் கட்டமைப்பை எவ்வாறு பயன்படுத்தலாம் என்பதைப் பார்ப்போம்.

ஆனால் முதலில், அதிக வசதிக்காக, அதில் microconfig.io செருகுநிரலை நிறுவிய பின், Idea IDE இல் ஒரு வெற்று திட்டத்தை உருவாக்குவோம்:

microconfig.io உடன் மைக்ரோ சர்வீஸ் உள்ளமைவுகளை எளிதாக நிர்வகிக்கவும்

செருகுநிரல் வெளியீட்டு உள்ளமைவை நாங்கள் அமைத்துள்ளோம், மேலே உள்ள ஸ்கிரீன்ஷாட்டில் உள்ளதைப் போல நீங்கள் இயல்புநிலை உள்ளமைவைப் பயன்படுத்தலாம்.

எங்கள் சேவை ஆர்டர் என்று அழைக்கப்படுகிறது, பின்னர் ஒரு புதிய திட்டத்தில் இதேபோன்ற கட்டமைப்பை உருவாக்குவோம்:

microconfig.io உடன் மைக்ரோ சர்வீஸ் உள்ளமைவுகளை எளிதாக நிர்வகிக்கவும்

சேவைப் பெயருடன் கோப்புறையில் உள்ளமைவு கோப்பை வைக்கவும் - விண்ணப்பம்.யாம்ல். அனைத்து மைக்ரோ சர்வீஸ்களும் ஒருவித சூழலில் தொடங்கப்படுகின்றன, எனவே, சேவைக்கான கட்டமைப்பை உருவாக்குவதோடு கூடுதலாக, சூழலை விவரிக்க வேண்டியது அவசியம்: இதற்காக நாங்கள் ஒரு கோப்புறையை உருவாக்குவோம். envs மேலும் அதில் நமது பணிச்சூழலின் பெயருடன் ஒரு கோப்பைச் சேர்க்கவும். இவ்வாறு, கட்டமைப்பானது சூழலில் உள்ள சேவைகளுக்கான கட்டமைப்பு கோப்புகளை உருவாக்கும் தேவ், இந்த அளவுரு சொருகி அமைப்புகளில் அமைக்கப்பட்டுள்ளது.

கோப்பு அமைப்பு 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

இந்த உள்ளமைவுகளின் முக்கிய பிரச்சனை, சேவை அமைப்புகளில் அதிக அளவு நகல்-பேஸ்ட் இருப்பதுதான். அதை அகற்ற கட்டமைப்பு எவ்வாறு உதவும் என்று பார்ப்போம். மிகத் தெளிவாகத் தொடங்குவோம் - உள்ளமைவின் இருப்பு யுரேகா ஒவ்வொரு மைக்ரோ சர்வீஸின் விளக்கத்திலும். அமைப்புகள் கோப்புடன் ஒரு புதிய கோப்பகத்தை உருவாக்கி, அதில் புதிய உள்ளமைவைச் சேர்ப்போம்:

microconfig.io உடன் மைக்ரோ சர்வீஸ் உள்ளமைவுகளை எளிதாக நிர்வகிக்கவும்

இப்போது எங்கள் ஒவ்வொரு திட்டத்திற்கும் வரியைச் சேர்ப்போம் #யுரேகாவும் அடங்கும்.

கட்டமைப்பு தானாகவே யுரேகா உள்ளமைவைக் கண்டுபிடித்து சேவை உள்ளமைவு கோப்புகளுக்கு நகலெடுக்கும், அதே சமயம் தனி யுரேகா உள்ளமைவு உருவாக்கப்படாது, ஏனெனில் நாங்கள் அதை சுற்றுச்சூழல் கோப்பில் குறிப்பிட மாட்டோம். dev.yaml. சேவை ஆர்டர்:

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

இறக்குமதி வரியை மாற்றுவதன் மூலம் தரவுத்தள அமைப்புகளை ஒரு தனி கட்டமைப்பிற்கு நகர்த்தலாம் #யுரேகா, ஆரக்கிள் ஆகியவை அடங்கும்.

கட்டமைப்பு கோப்புகளை மறுஉருவாக்கம் செய்யும் போது ஒவ்வொரு மாற்றத்தையும் ஃப்ரேம்வொர்க் கண்காணித்து முக்கிய உள்ளமைவு கோப்பிற்கு அடுத்ததாக ஒரு சிறப்பு கோப்பில் வைக்கிறது என்பது குறிப்பிடத்தக்கது. அதன் பதிவில் உள்ள நுழைவு இதுபோல் தெரிகிறது: “1 சொத்து மாற்றங்களைச் சேமிக்கிறது ஆர்டர்/diff-application.yaml" பெரிய உள்ளமைவு கோப்புகளில் மாற்றங்களை விரைவாகக் கண்டறிய இது உங்களை அனுமதிக்கிறது.

உள்ளமைவின் பொதுவான பகுதிகளை அகற்றுவது, பல தேவையற்ற நகல்-பேஸ்ட்களை அகற்ற உங்களை அனுமதிக்கிறது, ஆனால் வெவ்வேறு சூழல்களுக்கான உள்ளமைவை நெகிழ்வாக உருவாக்க உங்களை அனுமதிக்காது - எங்கள் சேவைகளின் இறுதிப்புள்ளிகள் தனித்துவமானவை மற்றும் கடின குறியிடப்பட்டவை, இது மோசமானது. இதை அகற்ற முயற்சிப்போம்.

ஒரு நல்ல தீர்வாக அனைத்து முடிவுப்புள்ளிகளையும் மற்றவர்கள் குறிப்பிடக்கூடிய ஒரு கட்டமைப்பில் வைத்திருப்பது. இந்த நோக்கத்திற்காக, பிளேஸ்ஹோல்டர்களுக்கான ஆதரவு கட்டமைப்பில் அறிமுகப்படுத்தப்பட்டுள்ளது. கட்டமைப்பு கோப்பு இப்படித்தான் மாறும் யுரேகா:

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

இப்போது இந்த ப்ளேஸ்ஹோல்டர் எப்படி வேலை செய்கிறது என்று பார்க்கலாம். கணினி பெயரிடப்பட்ட ஒரு கூறுகளைக் கண்டறிகிறது முடிவுப்புள்ளிகள் மற்றும் அதில் அர்த்தம் தேடுகிறது யுரேகைப், பின்னர் அதை எங்கள் உள்ளமைவில் மாற்றுகிறது. ஆனால் வெவ்வேறு சூழல்களைப் பற்றி என்ன? இதைச் செய்ய, அமைப்புகள் கோப்பை உருவாக்கவும் முடிவுப்புள்ளிகள் பின்வரும் வகை application.dev.yaml. கோப்பு நீட்டிப்பின் அடிப்படையில் கட்டமைப்பானது சுயாதீனமாக, இந்த கட்டமைப்பு எந்த சூழலைச் சேர்ந்தது என்பதைத் தீர்மானித்து அதை ஏற்றுகிறது:

microconfig.io உடன் மைக்ரோ சர்வீஸ் உள்ளமைவுகளை எளிதாக நிர்வகிக்கவும்

தேவ் கோப்பு உள்ளடக்கங்கள்:

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} - தற்போதைய சூழலின் பெயரை வழங்குகிறது.
${…@பெயர்} - கூறுகளின் பெயரை வழங்குகிறது.
${…@configDir} — கூறுகளின் கட்டமைப்பு கோப்பகத்திற்கு முழு பாதையையும் வழங்குகிறது.
${…@resultDir} — கூறுகளின் இலக்கு கோப்பகத்திற்கு முழு பாதையையும் வழங்குகிறது (இதன் விளைவாக வரும் கோப்புகள் இந்த கோப்பகத்தில் வைக்கப்படும்).
${this@configRoot} - உள்ளமைவு அங்காடியின் ரூட் கோப்பகத்திற்கு முழு பாதையையும் வழங்குகிறது.

சூழல் மாறிகளைப் பெற கணினி உங்களை அனுமதிக்கிறது, எடுத்துக்காட்டாக ஜாவாவிற்கான பாதை:
${env@JAVA_HOME}
ஒன்று, சட்டகம் எழுதப்பட்டிருப்பதால் ஜாவா, அழைப்பைப் போன்ற அமைப்பு மாறிகளை நாம் பெறலாம் அமைப்பு::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

கருத்தைச் சேர்