Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Ro-ràdh

Tha e mar sin a thachair gum feumadh mi eòlas fhaighinn air an teicneòlas seo aig an àite obrach a th’ agam an-dràsta. Tòisichidh mi le beagan cùl-fhiosrachaidh. Aig an ath choinneamh, chaidh innse don sgioba againn gum feum sinn amalachadh a chruthachadh le siostam aithnichte. Le aonachadh bha e a’ ciallachadh gun cuireadh an siostam ainmeil seo iarrtasan thugainn tro HTTP gu puing crìochnachaidh sònraichte, agus gu h-annasach gu leòr, chuireadh sinn freagairtean air ais ann an cruth teachdaireachd SOAP. Tha e coltach gu bheil a h-uile dad sìmplidh agus gun samhail. Bho seo tha e a’ leantainn gu bheil feum agad air ...

Amas

Cruthaich 3 seirbheisean. Is e a’ chiad fhear dhiubh an t-Seirbheis Ùrachadh Stòr-dàta. Bidh an t-seirbheis seo, nuair a thig dàta ùr bho shiostam treas-phàrtaidh, ag ùrachadh an dàta san stòr-dàta agus a’ gineadh faidhle ann an cruth CSV gus a ghluasad chun ath shiostam. Canar crìoch an dàrna seirbheis - Seirbheis Còmhdhail FTP, a gheibh am faidhle a chaidh a ghluasad, ga dhearbhadh, agus ga chuir ann an stòradh faidhle tro FTP. Bidh an treas seirbheis, an t-seirbheis gluasad dàta luchd-cleachdaidh, ag obair gu neo-chunbhalach leis a’ chiad dhà. Bidh e a’ faighinn iarrtas bho shiostam treas-phàrtaidh bhon taobh a-muigh gus am faidhle a chaidh a dheasbad gu h-àrd fhaighinn, a’ gabhail am faidhle freagairt deiseil, ga atharrachadh (ag ùrachadh nan raointean id, tuairisgeul, linkToFile) agus a’ cur am freagairt ann an cruth teachdaireachd SOAP. Is e sin, tha an dealbh iomlan mar a leanas: bidh a 'chiad dà sheirbheis a' tòiseachadh air an obair a-mhàin nuair a tha an dàta airson ùrachadh air ruighinn. Tha an treas seirbheis ag obair gu cunbhalach oir tha mòran luchd-cleachdaidh fiosrachaidh, mu 1000 iarrtas airson dàta gach mionaid. Tha seirbheisean rim faighinn gu cunbhalach agus tha na h-eisimpleirean aca suidhichte ann an àrainneachdan eadar-dhealaichte, leithid deuchainn, demo, ro-riochdachadh agus prod. Gu h-ìosal tha diagram de mar a tha na seirbheisean sin ag obair. Leig leam soilleireachadh sa bhad gu bheil cuid de mhion-fhiosrachadh air a bhith nas sìmplidhe gus iom-fhillteachd neo-riatanach a sheachnadh.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Doimhneachadh teicnigeach

Nuair a bha sinn a’ dealbhadh fuasgladh don duilgheadas, chuir sinn romhainn an toiseach tagraidhean a dhèanamh ann an Java a’ cleachdadh frèam an Earraich, Nginx balancer, stòr-dàta Postgres agus rudan teicnigeach eile agus nach eil cho teicnigeach. Leis gun tug an ùine airson fuasgladh teignigeach a leasachadh cothrom dhuinn beachdachadh air dòighean-obrach eile gus an duilgheadas seo fhuasgladh, thuit ar sùil air teicneòlas Apache NIFI, a tha fasanta ann an cearcallan sònraichte. Canaidh mi anns a’ bhad gun tug an teicneòlas seo cothrom dhuinn na 3 seirbheisean sin fhaicinn. Bheir an artaigil seo cunntas air leasachadh seirbheis còmhdhail faidhle agus seirbheis gluasad dàta don neach-cleachdaidh, ach ma tha an artaigil feumail, sgrìobhaidh mi mun t-seirbheis airson dàta ùrachadh san stòr-dàta.

Dè th 'ann?

Is e ailtireachd sgaoilte a th’ ann an NIFI airson luchdachadh agus giullachd dàta luath co-shìnte, àireamh mhòr de plugins airson stòran agus cruth-atharrachaidhean, dreachd rèiteachaidhean agus mòran a bharrachd. Is e deagh bhuannachd a tha ann gu bheil e gu math furasta a chleachdadh. Faodar pròiseasan beaga leithid getFile, sendHttpRequest agus feadhainn eile a riochdachadh mar cheàrnagan. Tha gach ceàrnag a 'riochdachadh pròiseas, agus chithear an eadar-obrachadh anns an fhigear gu h-ìosal. Chaidh sgrìobhainnean nas mionaidiche a sgrìobhadh mu eadar-obrachaidhean stèidheachadh pròiseas an seo , dhaibhsan aig a bheil Ruisis - an seo. Tha na sgrìobhainnean a’ mìneachadh gu foirfe mar a nì thu dì-phapadh agus ruith NIFI, a bharrachd air mar a chruthaicheas tu pròiseasan, ris an canar cuideachd ceàrnagan
Rugadh am beachd artaigil a sgrìobhadh às deidh sgrùdadh fada agus structar an fhiosrachaidh a fhuaireadh gu rudeigin mothachail, a bharrachd air a ’mhiann beatha a dhèanamh beagan nas fhasa do luchd-leasachaidh san àm ri teachd.

Eisimpleir:

Thathas a’ beachdachadh air mar a tha ceàrnagan ag eadar-obrachadh le chèile. Tha an sgeama coitcheann gu math sìmplidh: gheibh sinn iarrtas HTTP (Ann an teòiridh, le faidhle ann am bodhaig an iarrtais. Gus comasan NIFI a nochdadh, san eisimpleir seo bidh an t-iarrtas a’ tòiseachadh air a’ phròiseas airson faidhle fhaighinn bhon stòradh faidhle ionadail ). Is fhiach a shoilleireachadh gu bheil pròiseasan ag eadar-obrachadh le chèile tro flowFile ris an canar. Is e seo am prìomh bhuidheann ann an NIFI a bhios a’ stòradh buadhan agus susbaint. Is e susbaint an dàta a tha air a riochdachadh leis an fhaidhle sruth. Is e sin, gu ìre mhòr, ma gheibh thu faidhle bho aon cheàrnag agus ma ghluaiseas tu e gu fear eile, is e an susbaint am faidhle agad.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Mar a chì thu, tha an dealbh seo a 'sealltainn a' phròiseas coitcheann. HandleHttpRequest - a’ gabhail ri iarrtasan, ReplaceText - a’ gineadh buidheann freagairt, HandleHttpResponse - a’ cur freagairt. FetchFile - a’ faighinn faidhle bho stòradh faidhle, ga ghluasad chun PutSftp ceàrnagach - a’ cur am faidhle seo air FTP, aig an t-seòladh ainmichte. A-nis barrachd mun phròiseas seo.

Anns a 'chùis seo, is e iarrtas toiseach a h-uile càil. Bheir sinn sùil air na paramadairean rèiteachaidh aige.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Tha a h-uile dad an seo gu math beag ach a-mhàin StandardHttpContextMap - is e seo seòrsa de sheirbheis a leigeas leat iarrtasan a chuir agus fhaighinn. Nas mionaidiche agus eadhon le eisimpleirean, chì thu - an seo

An uairsin, leig dhuinn sùil a thoirt air paramadairean rèiteachaidh ReplaceText den cheàrnag. Is fhiach aire a thoirt do ReplacementValue - is e seo a thèid a thilleadh chun neach-cleachdaidh ann an cruth freagairt. Ann an roghainnean is urrainn dhut an ìre logaidh atharrachadh, chì thu na logaichean {far an do dhì-phacaich thu nifi}/nifi-1.9.2/logs, tha paramadairean fàilligeadh/soirbheachais ann cuideachd - stèidhichte air na paramadairean sin faodaidh tu am pròiseas a riaghladh gu h-iomlan . Is e sin, a thaobh giollachd teacsa soirbheachail, thèid am pròiseas airson freagairt a chuir chun neach-cleachdaidh a ghairm, agus ann an cùis eile bidh sinn dìreach a ’logadh a’ phròiseas neo-shoirbheachail.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Chan eil dad gu sònraichte inntinneach anns na togalaichean HandleHttpResponse ach a-mhàin an inbhe nuair a thèid freagairt a chruthachadh gu soirbheachail.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Tha sinn air an iarrtas agus an fhreagairt a rèiteach - gluaisidh sinn air adhart gu bhith a’ faighinn am faidhle agus ga chuir air an fhrithealaiche FTP. FetchFile - a 'faighinn faidhle aig an t-slighe a chaidh a shònrachadh anns na roghainnean agus ga thoirt don ath phròiseas.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Agus an uairsin ceàrnag PutSftp - cuir am faidhle anns an stòradh faidhle. Chì sinn na paramadairean rèiteachaidh gu h-ìosal.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Is fhiach aire a thoirt don fhìrinn gu bheil gach ceàrnag na phròiseas air leth a dh'fheumar a chuir air bhog. Thug sinn sùil air an eisimpleir as sìmplidh nach eil feumach air gnàthachadh iom-fhillte. An ath rud, seallaidh sinn ris a’ phròiseas beagan nas iom-fhillte, far am bi sinn a’ sgrìobhadh beagan air na claisean.

Eisimpleir nas iom-fhillte

Thionndaidh an t-seirbheis gluasad dàta don neach-cleachdaidh a-mach gu bhith beagan nas iom-fhillte mar thoradh air a ’phròiseas airson an teachdaireachd SOAP atharrachadh. Tha am pròiseas coitcheann air a shealltainn anns an fhigear gu h-ìosal.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

An seo chan eil am beachd gu sònraichte iom-fhillte cuideachd: fhuair sinn iarrtas bhon neach-cleachdaidh gu robh feum aige air dàta, chuir sinn freagairt gun d ’fhuair e teachdaireachd, thòisich e air a’ phròiseas airson am faidhle freagairt fhaighinn, an uairsin dheasaich sinn e le loidsig sònraichte, agus an uairsin air am faidhle a ghluasad chun neach-cleachdaidh ann an cruth teachdaireachd SOAP chun t-seirbheisiche.

Tha mi a’ smaoineachadh nach fheumar cunntas a thoirt a-rithist air na ceàrnagan sin a chunnaic sinn gu h-àrd - gluaisidh sinn dìreach chun fheadhainn ùra. Ma dh’fheumas tu faidhle sam bith a dheasachadh agus nach eil ceàrnagan àbhaisteach den t-seòrsa ReplaceText freagarrach, feumaidh tu an sgriobt agad fhèin a sgrìobhadh. Faodar seo a dhèanamh a’ cleachdadh ceàrnag ExecuteGroogyScript. Tha na roghainnean aige air an taisbeanadh gu h-ìosal.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Tha dà roghainn ann airson an sgriobt a luchdachadh a-steach don cheàrnag seo. Is e a’ chiad fhear le bhith a’ luchdachadh sìos faidhle le sgriobt. Is e an dàrna fear le bhith a’ cuir a-steach sgriobt a-steach do scriptBody. Cho fad ‘s as aithne dhomh, tha an ceàrnag executeScript a’ toirt taic do ghrunn chànanan - tha aon dhiubh groovy. Cuiridh mi briseadh dùil air luchd-leasachaidh java - chan urrainn dhut sgriobtaichean a sgrìobhadh ann an java ann an ceàrnagan mar sin. Dhaibhsan a tha dha-rìribh ag iarraidh, feumaidh tu do cheàrnag àbhaisteach fhèin a chruthachadh agus a chuir ris an t-siostam NIFI. An cois na h-obrach slàn seo tha dannsa fada le tambourine, nach bi sinn a 'dèiligeadh ris san artaigil seo. Thagh mi an cànan groovy. Gu h-ìosal tha sgriobt deuchainn a bhios dìreach ag ùrachadh an id ann an teachdaireachd SOAP mean air mhean. Tha e cudromach toirt fa-near. Bidh thu a 'toirt am faidhle bho flowFile agus ga ùrachadh, na dì-chuimhnich gum feum thu a chuir air ais an sin, ùrachadh. Is fhiach a bhith mothachail cuideachd nach eil a h-uile leabharlann air a ghabhail a-steach. Faodaidh e tachairt gum feum thu fhathast aon de na libs a thoirt a-steach. Is e eas-bhuannachd eile gu bheil an sgriobt sa cheàrnag seo gu math duilich a dheasbad. Tha dòigh ann ceangal a dhèanamh ris an NIFI JVM agus tòiseachadh air a’ phròiseas debugging. Gu pearsanta, chuir mi tagradh ionadail air bhog agus rinn mi atharrais air faidhle fhaighinn bhon t-seisean. Rinn mi debugging gu h-ionadail cuideachd. Tha mearachdan a nochdas nuair a bhios tu a’ luchdachadh sgriobt gu math furasta do Google agus tha iad air an sgrìobhadh le NIFI fhèin chun log.

import org.apache.commons.io.IOUtils
import groovy.xml.XmlUtil
import java.nio.charset.*
import groovy.xml.StreamingMarkupBuilder

def flowFile = session.get()
if (!flowFile) return
try {
    flowFile = session.write(flowFile, { inputStream, outputStream ->
        String result = IOUtils.toString(inputStream, "UTF-8");
        def recordIn = new XmlSlurper().parseText(result)
        def element = recordIn.depthFirst().find {
            it.name() == 'id'
        }

        def newId = Integer.parseInt(element.toString()) + 1
        def recordOut = new XmlSlurper().parseText(result)
        recordOut.Body.ClientMessage.RequestMessage.RequestContent.content.MessagePrimaryContent.ResponseBody.id = newId

        def res = new StreamingMarkupBuilder().bind { mkp.yield recordOut }.toString()
        outputStream.write(res.getBytes(StandardCharsets.UTF_8))
} as StreamCallback)
     session.transfer(flowFile, REL_SUCCESS)
}
catch(Exception e) {
    log.error("Error during processing of validate.groovy", e)
    session.transfer(flowFile, REL_FAILURE)
}

Gu fìrinneach, is ann an seo a thig gnàthachadh na ceàrnaig gu crìch. An uairsin, thèid am faidhle ùraichte a ghluasad chun cheàrnag, air a bheil uallach airson am faidhle a chuir chun t-seirbheisiche. Gu h-ìosal tha na roghainnean airson a’ cheàrnag seo.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Bidh sinn a’ toirt cunntas air an dòigh anns an tèid teachdaireachd SOAP a chuir a-mach. Bidh sinn a’ sgrìobhadh càite. An ath rud feumaidh tu innse gur e SOAP a tha seo.

Apache NIFI - Sealladh farsaing air Feartan ann an Cleachdadh

Cuir grunn fheartan ris leithid aoigheachd agus gnìomh (soapAction). Bidh sinn a 'sàbhaladh agus a' sgrùdadh. Chì thu barrachd fiosrachaidh air mar a chuireas tu iarrtasan SOAP an seo

Choimhead sinn air grunn roghainnean airson pròiseasan NIFI a chleachdadh. Ciamar a bhios iad ag eadar-obrachadh agus dè am fìor bhuannachd a th’ aca? Is e eisimpleirean deuchainn a th’ anns na h-eisimpleirean air an deach beachdachadh agus tha iad beagan eadar-dhealaichte bho na thachras dha-rìribh ann an sabaid. Tha mi an dòchas gum bi an artaigil seo beagan feumail do luchd-leasachaidh. Tapadh leibh airson an aire agad. Ma tha ceist sam bith agad, sgrìobh. Feuchaidh mi ri freagairt.

Source: www.habr.com

Cuir beachd ann