ሁሉም ሰው ሰላም!

ተግባሩ እንደሚከተለው ነው፡- ከላይ ባለው ሥዕል ላይ የሚታየው ፍሰት አለ፣ ይህም ወደ N አገልጋዮች መሰማራት ያለበት ከ ጋር የሙከራ ፍሰት - አንድ ፋይል እየተፈጠረ እና ወደ ሌላ የNiFi ምሳሌ እየተላከ ነው። የውሂብ ዝውውር የሚከናወነው የNiFi ጣቢያ-ወደ-ጣቢያ ፕሮቶኮልን በመጠቀም ነው።
NiFi Site to Site (S2S) በNiFi አብነቶች መካከል ውሂብ ለማስተላለፍ ደህንነቱ የተጠበቀ እና በቀላሉ ሊዋቀር የሚችል መንገድ ነው። S2S እንዴት እንደሚሰራ ይወቁ እና S2S እንዲያይ የሚያስችል የNiFi ኢንሳክሽን ማዋቀርን መርሳት የለብንም። .
S2Sን በመጠቀም ውሂብ ሲያስተላልፉ፣ አንዱ ኢንስታግራም የደንበኛ ኢንስታግራም ይባላል፣ ሌላኛው ደግሞ የአገልጋይ ኢንስታግራም ይባላል። የደንበኛ ኢንስታግራም ውሂብ ይልካል፣ እና የአገልጋይ ኢንስታግራም ይቀበላል። በመካከላቸው የውሂብ ዝውውርን ለማዋቀር ሁለት መንገዶች አሉ፡
- ይግፉከደንበኛው ምሳሌ፣ መረጃ የሚላከው የርቀት ሂደት ቡድን (RPG) በመጠቀም ነው። በአገልጋይ ምሳሌ ላይ፣ መረጃ የሚቀበለው የግቤት ወደብ በመጠቀም ነው።
- ጐተተአገልጋዩ ውሂብ የሚቀበለው RPG በመጠቀም ሲሆን ደንበኛው የውጤት ወደብ በመጠቀም ይልከዋል።
በ Apache Registry ውስጥ ለማሰማራት ፍሰቱን እናከማቻለን።
Apache NiFi Registry የApache NiFi ንዑስ ፕሮጀክት ሲሆን የፍሰት ማከማቻ እና የስሪት መቆጣጠሪያ መሳሪያ ያቀርባል። ልክ እንደ GIT ነው። መዝገቡን ስለመጫን፣ ስለማዋቀር እና ስለመጠቀም መረጃ በሚከተለው ውስጥ ማግኘት ይቻላል። ፍሉው ለማከማቻ ሂደት ቡድን ተመድቦ በመዝገብ ቤቱ ውስጥ ተከማችቷል። በኋላ ላይ በጽሁፉ ውስጥ ስለዚህ ጉዳይ እንመለሳለን።
መጀመሪያ ላይ፣ N ትንሽ ቁጥር ሲሆን፣ ፍሰቱ የሚደርሰው እና ተቀባይነት ባለው ጊዜ ውስጥ በእጅ የሚዘመን ነው።
ነገር ግን ኤን እያደገ ሲሄድ ችግሮቹ እየበዙ ይሄዳሉ፡
- ፍሰት ለማዘመን ረጅም ጊዜ ይወስዳል። ወደ ሁሉም አገልጋዮች መግባት ያስፈልግዎታል።
- የአብነት ዝማኔ ስህተቶች አሉ። እዚህ ዘምነዋል፣ ግን እዚያ ረስተውታል።
- ብዙ ተመሳሳይ ስራዎችን ሲያከናውን የሰው ስህተት
ይህ ሁሉ ሂደቱን በራስ-ሰር ማድረግ ወደሚያስፈልገን ደረጃ ይመራናል። ይህንን ችግር ለመፍታት የሚከተሉትን አቀራረቦች ሞክሬያለሁ፡
- ከ NiFi ይልቅ MiNiFi ተጠቀም
- ኒፋይ ሲኤልአይ
- ኒፒኤፒአይ
ሚኒፋይን መጠቀም
— የApache NiFi ንዑስ ፕሮጀክት። MiNiFy ከNiFi ጋር ተመሳሳይ ፕሮሰሰሮችን የሚጠቀም እና ከNiFi ጋር ተመሳሳይ ፍሰቶችን እንዲፈጠር የሚያስችል የታመቀ ወኪል ነው። የወኪሉ ቀላል ክብደት በከፊል ሚኒኤፍይ ለፍሰት ውቅር ግራፊክ በይነገጽ ስለሌለው ነው። በMiNiFy ውስጥ የግራፊክ በይነገጽ አለመኖር ማለት ወደ ሚኒፋይ የሚፈሰው ፍሰት ችግር መፍታት አለበት ማለት ነው። ሚኒኤፍይ በIoT ውስጥ በንቃት ጥቅም ላይ ስለሚውል፣ ብዙ ክፍሎች አሉ፣ እና ወደ የመጨረሻ ሚኒፋይ ፍሰቶች የሚፈሰው ፍሰት ሂደት በራስ-ሰር መሆን አለበት። የሚያውቁት ይመስላል?
ሌላኛው ንዑስ ፕሮጀክት፣ MiNiFi C2 አገልጋይ፣ ይህንን ችግር ለመፍታት ይረዳል። ይህ ምርት በውቅረት ማሰማሪያ አርክቴክቸር ውስጥ ማዕከላዊ ነጥብ እንዲሆን የተነደፈ ነው። አካባቢውን እንዴት ማዋቀር እንደሚቻል በ ውስጥ ተገልጿል። በHabr ላይ እና ችግሩን ለመፍታት በቂ መረጃ አለ። MiNiFi ከC2 አገልጋይ ጋር በመተባበር ውቅሩን በራስ-ሰር ያዘምናል። የዚህ አካሄድ ብቸኛው ችግር በC2 አገልጋይ ላይ አብነቶችን መፍጠር አለብዎት፤ ለመዝገብ ቤቱ ቀላል ቁርጠኝነት ብቻ በቂ አይደለም።
ከላይ ባለው ጽሑፍ ውስጥ የተገለጸው አማራጭ ውጤታማ ነው እና ለመተግበር አስቸጋሪ አይደለም፣ ነገር ግን የሚከተሉትን ማስታወስ አለብዎት፡
- ሚኒፊ ከኒፊ የሚመጡ ሁሉንም ፕሮሰሰሮች የሉትም።
- በሚኒፊ ውስጥ ያሉት የፕሮሰሰር ስሪቶች በኒፋይ ውስጥ ካሉት የፕሮሰሰር ስሪቶች በስተኋላ ቀርተዋል።
ይህ ጽሑፍ በሚጻፍበት ጊዜ፣ የNiFi የቅርብ ጊዜው ስሪት 1.9.2 ነው። የቅርብ ጊዜው የMiNiFi ፕሮሰሰር ስሪት 1.7.0 ነው። ፕሮሰሰሮች ወደ MiNiFi ሊጨመሩ ይችላሉ፣ ነገር ግን በNiFi እና በMiNiFi ፕሮሰሰሮች መካከል ባለው የስሪት ልዩነት ምክንያት ይህ ላይሰራ ይችላል።
ኒፋይ ሲኤልአይ
መፍረድ በ መሳሪያው በይፋዊው ድህረ ገጽ ላይ ተዘርዝሯል። በፍሰት አቅርቦት እና በሂደት አስተዳደር ዘርፎች በNiFI እና NiFi መዝገብ ቤት መካከል ያለውን መስተጋብር በራስ-ሰር ለማካሄድ የሚያስችል መሳሪያ ነው። ለመጀመር ማውረድ ያስፈልግዎታል። .
መገልገያውን እንጀምር
./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 አብነቶችን ይፈልጋል። ውሂብ ወደ አገልጋዩ ለማስተላለፍ Push የሚለውን መርጠናል ብለን እናስብ። የውሂብ ማስተላለፍን ለማንቃት፣ በፍሰታችን ውስጥ አስቀድሞ በተካተተው የርቀት ሂደት ቡድን (RPG) ውስጥ ውሂብ ማስተላለፍን ማንቃት አለብን።

በCLI ሰነዶች ወይም በሌሎች ምንጮች ውስጥ የውሂብ ዝውውርን ለማንቃት መንገድ ማግኘት አልቻልኩም። እንዴት እንደሆነ የሚያውቁ ከሆነ፣ እባክዎን በአስተያየቶቹ ውስጥ ያሳውቁኝ።
ባሽ እየተጠቀምን ስለሆነ እና እስከ መጨረሻው ድረስ ለመሄድ ፈቃደኛ ስለሆንን መፍትሄ እናፈላልግ! ይህንን ችግር ለመፍታት የNiFi API ን መጠቀም እንችላለን። ከላይ ከተጠቀሱት ምሳሌዎች መታወቂያውን በመውሰድ የሚከተለውን ዘዴ እንጠቀማለን (በእኛ ሁኔታ 7f522a13-016e-1000-e504-d5b15587f2f3)። የNiFi API ዘዴዎች መግለጫ .

በሰውነት ውስጥ የሚከተለውን ቅርጸት JSON ማለፍ ያስፈልግዎታል:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}
እንዲሰራ መሞላት ያለባቸው መለኪያዎች፡
ግዛት — የውሂብ ዝውውር ሁኔታ። TRANSMITTING የውሂብ ማስተላለፍን ለማንቃት ይገኛል፣ እሱን ለማሰናከል STOPED።
ትርጉም — የፕሮሰሰር ስሪት
ስሪቱ ሲፈጠር ወደ 0 በነባሪነት ይቀየራል፣ ነገር ግን እነዚህ መለኪያዎች ዘዴውን በመጠቀም ሊገኙ ይችላሉ

ይህ ዘዴ ለባሽ ስክሪፕት አፍቃሪዎች ተስማሚ ሊመስል ይችላል፣ ግን ትንሽ አስቸጋሪ ሆኖ አግኝቼዋለሁ - የባሽ ስክሪፕት በጣም የምወደው ነገር አይደለም። የሚቀጥለው ዘዴ የበለጠ አስደሳች እና ምቹ ነው፣ በእኔ አስተያየት።
ኒፒኤፒአይ
NiPyAPI ከNiFi አብነቶች ጋር ለመግባባት የሚያገለግል የፓይዘን ቤተ-መጽሐፍት ነው። ከቤተ-መጻሕፍት ጋር ለመስራት አስፈላጊውን መረጃ ይዟል። ፈጣን ጅምር በ ውስጥ ተገልጿል። በ github ላይ።
የውቅር ማሰማሪያ ስክሪፕት የፓይዘን ፕሮግራም ነው። ወደ ኮድ ስራ እንሸጋገር።
ለተጨማሪ ስራ የውቅር ፋይሎቹን እናዘጋጅ። የሚከተሉትን መለኪያዎች ያስፈልጉናል፡
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, которое подтягиваем
በተጨማሪም የዚህን ቤተ-መጽሐፍት ዘዴዎች ስሞች እጨምራለሁ፣ እነሱም የተገለጹት .
መዝገብ ቤቱን ከ nifi instance ጋር በማገናኘት
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 ክፍል ውስጥ፣ የውሂብ ዝውውር በርቀት ሂደት ቡድን ውስጥ በራስ-ሰር እንደማይነቃ ተጠቅሷል። ስክሪፕትን በመተግበር ላይ እያለም ተመሳሳይ ችግር አጋጥሞኛል። በዚያን ጊዜ፣ የውሂብ ዝውውርን በኤፒአይ በመጠቀም ወደ ሥራ ማግኘት ስላልቻልኩ፣ ለምክር/እገዛ የኒፒአይኤፒ ቤተ-መጽሐፍት ገንቢን በኢሜል ለመላክ ወሰንኩ። ገንቢው ምላሽ ሰጠ፣ ችግሩን ተወያይተናል፣ እና "አንድ ነገር ለመፈተሽ" ጊዜ እንደሚያስፈልገው ተናግሯል። ከጥቂት ቀናት በኋላ፣ የጅምር ችግሬን የፈታ የፓይዘን ተግባር የያዘ ኢሜይል ደረሰኝ! በዚያን ጊዜ፣ የኒፒአይኤፒአይ ስሪት 0.13.3 ይገኛል፣ እና በእርግጥ፣ ከዚህ ውስጥ ምንም አልነበረውም። ነገር ግን በቅርቡ በተለቀቀው ስሪት 0.14.0 ውስጥ፣ ይህ ተግባር አስቀድሞ በቤተ-መጽሐፍት ውስጥ ተካትቷል። ይተዋወቁ...
nipyapi.canvas.set_remote_process_group_transmissionስለዚህ፣ የNiPyAPI ቤተ-መጽሐፍትን በመጠቀም፣ መዝገቡን አገናኝተናል፣ ፍሰትን አሰማርተናል፣ እና ፕሮሰሰሮችን እና የውሂብ ዝውውርን እንኳን አስጀምረናል። አሁን ኮዱን ማጥራት፣ ሁሉንም አይነት ቼኮች፣ ሎግ ማድረግ እና ያንን ሁሉ ጃዝ ማከል እንችላለን። ግን ያ ሙሉ በሙሉ የተለየ ታሪክ ነው።
ካሰብኳቸው የአውቶሜሽን አማራጮች ውስጥ የኋለኛው በጣም ቀልጣፋ ይመስላል። በመጀመሪያ፣ አሁንም የፓይዘን ኮድ ነው፣ ይህም ረዳት ኮድ እንዲያካትቱ እና የፕሮግራም አወጣጥ ቋንቋውን ጥቅሞች ሁሉ እንዲጠቀሙ ያስችልዎታል። በሁለተኛ ደረጃ፣ የNiPyAPI ፕሮጀክት በንቃት እያደገ ነው፣ እና ማንኛውም ችግር ካጋጠመዎት ገንቢውን ማነጋገር ይችላሉ። በሶስተኛ ደረጃ፣ NiPyAPI ውስብስብ ችግሮችን ለመፍታት ከNiFi ጋር ለመግባባት የበለጠ ተለዋዋጭ መሳሪያ ነው። ለምሳሌ፣ በፍሰት ውስጥ ያሉ የመልእክት ወረፋዎች በአሁኑ ጊዜ ባዶ መሆናቸውን እና የሂደት ቡድን ሊዘመን እንደሚችል መወሰን።
ለጊዜው ያ ብቻ ነው። በNiFi ውስጥ የፍሰት አቅርቦትን በራስ-ሰር ለማድረግ ሦስት አቀራረቦችን፣ አንድ ገንቢ ሊያጋጥመው የሚችለውን ወጥመዶች ገልጫለሁ፣ እና ማድረስን በራስ-ሰር ለማድረግ የስራ ኮድ አቅርቤያለሁ። በዚህ ርዕስ ላይ እንደኔ ፍላጎት ካለዎት፣
ምንጭ: hab.com
