የማይክሮ ሰርቪስ ውቅሮችን በቀላሉ በማይክሮconfig.io ያስተዳድሩ

በማይክሮ ሰርቪስ ልማት እና በቀጣይ ስራዎች ውስጥ ካሉት ዋና ዋና ችግሮች አንዱ የሁኔታዎች ብቃት እና ትክክለኛ ውቅር ነው። በእኔ አስተያየት, አዲስ ማዕቀፍ በዚህ ላይ ሊረዳ ይችላል microconfig.io. አንዳንድ የተለመዱ የመተግበሪያ ውቅር ስራዎችን በሚያምር ሁኔታ እንዲፈቱ ይፈቅድልዎታል.

ብዙ ማይክሮ አግልግሎቶች ካሉዎት እና እያንዳንዳቸው ከራሳቸው የማዋቀሪያ ፋይል/ፋይሎች ጋር አብረው ይመጣሉ ፣ ከዚያ በአንደኛው ውስጥ ስህተት የመሥራት እድሉ ከፍተኛ ነው ፣ ይህም ያለ ተገቢ ችሎታ እና የምዝግብ ማስታወሻ ስርዓት ለመያዝ በጣም ከባድ ሊሆን ይችላል። ማዕቀፉ ለራሱ ያስቀመጠው ዋና ተግባር የተባዙ የአብነት ውቅረት መለኪያዎችን መቀነስ ነው፣ በዚህም ስህተት የመጨመር እድልን ይቀንሳል።

አንድ ምሳሌ እንመልከት። የውቅረት ፋይል ያለው ቀላል መተግበሪያ አለን እንበል ያማል. ይህ በማንኛውም ቋንቋ ውስጥ ማንኛውም ማይክሮ አገልግሎት ሊሆን ይችላል. ማዕቀፉ በዚህ አገልግሎት ላይ እንዴት እንደሚተገበር እንይ.

ግን በመጀመሪያ ፣ ለበለጠ ምቾት ፣ ማይክሮconfig.io ፕለጊኑን ከጫንን በኋላ በIdea IDE ውስጥ ባዶ ፕሮጀክት እንፍጠር ።

የማይክሮ ሰርቪስ ውቅሮችን በቀላሉ በማይክሮconfig.io ያስተዳድሩ

የፕለጊን ማስጀመሪያ ውቅረትን አዘጋጅተናል, ከላይ ባለው ቅጽበታዊ ገጽ እይታ ላይ እንደሚታየው ነባሪውን ውቅረት መጠቀም ይችላሉ.

አገልግሎታችን ቅደም ተከተል ይባላል ፣ ከዚያ በአዲስ ፕሮጀክት ውስጥ ተመሳሳይ መዋቅር እንፈጥራለን-

የማይክሮ ሰርቪስ ውቅሮችን በቀላሉ በማይክሮconfig.io ያስተዳድሩ

የማዋቀሪያውን ፋይል በአገልግሎት ስም አቃፊ ውስጥ ያስቀምጡ - መተግበሪያ.yaml. ሁሉም ማይክሮ ሰርቪስ በአንድ ዓይነት አካባቢ ውስጥ ተጀምሯል, ስለዚህ, ለአገልግሎቱ በራሱ ውቅረትን ከመፍጠር በተጨማሪ, አካባቢውን እራሱን መግለጽ አስፈላጊ ነው: ለዚህም አቃፊ እንፈጥራለን. envs እና የስራ አካባቢያችንን ስም የያዘ ፋይል ወደ እሱ ያክሉ። ስለዚህ, ማዕቀፉ በአካባቢው ላሉ አገልግሎቶች የማዋቀሪያ ፋይሎችን ይፈጥራል dev, ይህ ግቤት በፕለጊን መቼቶች ውስጥ ስለተዘጋጀ.

የፋይል መዋቅር dev.yaml በጣም ቀላል ይሆናል

mainorder:
    components:
         - order

ክፈፉ በአንድ ላይ ከተሰበሰቡ ውቅሮች ጋር ይሰራል. ለአገልግሎታችን፣ ለቡድኑ ስም ይምረጡ ዋና ትዕዛዝ. ማዕቀፉ እያንዳንዱን የመተግበሪያዎች ቡድን በአካባቢ ፋይል ውስጥ ያገኛል እና ለሁሉም አወቃቀሮችን ይፈጥራል, ይህም በተዛማጅ አቃፊዎች ውስጥ ያገኛል.

በአገልግሎት ቅንጅቶች ፋይል ውስጥ ራሱ ትእዛዝ ለአሁን አንድ መለኪያ ብቻ እንጥቀስ፡-

spring.application.name: order

አሁን ተሰኪውን እናስኬደው እና በአገልግሎታችን ውስጥ በተገለጸው መንገድ መሰረት አስፈላጊውን ውቅር ያመነጫል።

የማይክሮ ሰርቪስ ውቅሮችን በቀላሉ በማይክሮconfig.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 በእያንዳንዱ ማይክሮ አገልግሎት መግለጫ ውስጥ. ከቅንብሮች ፋይል ጋር አዲስ ማውጫ እንፍጠር እና አዲስ ውቅር በእሱ ላይ እንጨምርበት፡-

የማይክሮ ሰርቪስ ውቅሮችን በቀላሉ በማይክሮconfig.io ያስተዳድሩ

እና አሁን መስመሩን በእያንዳንዱ ፕሮጀክታችን ላይ እንጨምር #ዩሬካን ያካትቱ.

ክፈፉ በራስ ሰር የዩሬካ ውቅረትን አግኝቶ ወደ የአገልግሎት ውቅር ፋይሎች ይገለብጣል፣ የተለየ የዩሬካ ውቅረት አይፈጠርም፣ በአካባቢ ፋይል ውስጥ ስለማንገልጽ dev.yaml. ሴርቪስ ትእዛዝ:

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

እንዲሁም የማስመጣት መስመሩን በመቀየር የውሂብ ጎታውን መቼቶች ወደ ተለየ ውቅር ማንቀሳቀስ እንችላለን # ዩሬካ ፣ ኦራክልን ይጨምራል.

የማዋቀሪያ ፋይሎችን በሚታደስበት ጊዜ ማዕቀፉ እያንዳንዱን ለውጥ እንደሚከታተል እና ከዋናው ውቅር ፋይል ቀጥሎ ባለው ልዩ ፋይል ውስጥ እንደሚያስቀምጠው ልብ ሊባል ይገባል። በምዝግብ ማስታወሻው ውስጥ ያለው ግቤት ይህን ይመስላል፡- “የተከማቸ 1 ንብረት ወደሚቀየር ትዕዛዝ/diff-application.yaml" ይህ በትላልቅ ማዋቀር ፋይሎች ላይ ለውጦችን በፍጥነት እንዲያገኙ ያስችልዎታል።

የማዋቀሩን የተለመዱ ክፍሎችን ማስወገድ ብዙ አላስፈላጊ ቅጂ-መለጠፍን ለማስወገድ ያስችልዎታል, ነገር ግን በተለዋዋጭ ሁኔታ ለተለያዩ አካባቢዎች ውቅር እንዲፈጥሩ አይፈቅድልዎትም - የአገልግሎታችን የመጨረሻ ነጥቦች ልዩ እና በጠንካራ ኮድ የተቀመጡ ናቸው, ይህ መጥፎ ነው. ይህንን ለማስወገድ እንሞክር.

ጥሩው መፍትሔ ሁሉንም የመጨረሻ ነጥቦችን ሌሎች ሊጠቅሱ በሚችሉት በአንድ ውቅር ውስጥ ማስቀመጥ ነው። ለዚሁ ዓላማ, ለቦታ ያዥዎች ድጋፍ በማዕቀፉ ውስጥ ገብቷል. የማዋቀሪያው ፋይል የሚለወጠው በዚህ መንገድ ነው። eureka:

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

አሁን ይህ ቦታ ያዥ እንዴት እንደሚሰራ እንይ። ስርዓቱ የተሰየመ አካል ያገኛል መቁጠሪያዎች እና በውስጡ ትርጉምን ይፈልጋል eurekaip, እና ከዚያ ወደ ውቅራችን ይተካዋል. ግን ስለ የተለያዩ አካባቢዎችስ? ይህንን ለማድረግ የቅንብሮች ፋይልን ወደ ውስጥ ይፍጠሩ መቁጠሪያዎች የሚከተለው ዓይነት መተግበሪያ.dev.yaml. በፋይል ቅጥያው ላይ በመመስረት ክፈፉ ለብቻው ይህ ውቅር የትኛው አካባቢ እንደሆነ ይወስናል እና ይጭነዋል፡

የማይክሮ ሰርቪስ ውቅሮችን በቀላሉ በማይክሮconfig.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. ለእሱ የተለየ የቅንጅቶች ቡድን እንፍጠር፡-

የማይክሮ ሰርቪስ ውቅሮችን በቀላሉ በማይክሮconfig.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}
ወይ ማዕቀፉ ስለተጻፈ ጃቫ, ከጥሪው ጋር ተመሳሳይ የሆኑ የስርዓት ተለዋዋጮችን ማግኘት እንችላለን ስርዓት :: GetProperty እንደዚህ ያለ መዋቅር በመጠቀም:
${[ኢሜል የተጠበቀ]}
ለኤክስቴንሽን ቋንቋ ድጋፍን መጥቀስ ተገቢ ነው ጸደይ ኤል. የሚከተሉት አገላለጾች በቅንብር ውስጥ ተፈጻሚ ይሆናሉ፡

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

እና አገላለጹን በመጠቀም በውቅረት ፋይሎች ውስጥ የአካባቢ ተለዋዋጮችን መጠቀም ይችላሉ። #ቫር:

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

ስለዚህ ማዕቀፉ ጥሩ ማስተካከያ እና የማይክሮ አገልግሎቶችን ለማዋቀር በጣም ኃይለኛ መሳሪያ ነው። ማዕቀፉ ዋና ተግባሩን በትክክል ያሟላል - በቅንብሮች ውስጥ ኮፒ-መለጠፍን ማስወገድ ፣ ቅንብሮችን ማጠናከር እና በውጤቱም ፣ ሊሆኑ የሚችሉ ስህተቶችን መቀነስ ፣ አወቃቀሮችን በቀላሉ ለማጣመር እና ለተለያዩ አካባቢዎች እንዲቀይሩ ያስችልዎታል።

በዚህ ማዕቀፍ ላይ ፍላጎት ካሎት ኦፊሴላዊ ገጹን ለመጎብኘት እና ከሙሉ ጋር ለመተዋወቅ እመክራለሁ ሰነዶችወይም ምንጮቹን ቆፍሩ እዚህ.

ምንጭ: hab.com

አስተያየት ያክሉ