ሁሉም ሰው ሰላም!
ስራው እንደሚከተለው ነው - ከላይ በስዕሉ ላይ የሚታየው ፍሰት አለ, ወደ N አገልጋዮች መልቀቅ ያስፈልገዋል.
የኒፋይ ሳይት ወደ ሳይት (S2S) በNiFi አጋጣሚዎች መካከል ውሂብን ለማስተላለፍ ደህንነቱ የተጠበቀ፣ በቀላሉ የሚዋቀር መንገድ ነው። S2S እንዴት እንደሚሰራ፣ ይመልከቱ
S2S በመጠቀም ስለ ዳታ ማስተላለፍ እየተነጋገርን ባለንበት ሁኔታ፣ አንድ ምሳሌ ደንበኛ፣ ሁለተኛው አገልጋይ ይባላል። ደንበኛው ውሂብ ይልካል, አገልጋዩ ይቀበላል. በመካከላቸው የውሂብ ማስተላለፍን ለማዋቀር ሁለት መንገዶች
- ይግፉ. ከደንበኛው ምሳሌ፣ ውሂብ የርቀት ሂደት ቡድን (RPG) በመጠቀም ይላካል። በአገልጋዩ ምሳሌ ላይ መረጃ የሚገኘው የግቤት ወደብ በመጠቀም ነው።
- ጐተተ. አገልጋዩ RPGን በመጠቀም ውሂብ ይቀበላል, ደንበኛው የውጤት ወደብ በመጠቀም ይልካል.
ለመልቀቅ ፍሰት በ Apache Registry ውስጥ ተከማችቷል።
Apache NiFi Registry ለወራጅ ማከማቻ እና ለስሪት መቆጣጠሪያ መሳሪያ የሚያቀርብ የApache NiFi ንዑስ ፕሮጀክት ነው። የጂአይቲ አይነት። ከመዝገቡ ጋር ስለመጫን፣ ስለማዋቀር እና ስለመስራት መረጃ በ ውስጥ ይገኛል።
በጅምር ላይ N ትንሽ ቁጥር ሲሆን, ፍሰት ተቀባይነት ባለው ጊዜ ውስጥ ይደርሳል እና በእጅ ይሻሻላል.
ነገር ግን N ሲያድግ ችግሮቹ እየበዙ ይሄዳሉ፡-
- ፍሰቱን ለማዘመን ተጨማሪ ጊዜ ይወስዳል. ወደ ሁሉም አገልጋዮች መግባት አለብህ
- የአብነት ማዘመን ስህተቶች ተከስተዋል። እዚህ አዘምነውታል፣ እዚህ ግን ረሱት።
- ብዙ ቁጥር ያላቸው ተመሳሳይ ስራዎችን ሲያከናውን የሰዎች ስህተቶች
ይህ ሁሉ ሂደቱን በራስ-ሰር ማድረግ እንዳለብን ያመጣናል. ይህንን ችግር ለመፍታት የሚከተሉትን መንገዶች ሞከርኩ:
- ከNiFi ይልቅ MiNiFiን ይጠቀሙ
- NiFi CLI
- ኒፒኤፒአይ
MiNiFi ን በመጠቀም
ሌላ ንዑስ ፕሮጀክት ይህንን ችግር ለመፍታት ይረዳል - MiNiFi C2 Server. ይህ ምርት በማዋቀሪያ ልቀት አርክቴክቸር ውስጥ ማዕከላዊ ነጥብ እንዲሆን የታሰበ ነው። አካባቢን እንዴት ማዋቀር እንደሚቻል - በ ውስጥ ተገልጿል
ከላይ ባለው ጽሑፍ ውስጥ የተገለጸው አማራጭ እየሰራ ነው እና ለመተግበር አስቸጋሪ አይደለም, ነገር ግን የሚከተሉትን መርሳት የለብንም.
- ሚኒፊ ሁሉም ፕሮሰሰሮች ከኒፊ የሉትም።
- የሚኒፊ ፕሮሰሰር ስሪቶች ከNiFi ፕሮሰሰር ስሪቶች ኋላ ቀርተዋል።
በሚጽፉበት ጊዜ የቅርብ ጊዜው የ NiFi ስሪት 1.9.2 ነው። የቅርብ ጊዜው የMiNiFi ፕሮሰሰር ስሪት 1.7.0 ነው። ማቀነባበሪያዎች ወደ MiNiFi ሊጨመሩ ይችላሉ፣ነገር ግን በNiFi እና MiNiFi ፕሮሰሰር መካከል ባለው የስሪት ልዩነት ምክንያት ይሄ ላይሰራ ይችላል።
NiFi CLI
መፍረድ በ
መገልገያውን ያስጀምሩ
./bin/cli.sh
_ ___ _
Apache (_) .' ..](_) ,
_ .--. __ _| |_ __ )
[ `.-. | [ |'-| |-'[ | /
| | | | | | | | | | ' '
[___||__][___][___] [___]', ,'
`'
CLI v1.9.2
Type 'help' to see a list of available commands, use tab to auto-complete.
አስፈላጊውን ፍሰት ከመዝገቡ ላይ ለመጫን, የባልዲውን (ባልዲ ለዪ) እና ፍሰቱን እራሱ (ፍሰት መለያ) ለይቶ ማወቅ አለብን. ይህ ውሂብ በክሊ ወይም በ NiFi መዝገብ ድር በይነገጽ ውስጥ ሊገኝ ይችላል። በድር በይነገጽ ውስጥ ይህ ይመስላል።
CLI ን በመጠቀም ይህ ይከናወናል-
#> registry list-buckets -u http://nifi-registry:18080
# Name Id Description
- -------------- ------------------------------------ -----------
1 test_bucket 709d387a-9ce9-4535-8546-3621efe38e96 (empty)
#> registry list-flows -b 709d387a-9ce9-4535-8546-3621efe38e96 -u http://nifi-registry:18080
# Name Id Description
- ------------ ------------------------------------ -----------
1 test_flow d27af00a-5b47-4910-89cd-9c664cd91e85
የሂደቱን ቡድን ከመዝገቡ ማስመጣት እንጀምራለን፡-
#> nifi pg-import -b 709d387a-9ce9-4535-8546-3621efe38e96 -f d27af00a-5b47-4910-89cd-9c664cd91e85 -fv 1 -u http://nifi:8080
7f522a13-016e-1000-e504-d5b15587f2f3
አንድ አስፈላጊ ነጥብ ማንኛውም የኒፊ ምሳሌ የሂደቱን ቡድን የምንጠቀልልበት እንደ አስተናጋጅ ሊገለጽ ይችላል።
የሂደቱ ቡድን ከቆሙ ፕሮሰሰሮች ጋር ተጨምሯል ፣ መጀመር አለባቸው
#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080
በጣም ጥሩ, ማቀነባበሪያዎች ተጀምረዋል. ነገር ግን፣ በስራው ውል መሰረት፣ መረጃን ወደ ሌሎች ሁኔታዎች ለመላክ የNiFi ምሳሌዎችን እንፈልጋለን። መረጃን ወደ አገልጋዩ ለማስተላለፍ የፑሽ ዘዴን እንደመረጡ እናስብ። የውሂብ ማስተላለፍን ለማደራጀት ቀደም ሲል በእኛ ፍሰት ውስጥ በተካተተ በተጨመረው የርቀት ሂደት ቡድን (RPG) ላይ የውሂብ ማስተላለፍን ማንቃት ያስፈልግዎታል።
በ CLI እና በሌሎች ምንጮች ውስጥ ባሉ ሰነዶች ውስጥ የውሂብ ማስተላለፍን ለማንቃት የሚያስችል መንገድ አላገኘሁም። ይህንን እንዴት ማድረግ እንደሚችሉ ካወቁ እባክዎን በአስተያየቶቹ ውስጥ ይፃፉ.
ባሽ ስላለን እና ወደ መጨረሻው ለመሄድ ዝግጁ ስለሆንን መውጫ መንገድ እናገኛለን! ይህንን ችግር ለመፍታት NiFi API መጠቀም ይችላሉ። የሚከተለውን ዘዴ እንጠቀም, ከላይ ከተጠቀሱት ምሳሌዎች መታወቂያውን እንውሰድ (በእኛ ሁኔታ 7f522a13-016e-1000-e504-d5b15587f2f3 ነው). የNiFi ኤፒአይ ዘዴዎች መግለጫ
በሰውነት ውስጥ JSON ን ማለፍ ያስፈልግዎታል፣ እንደዚህ፡-
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}
እንዲሠራ መሞላት ያለባቸው መለኪያዎች፡-
ግዛት - የውሂብ ማስተላለፍ ሁኔታ. ይገኛል፡ የውሂብ ማስተላለፍን ለማንቃት ማስተላለፍ፣ ለማሰናከል ቆመ
ትርጉም - ፕሮሰሰር ስሪት
ስሪቱ ሲፈጠር ነባሪ ወደ 0 ይሆናል፣ ነገር ግን እነዚህ መለኪያዎች ዘዴውን በመጠቀም ማግኘት ይችላሉ።
ለባሽ ስክሪፕቶች አድናቂዎች ይህ ዘዴ ተስማሚ ሊመስል ይችላል ፣ ግን ለእኔ ትንሽ ከባድ ነው - የባሽ ስክሪፕቶች የእኔ ተወዳጅ አይደሉም። የሚቀጥለው ዘዴ በእኔ አስተያየት የበለጠ አስደሳች እና ምቹ ነው.
ኒፒኤፒአይ
NiPyAPI ከNiFi አጋጣሚዎች ጋር መስተጋብር ለመፍጠር የፓይዘን ቤተ-መጽሐፍት ነው።
አወቃቀሩን ለመልቀቅ የእኛ ስክሪፕት በፓይዘን ውስጥ ያለ ፕሮግራም ነው። ወደ ኮድ ማውጣት እንሂድ።
ለቀጣይ ሥራ ውቅሮችን አዘጋጅተናል. የሚከተሉትን መለኪያዎች ያስፈልጉናል:
nipyapi.config.nifi_config.host = 'http://nifi:8080/nifi-api' #путь до nifi-api инстанса, на котором разворачиваем process group
nipyapi.config.registry_config.host = 'http://nifi-registry:18080/nifi-registry-api' #путь до nifi-registry-api registry
nipyapi.config.registry_name = 'MyBeutifulRegistry' #название registry, как будет называться в инстансе nifi
nipyapi.config.bucket_name = 'BucketName' #название bucket, из которого подтягиваем flow
nipyapi.config.flow_name = 'FlowName' #название flow, которое подтягиваем
በመቀጠል የተገለጹትን የዚህን ቤተ-መጽሐፍት ዘዴዎች ስሞች አስገባለሁ
በመጠቀም መዝገቡን ከኒፊ ምሳሌ ጋር ያገናኙት።
nipyapi.versioning.create_registry_client
በዚህ ደረጃ ፣ መዝገቡ ቀድሞውኑ ወደ ምሳሌው መጨመሩን ቼክ ማከል ይችላሉ ፣ ለዚህም ዘዴውን መጠቀም ይችላሉ ።
nipyapi.versioning.list_registry_clients
በቅርጫት ውስጥ ፍሰትን ለመፈለግ ባልዲውን እናገኛለን
nipyapi.versioning.get_registry_bucket
የተገኘውን ባልዲ በመጠቀም, ፍሰትን እንፈልጋለን
nipyapi.versioning.get_flow_in_bucket
በመቀጠል, ይህ የሂደት ቡድን አስቀድሞ መጨመሩን መረዳት አስፈላጊ ነው. የሂደቱ ቡድኑ እንደ መጋጠሚያዎች ተቀምጧል እና ሁለተኛው አካል በአንዱ ላይ ሲደራረብ ሁኔታ ሊፈጠር ይችላል. አረጋግጫለሁ፣ ይሄ ሊከሰት ይችላል :) ሁሉንም የተጨመሩ የሂደት ቡድኖች ለማግኘት ዘዴውን እንጠቀማለን።
nipyapi.canvas.list_all_process_groups
ተጨማሪ ለምሳሌ በስም መፈለግ እንችላለን።
አብነቱን የማዘመን ሂደቱን አልገልጽም, እኔ እላለሁ በአቀነባባሪዎች በአዲሱ የአብነት ስሪት ውስጥ ከተጨመሩ, በወረፋው ውስጥ የመልእክት መኖር ምንም ችግሮች የሉም. ግን ፕሮሰሰሮች ከተወገዱ ችግሮች ሊፈጠሩ ይችላሉ (የመልእክት ወረፋ ከፊት ለፊት ከተከማቸ ኒፊ ፕሮሰሰር እንዲያስወግዱ አይፈቅድልዎትም)። ይህንን ችግር እንዴት እንደፈታሁት ፍላጎት ካሎት እባክዎን ይፃፉልኝ እና ስለዚህ ጉዳይ እንነጋገራለን ። በአንቀጹ መጨረሻ ላይ ያሉ እውቂያዎች። የሂደቱን ቡድን ወደ መጨመር ደረጃ እንሂድ።
ስክሪፕቱን በምፈታበት ጊዜ የቅርቡ የፍሰት ስሪት ሁል ጊዜ እንደማይጎተት ልዩ ሁኔታ አጋጥሞኛል፣ ስለዚህ ይህን ስሪት መጀመሪያ እንዲመለከቱ እመክራለሁ፡
nipyapi.versioning.get_latest_flow_ver
የሂደቱን ቡድን አሰማር
nipyapi.versioning.deploy_flow_version
ማቀነባበሪያዎችን እንጀምራለን-
nipyapi.canvas.schedule_process_group
ስለ CLI ብሎክ ውስጥ የውሂብ ማስተላለፍ በራስ-ሰር በርቀት ሂደት ቡድን ውስጥ እንደማይነቃ ተጽፏል? ስክሪፕቱን ስተገበር፣ እኔም ይህን ችግር አጋጥሞኝ ነበር። በዚያን ጊዜ፣ ኤፒአይን ተጠቅሜ የውሂብ ማስተላለፍ መጀመር አልቻልኩም እና ለNiPyAPI ቤተ-መጽሐፍት አዘጋጅ ለመጻፍ እና ምክር/እርዳታ ለመጠየቅ ወሰንኩ። ገንቢው ምላሽ ሰጠኝ, ችግሩን ተወያይተናል እና "አንድ ነገር ለመፈተሽ" ጊዜ እንደሚያስፈልገው ጻፈ. እና ከዚያ፣ ከጥቂት ቀናት በኋላ፣ የማስጀመሪያ ችግሬን የሚፈታ ተግባር በፓይዘን የተጻፈበት ደብዳቤ መጣ!!! በዚያን ጊዜ የኒፒኤፒአይ ስሪት 0.13.3 ነበር እና በእርግጥ እንደዚህ ያለ ነገር አልነበረም። ግን በቅርብ ጊዜ በተለቀቀው ስሪት 0.14.0, ይህ ተግባር ቀድሞውኑ በቤተ-መጽሐፍት ውስጥ ተካቷል. መገናኘት,
nipyapi.canvas.set_remote_process_group_transmission
ስለዚህ፣ የNiPyAPI ቤተ መፃህፍትን በመጠቀም መዝገቡን አገናኘን፣ ፍሰትን አውጥተናል፣ እና ፕሮሰሰር እና የውሂብ ማስተላለፍን እንኳን ጀመርን። ከዚያ ኮዱን ማበጠር, ሁሉንም አይነት ቼኮች ማከል, መግባት, እና ያ ብቻ ነው. ግን ያ ፈጽሞ የተለየ ታሪክ ነው።
ካሰብኳቸው አውቶሜሽን አማራጮች ውስጥ፣ የመጨረሻው በጣም ቀልጣፋ መስሎ ታየኝ። በመጀመሪያ ፣ ይህ አሁንም የፓይቶን ኮድ ነው ፣ በውስጡም ረዳት የፕሮግራም ኮድን መክተት እና ሁሉንም የፕሮግራም አወጣጥ ቋንቋ ጥቅሞች መጠቀም ይችላሉ። በሁለተኛ ደረጃ, የኒፒኤፒአይ ፕሮጀክት በንቃት እያደገ ነው እና ችግሮች ካጋጠሙ ለገንቢው መጻፍ ይችላሉ. በሶስተኛ ደረጃ፣ NiPyAPI ውስብስብ ችግሮችን ለመፍታት ከNiFi ጋር ለመገናኘት አሁንም የበለጠ ተለዋዋጭ መሳሪያ ነው። ለምሳሌ፣ የመልእክት ወረፋዎች አሁን በፍሰቱ ውስጥ ባዶ መሆናቸውን እና የሂደቱ ቡድን መዘመን ይቻል እንደሆነ በመወሰን።
ይኼው ነው. በNiFi ውስጥ የፍሰት አቅርቦትን በራስ ሰር ለመስራት 3 አቀራረቦችን፣ ገንቢ ሊያጋጥማቸው የሚችለውን ወጥመዶች እና የማድረስ ሂደትን በራስ-ሰር ለመስራት የስራ ኮድ ሰጥቻለሁ። በዚህ ርዕስ ላይ እንደ እኔ ፍላጎት ካሎት -
ምንጭ: hab.com