Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Réamhrá

Tharla sé mar sin go raibh orm dul i dtaithí ar an teicneolaíocht seo ag an áit oibre atá agam faoi láthair. Tosóidh mé le cúlra beag. Ag an gcéad chruinniú eile, dúradh lenár bhfoireann go gcaithfimid comhtháthú a chruthú le córas aitheanta. Trí chomhtháthú a bhí i gceist go gcuirfeadh an córas aitheanta seo iarratais chugainn trí HTTP chuig críochphointe ar leith, agus rud aisteach go leor, chuirfinn freagraí ar ais i bhfoirm teachtaireachta GALLÚNACH. Is cosúil go bhfuil gach rud simplí agus fánach. Ón seo leanann sé go dteastaíonn uait ...

Tasc

Cruthaigh 3 sheirbhís. Is é an chéad cheann acu an tSeirbhís Nuashonraithe Bunachar Sonraí. Déanann an tseirbhís seo, nuair a thagann sonraí nua isteach ó chóras tríú páirtí, nuashonrú ar na sonraí sa bhunachar sonraí agus gineann sí comhad i bhformáid CSV chun é a aistriú chuig an gcéad chóras eile. Tugtar críochphointe an dara seirbhís ar a dtugtar - an tSeirbhís Iompair FTP, a fhaigheann an comhad aistrithe, a bhailíochtaíonn é, agus a chuireann i stóráil comhad é trí FTP. Oibríonn an tríú seirbhís, an tseirbhís aistrithe sonraí tomhaltóra, go neamhshioncronach leis an gcéad dá cheann. Faigheann sé iarratas ó chóras seachtrach tríú páirtí chun an comhad a pléadh thuas a fháil, tógann sé an comhad freagartha réidh, déanann sé é a mhodhnú (nuashonraítear na réimsí aitheantais, tuairisce, linkToFile) agus seolann sé an freagra i bhfoirm teachtaireachta GALLÚNACH. Is é sin, is é seo a leanas an pictiúr foriomlán: ní thosaíonn an chéad dá sheirbhís ar a gcuid oibre ach amháin nuair a bhíonn na sonraí le haghaidh nuashonrú tagtha. Oibríonn an tríú seirbhís i gcónaí toisc go bhfuil go leor tomhaltóirí faisnéise, thart ar 1000 iarratas ar shonraí in aghaidh an nóiméid. Bíonn seirbhísí ar fáil i gcónaí agus tá a gcásanna suite i dtimpeallachtaí éagsúla, mar shampla tástáil, taispeántas, réamhtháirgeadh agus táirgí. Seo thíos léaráid den chaoi a n-oibríonn na seirbhísí seo. Lig dom a shoiléiriú láithreach go bhfuil roinnt sonraí simplithe chun castacht neamhriachtanach a sheachaint.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Doimhniú Teicniúil

Agus réiteach ar an bhfadhb á phleanáil againn, chinneamar ar dtús iarratais a dhéanamh i Java ag baint úsáide as creat an Earraigh, Nginx balancer, bunachar sonraí Postgres agus rudaí teicniúla eile nach bhfuil chomh teicniúil. Ós rud é gur cheadaigh an t-am chun réiteach teicniúil a fhorbairt dúinn cur chuige eile a mheas chun an fhadhb seo a réiteach, thit ár n-amharc ar theicneolaíocht Apache NIFI, atá faiseanta i gciorcail áirithe. Déarfaidh mé ar an bpointe boise gur thug an teicneolaíocht seo deis dúinn na 3 sheirbhís seo a thabhairt faoi deara. Déanfaidh an t-alt seo cur síos ar fhorbairt seirbhíse iompair comhad agus seirbhís aistrithe sonraí don tomhaltóir, ach má tá an t-alt úsáideach, scríobhfaidh mé faoin tseirbhís chun sonraí a nuashonrú sa bhunachar sonraí.

Cad é seo?

Is ailtireacht dháilte é NIFI chun sonraí a luchtú agus a phróiseáil go tapa go comhthreomhar, líon mór breiseán le haghaidh foinsí agus claochluithe, leagan cumraíochtaí agus go leor eile. Is bónas deas é go bhfuil sé an-éasca le húsáid. Is féidir próisis fánach ar nós getFile, sendHttpRequest agus cinn eile a léiriú mar chearnóga. Seasann gach cearnóg do phróiseas, a bhfuil a idirghníomhaíocht le feiceáil san fhíor thíos. Tá doiciméadú níos mionsonraithe scríofa ar idirghníomhaíochtaí socraithe próisis anseo , dóibh siúd a labhraíonn Rúisis - anseo. Déanann an doiciméadú cur síos go foirfe ar conas NIFI a dhíphacáil agus a rith, chomh maith le conas próisis a chruthú, ar a dtugtar cearnóga freisin
Rugadh an smaoineamh alt a scríobh tar éis cuardach fada agus an fhaisnéis a fuarthas a struchtúrú ina rud comhfhiosach, chomh maith leis an dúil an saol a dhéanamh beagán níos éasca d'fhorbróirí na todhchaí.

Sampla

Breathnaítear ar shampla den chaoi a n-idirghníomhaíonn cearnóga lena chéile. Tá an scéim ghinearálta simplí go leor: Faighimid iarratas HTTP (Go teoiriciúil, le comhad i gcorp an iarratais. Chun cumais NIFI a léiriú, sa sampla seo cuireann an t-iarratas tús leis an bpróiseas chun comhad a fháil ón stóráil comhad áitiúil ), ansin seolaimid freagra ar ais go bhfuil an t-iarratas faighte, ag an am céanna leis an bpróiseas chun comhad a fháil ó FH agus ansin an próiseas chun é a aistriú trí FTP go FH. Is fiú a shoiléiriú go n-idirghníomhaíonn próisis lena chéile tríd an flowFile mar a thugtar air. Is é seo an bonn-aonán in NIFI a stórálann tréithe agus ábhar. Is éard atá i gceist le hábhar na sonraí atá léirithe ag an gcomhad sruth. Is é sin, go garbh, má fhaigheann tú comhad ó chearnóg amháin agus é a aistriú go ceann eile, is é an t-ábhar a bheidh i do chomhad.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Mar a fheiceann tú, léiríonn an pictiúr seo an próiseas ginearálta. HandleHttpRequest - glacann sé le hiarratais, gineann ReplaceText - comhlacht freagartha, HandleHttpResponse - seolann freagra. FetchFile - faigheann sé comhad ó stóráil comhad, aistríonn sé go dtí an PutSftp cearnach - cuireann sé an comhad seo ar FTP, ag an seoladh sonraithe. Anois níos mó faoin bpróiseas seo.

Sa chás seo, is é an iarraidh tús gach rud. Breathnaímid ar a pharaiméadair chumraíochta.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Tá gach rud anseo fánach go leor cé is moite de StandardHttpContextMap - is cineál seirbhíse é seo a ligeann duit iarratais a sheoladh agus a fháil. Níos mine agus fiú le samplaí, is féidir leat a fheiceáil - anseo

Ar aghaidh, déanaimis féachaint ar pharaiméadair chumraíochta ReplaceText den chearnóg. Is fiú aird a thabhairt ar ReplacementValue - seo an méid a chuirfear ar ais chuig an úsáideoir i bhfoirm freagra. I socruithe is féidir leat an leibhéal logáil a choigeartú, is féidir leat na logaí a fheiceáil {nuair a dhíphacáil tú nifi}/nifi-1.9.2/logs, tá paraiméadair teip/rath ann freisin - bunaithe ar na paraiméadair seo is féidir leat an próiseas a rialú ina iomláine . Is é sin, i gcás próiseála téacs rathúil, glaofar an próiseas chun freagra a sheoladh chuig an úsáideoir, agus i gcás eile déanfaimid an próiseas nár éirigh leo a logáil go simplí.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Níl aon rud suimiúil go háirithe sna hairíonna HandleHttpResponse ach amháin an stádas nuair a chruthaítear freagra go rathúil.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Táimid tar éis an t-iarratas agus an freagra a réiteach - bogfaimid ar aghaidh chuig an comhad a fháil agus é a chur ar an bhfreastalaí FTP. FetchFile - faigheann sé comhad ag an gcosán a shonraítear sna socruithe agus cuireann sé chuig an gcéad phróiseas eile é.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Agus ansin cuireann cearnóg PutSftp - an comhad sa stóráil comhad. Is féidir linn na paraiméadair chumraíochta a fheiceáil thíos.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Is fiú aird a thabhairt ar an bhfíric gur próiseas ar leith é gach cearnóg a chaithfear a sheoladh. D'fhéachamar ar an sampla is simplí nach gá aon shaincheapadh casta. Ansin, féachfaimid ar an bpróiseas beagán níos casta, áit a scríobhfaimid beagán ar na grooves.

Sampla níos casta

Bhí an tseirbhís aistrithe sonraí chuig an tomhaltóir beagán níos casta mar gheall ar an bpróiseas chun an teachtaireacht GALLÚNACH a mhodhnú. Léirítear an próiseas ginearálta san fhigiúr thíos.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Anseo níl an smaoineamh an-chasta freisin: fuaireamar iarratas ón tomhaltóir go raibh sonraí de dhíth air, sheolamar freagra go raibh teachtaireacht faighte aige, thosaigh sé ar an bpróiseas chun an comhad freagartha a fháil, ansin chuir sé in eagar é le loighic áirithe, agus ansin d'aistrigh sé an comhad chuig an tomhaltóir i bhfoirm teachtaireachta GALLÚNACH chuig an bhfreastalaí.

Is dóigh liom nach gá cur síos a dhéanamh arís ar na cearnóga sin a chonaic muid thuas - bogfaimid díreach chuig na cinn nua. Más gá duit aon chomhad a chur in eagar agus mura bhfuil gnáthchearnóga den chineál ReplaceText oiriúnach, beidh ort do script féin a scríobh. Is féidir é seo a dhéanamh ag baint úsáide as an gcearnóg ExecuteGroogyScript. Cuirtear a socruithe i láthair thíos.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Tá dhá rogha ann chun an script a lódáil isteach sa chearnóg seo. Is é an chéad cheann ná comhad a íoslódáil le script. Is é an dara ceann ná script a chur isteach i scriptBody. Chomh fada agus is eol dom, tacaíonn an chearnóg executeScript le roinnt teangacha - tá ceann acu groovy. Cuirfidh mé díomá ar fhorbróirí java - ní féidir leat scripteanna a scríobh i java i gcearnóga den sórt sin. Dóibh siúd ar mian leo i ndáiríre, ní mór duit do chearnóg saincheaptha féin a chruthú agus é a chur leis an gcóras NIFI. Tá rince sách fada le tambóirín ag gabháil leis an oibríocht iomlán seo, rud nach ndéileálfaimid leis san Airteagal seo. Roghnaigh mé an teanga groovy. Anseo thíos tá script tástála a thugann an t-aitheantas cothrom le dáta go hincriminteach i dteachtaireacht GALLÚNACH. Tá sé tábhachtach a thabhairt faoi deara. Glacann tú an comhad ó flowFile agus é a nuashonrú, ná déan dearmad gur gá duit é a chur ar ais ansin, nuashonraithe. Is fiú a thabhairt faoi deara freisin nach bhfuil gach leabharlann san áireamh. D’fhéadfadh sé tarlú go mbeidh ort ceann de na libs a allmhairiú fós. Buntáiste eile is ea go bhfuil sé deacair an script sa chearnóg seo a dhífhabhtú. Tá bealach ann chun ceangal leis an NIFI JVM agus tús a chur leis an bpróiseas dífhabhtaithe. Go pearsanta, sheol mé feidhmchlár áitiúil agus insamhladh go bhfuair mé comhad ón seisiún. Rinne mé debugging go háitiúil freisin. Is furasta go leor do Google na hearráidí a thagann chun solais agus script á luchtú agus scríobhann NIFI féin iad chuig an loga.

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)
}

I ndáiríre, is é seo an áit a chríochnaíonn saincheaptha na cearnóige. Ansin, aistrítear an comhad nuashonraithe chuig an gcearnóg, atá freagrach as an gcomhad a sheoladh chuig an bhfreastalaí. Seo thíos na socruithe don chearnóg seo.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Déanaimid cur síos ar an modh trína dtarchuirfear teachtaireacht GALLÚNACH. Scríobhaimid cén áit. Ansin caithfidh tú a chur in iúl gur GALLÚNACH é seo.

Apache NIFI - Forbhreathnú gairid ar Ghnéithe i gCleachtas

Cuir roinnt airíonna leis mar óstach agus gníomh (soapAction). Sábhálann muid agus seiceáil. Is féidir leat tuilleadh sonraí a fheiceáil ar conas iarratais GALLÚNACH a sheoladh anseo

D’fhéachamar ar roinnt roghanna chun próisis NIFI a úsáid. Conas a idirghníomhaíonn siad agus cad é an buntáiste fíor a bhaineann leo? Is samplaí tástála iad na samplaí a breathnaíodh agus tá siad beagán difriúil ón méid a tharlaíonn i ndáiríre sa chomhrac. Tá súil agam go mbeidh an t-alt seo beagán úsáideach d'fhorbróirí. Go raibh maith agat as do aird. Má tá aon cheist agat, scríobh. Déanfaidh mé iarracht freagra a thabhairt.

Foinse: will.com

Add a comment