په اپاچي نی فای کې د جریان تحویلي اتومات

سلام هر!

په اپاچي نی فای کې د جریان تحویلي اتومات

دنده په لاندې ډول ده - په پورتني عکس کې ښودل شوي جریان شتون لري ، کوم چې اړتیا لري د N سرورونو سره وصل شي. اپاچی نی فای. د جریان ازموینه - یو فایل رامینځته کیږي او بل NiFi مثال ته لیږل کیږي. د معلوماتو لیږد د NiFi سایټ څخه سایټ پروتوکول په کارولو سره پیښیږي.

د NiFi سایټ څخه سایټ (S2S) د NiFi مثالونو ترمینځ د ډیټا لیږدولو لپاره خوندي ، خورا دودیز وړ لاره ده. وګورئ چې S2S څنګه کار کوي اسناد او دا مهمه ده چې په یاد ولرئ چې ستاسو د NiFi مثال تنظیم کړئ ترڅو S2S لیدلو ته اجازه ورکړي دلته.

کله چې دا د S2S په کارولو سره د معلوماتو لیږد ته راځي، یو مثال د پیرودونکي په نوم یادیږي، دویم سرور دی. پیرودونکي ډاټا لیږي، سرور یې ترلاسه کوي. د دوی ترمنځ د معلوماتو لیږد تنظیم کولو دوه لارې:

  1. ټیله کول. ډاټا د ریموټ پروسس ګروپ (RPG) په کارولو سره د پیرودونکي مثال څخه لیږل کیږي. د سرور په مثال کې، ډاټا د ان پټ پورټ په کارولو سره ترلاسه کیږي
  2. کشول. سرور د RPG په کارولو سره ډیټا ترلاسه کوي ، پیرودونکي د آوټ پټ پورټ په کارولو سره لیږي.


د رول کولو لپاره جریان د اپاچي راجستر کې زیرمه شوی.

د اپاچي نی فای راجسټری د اپاچي نی فای فرعي پروژه ده چې د جریان ذخیره کولو او نسخه کولو وسیله چمتو کوي. د GIT یو ډول. د راجسټری سره د نصب کولو ، تنظیم کولو او کار کولو په اړه معلومات موندل کیدی شي رسمي اسناد. د ذخیره کولو لپاره جریان د پروسې ګروپ کې یوځای کیږي او په دې فورمه کې په راجستر کې زیرمه شوي. موږ به وروسته په مقاله کې دې ته راستون شو.

په پیل کې، کله چې N یو کوچنی شمیر وي، جریان په مناسب وخت کې د لاس په واسطه لیږدول کیږي او تازه کیږي.

مګر لکه څنګه چې N وده کوي، نورې ستونزې شتون لري:

  1. دا د جریان تازه کولو لپاره ډیر وخت نیسي. تاسو باید ټولو سرورونو ته لاړ شئ
  2. د ټیمپلیټونو په تازه کولو کې تېروتنې شتون لري. دلته دوی تازه کړل، مګر دلته یې هیر کړل
  3. انساني تېروتنه کله چې د ورته عملیاتو لوی شمیر ترسره کوي

دا ټول موږ دې حقیقت ته رسوي چې د پروسې اتومات کول اړین دي. ما د دې ستونزې د حل لپاره لاندې لارې هڅه کړې:

  1. د NiFi پرځای MiNiFi وکاروئ
  2. NiFi CLI
  3. NiPyAPI

د MiNiFi کارول

ApacheMiNify د Apache NiFi فرعي پروژه ده. MiNiFy یو کمپیکٹ ایجنټ دی چې د NiFi په څیر ورته پروسیسرونه کاروي، تاسو ته اجازه درکوي د NiFi په څیر ورته جریان رامینځته کړئ. د اجنټ روښانتیا د نورو شیانو په مینځ کې ترلاسه کیږي ، د دې حقیقت له امله چې MiNiFy د جریان تنظیم کولو لپاره ګرافیکي انٹرفیس نلري. د MiNiFy د ګرافیکي انٹرفیس نشتوالی پدې معنی دی چې په minifi کې د جریان تحویلۍ ستونزه حل کول اړین دي. څرنګه چې MiNiFy په فعاله توګه په IOT کې کارول کیږي، ډیری برخې شتون لري او وروستي minifi مثالونو ته د جریان رسولو پروسه باید اتومات وي. یو پیژندل شوی دنده، سمه ده؟

بله فرعي پروژه، MiNiFi C2 سرور به د دې ستونزې په حل کې مرسته وکړي. دا محصول د ځای په ځای کولو جوړښت کې د مرکزي نقطې په توګه ټاکل شوی. د چاپیریال تنظیم کولو څرنګوالی - تشریح شوی دا مقاله په Habré او معلومات د ستونزې د حل لپاره کافي دي. MiNiFi د C2 سرور سره په ګډه خپل تشکیلات په اوتومات ډول تازه کوي. د دې تګلارې یوازینۍ نیمګړتیا دا ده چې تاسو باید په C2 سرور کې ټیمپلیټونه رامینځته کړئ ، د راجسټری لپاره ساده ژمنې کافي ندي.

په پورته مقاله کې تشریح شوي اختیار کار کوي او پلي کول یې ستونزمن ندي، مګر موږ باید لاندې هیر نکړو:

  1. minifi د nifi څخه ټول پروسیسر نلري
  2. په Minifi کې د CPU نسخې په NiFi کې د CPU نسخو څخه وروسته پاتې دي.

د لیکلو په وخت کې، د NiFi وروستۍ نسخه 1.9.2 ده. د وروستي MiNiFi نسخه پروسیسر 1.7.0 دی. پروسیسرونه په MiNiFi کې اضافه کیدی شي ، مګر د NiFi او MiNiFi پروسیسرونو ترمینځ د نسخې توپیرونو له امله ، دا ممکن کار ونکړي.

NiFi CLI

په واسطه قضاوت کول توضیحات په رسمي ویب پاڼه کې وسیله، دا د جریان رسولو یا پروسې مدیریت په برخه کې د 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 وکاروئ. راځئ چې لاندې میتود وکاروو، موږ د پورته مثالونو څخه ID اخلو (زموږ په قضیه کې دا 7f522a13-016e-1000-e504-d5b15587f2f3 دی). د NiFi API میتودونو توضیحات دلته.

په اپاچي نی فای کې د جریان تحویلي اتومات
په بدن کې، تاسو اړتیا لرئ چې JSON پاس کړئ، د لاندې بڼې څخه:

{
    "revision": {
	    "clientId": "value",
	    "version": 0,
	    "lastModifier": "value"
	},
    "state": "value",
    "disconnectedNodeAcknowledged": true
}

هغه پیرامیټونه چې باید د "کار" کولو لپاره ډک شي:
دولت - د معلوماتو لیږد حالت. د ډیټا لیږد فعالولو لپاره لیږد شتون لري، د غیر فعالولو لپاره ودرول شو
نسخه - د پروسیسر نسخه

نسخه به 0 ته ډیفالټ شي کله چې رامینځته شي ، مګر دا پیرامیټونه د میتود په کارولو سره ترلاسه کیدی شي

په اپاچي نی فای کې د جریان تحویلي اتومات

د باش سکریپټونو مینه والو لپاره، دا طریقه مناسبه ښکاري، مګر دا زما لپاره سخته ده - د باش سکریپټونه زما د خوښې وړ ندي. زما په نظر بله لاره ډیره په زړه پوري او ډیره اسانه ده.

NiPyAPI

NiPyAPI د NiFi مثالونو سره د تعامل لپاره د Python کتابتون دی. د اسنادو پاڼه د کتابتون سره د کار کولو لپاره اړین معلومات لري. چټک پیل په کې تشریح شوی مسوده په ګیتوب کې

د ترتیب کولو لپاره زموږ سکریپټ د Python برنامه ده. راځئ چې کوډ کولو ته لاړ شو.
د نورو کارونو لپاره تشکیلات تنظیم کړئ. موږ به لاندې پیرامیټونو ته اړتیا ولرو:

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 مثال په کارولو سره وصل کوو

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 په اړه په بلاک کې، دا لیکل شوي چې د ډیټا لیږد په اتوماتيک ډول د ریموټ پروسې ګروپ کې فعال نه دی؟ کله چې سکریپټ پلي کول، زه هم د دې ستونزې سره مخ شوم. په هغه وخت کې، زه نشم کولی د API په کارولو سره د معلوماتو لیږد پیل کړم او ما پریکړه وکړه چې د NiPyAPI کتابتون پراختیا کونکي ته ولیکم او د مشورې / مرستې غوښتنه وکړم. پراختیا کونکي ماته ځواب ورکړ ، موږ د ستونزې په اړه بحث وکړ او هغه لیکلي چې هغه د "یو څه چک کولو" لپاره وخت ته اړتیا لري. او اوس، څو ورځې وروسته، یو بریښنالیک راځي چې په کې د Python فنکشن لیکل شوی چې زما د پیل ستونزه حل کوي !!! په هغه وخت کې، د NiPyAPI نسخه 0.13.3 وه او البته، په دې کې هیڅ ډول نه و. مګر په 0.14.0 نسخه کې، کوم چې په دې وروستیو کې خپور شوی، دا فنکشن لا دمخه په کتابتون کې شامل شوی. ملاقات

nipyapi.canvas.set_remote_process_group_transmission

نو، د NiPyAPI کتابتون په مرسته، موږ راجستري وصل کړه، جریان مو وصل کړ، او حتی د پروسیسرونو او معلوماتو لیږد پیل کړ. بیا تاسو کولی شئ کوډ کوډ کړئ، هر ډول چکونه اضافه کړئ، ننوتل، او بس. مګر دا په بشپړه توګه مختلف کیسه ده.

د اتوماتیک اختیارونو څخه چې ما په پام کې نیولي، وروستی ماته خورا اغیزمن ښکاري. لومړی، دا لاهم د پیتون کوډ دی، په کوم کې چې تاسو کولی شئ د معاون پروګرام کوډ شامل کړئ او د پروګرام کولو ژبې څخه پوره ګټه واخلئ. دوهم، د NiPyAPI پروژه په فعاله توګه وده کوي او د ستونزو په صورت کې تاسو کولی شئ پراختیا کونکي ته ولیکئ. دریم، NiPyAPI لاهم د پیچلو ستونزو په حل کې د NiFi سره د متقابل عمل لپاره خورا انعطاف وړ وسیله ده. د مثال په توګه، د دې معلومولو کې چې ایا د پیغام کتارونه اوس مهال په جریان کې خالي دي او ایا د پروسې ګروپ تازه کول ممکن دي.

بس نور څه نه. ما په NiFi کې د جریان اتومات کولو لپاره 3 لارې تشریح کړې ، هغه نیمګړتیاوې چې یو پراختیا کونکی ورسره مخ کیږي او د اتومات تحویل لپاره کاري کوډ چمتو کوي. که تاسو په دې موضوع کې دومره علاقه لرئ لکه څنګه چې زه یم - ولیکئ!

سرچینه: www.habr.com

Add a comment