Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Selelekela

Ho ile ha etsahala hore moo ke sebetsang teng hona joale ke tlameha ho tloaelana le theknoloji ena. Ke tla qala ka semelo se senyenyane. Sebokeng se latelang, sehlopha sa rona se ile sa bolelloa hore re hloka ho theha kopano le tsamaiso e tsebahalang. Ka ho kopanya ho ne ho boleloa hore tsamaiso ena e tsebahalang e tla re romella likōpo ka HTTP ho ea qetellong e itseng, 'me rona, ka mokhoa o makatsang, re ne re tla khutlisetsa likarabo ka mokhoa oa molaetsa oa SEAP. Ntho e 'ngoe le e' ngoe e bonahala e le bonolo ebile e le nyenyane. Ho tloha mona ho latela hore o hloka ...

Sepheo

Etsa litšebeletso tse 3. Ea pele ea bona ke Ts'ebeletso ea ntlafatso ea Database. Ts'ebeletso ena, ha data e ncha e fihla ho tsoa ho sistimi ea mokha oa boraro, e nchafatsa data ho database mme e hlahisa faele ka sebopeho sa CSV ho e fetisetsa tsamaisong e latelang. Qetello ea tšebeletso ea bobeli e bitsoa - Tšebeletso ea Lipalangoang ea FTP, e amohelang faele e fetisitsoeng, e tiisa, 'me e e beha polokelong ea lifaele ka FTP. Tšebeletso ea boraro, tšebeletso ea phetisetso ea data ea bareki, e sebetsa ka mokhoa o ts'oanang le tse peli tsa pele. E amohela kopo ho tsoa ho sistimi ea kantle ea mokha oa boraro ho amohela faele e boletsoeng ka holimo, e nka faele e itokiselitseng karabo, e e fetole (e nchafatsa id, tlhaloso, masimo a linkToFile) ebe e romella karabo ka mokhoa oa molaetsa oa SEAP. Ke hore, setšoantšo se akaretsang ke se latelang: lits'ebeletso tse peli tsa pele li qala mosebetsi oa tsona feela ha data ea ntlafatso e fihlile. Tšebeletso ea boraro e sebetsa kamehla hobane ho na le bareki ba bangata ba tlhahisoleseding, hoo e ka bang likopo tsa 1000 tsa data ka motsotso. Litšebeletso li fumaneha khafetsa 'me maemo a tsona a fumaneha libakeng tse fapaneng, joalo ka tlhahlobo, demo, tlhahiso ea pele le tlhahiso. Ka tlase ke setšoantšo sa kamoo litšebeletso tsena li sebetsang kateng. E-re ke hlakise hang-hang hore lintlha tse ling li nolofalitsoe ho qoba ho rarahana ho sa hlokahaleng.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Theknoloji e Tebileng

Ha re rera tharollo ea bothata, re ile ra qala ka ho etsa qeto ea ho etsa likopo Java re sebelisa moralo oa Spring, Nginx balancer, Postgres database le lintho tse ling tsa tekheniki eseng joalo ka tekheniki. Kaha nako ea ho hlahisa tharollo ea tekheniki e re lumelletse ho nahana ka mekhoa e meng ea ho rarolla bothata bona, mahlo a rona a ile a oela ho theknoloji ea Apache NIFI, e leng feshene ka har'a li-circles tse itseng. Ke tla re hang-hang theknoloji ena e re lumelletse ho hlokomela lits'ebeletso tsena tse 3. Sengoliloeng sena se tla hlalosa nts'etsopele ea ts'ebeletso ea lipalangoang tsa faele le ts'ebeletso ea phetisetso ea data ho moreki, empa haeba sengoloa se le molemo, ke tla ngola ka ts'ebeletso ea ho ntlafatsa data ho database.

Ke eng?

NIFI ke meralo e ajoang bakeng sa ho kenya le ho sebetsa ka potlako ka ho ts'oana ha data, palo e kholo ea li-plugins bakeng sa mehloli le liphetoho, phetolelo ea meralo le tse ling tse ngata. Bonase e ntle ke hore e bonolo haholo ho e sebelisa. Mekhoa e sa reng letho e kang getFile, sendHttpRequest le tse ling li ka emeloa e le lisekoere. Sekwere ka seng se emela ts'ebetso, tšebelisano ea eona e ka bonoang setšoantšong se ka tlase. Litokomane tse qaqileng haholoanyane mabapi le litšebelisano tsa ho seta ts'ebetso li ngotsoe mona , bakeng sa ba buang Serussia - mona. Litokomane li hlalosa hantle mokhoa oa ho notlolla le ho tsamaisa NIFI, hammoho le mokhoa oa ho theha lits'ebetso, tse tsejoang hape e le lisekoere.
Mohopolo oa ho ngola sengoloa o hlahile kamora ho batlisisa nako e telele le ho hlophisa tlhaiso-leseling e fumanoeng ho ntho e itseng, hammoho le takatso ea ho nolofatsa bophelo ho bahlahisi ba kamoso.

Mohlala:

Ho nahanoa mohlala oa hore na li-square li sebelisana joang. Sekema se akaretsang se bonolo haholo: Re fumana kopo ea HTTP (Ka khopolo, e nang le faele 'meleng oa kopo. Ho bonts'a bokhoni ba NIFI, mohlala ona kopo e qala ts'ebetso ea ho amohela faele ho tsoa polokelong ea faele ea lehae. ), ebe re khutlisetsa karabo eo kopo e e amohetseng, ka tsela e ts'oanang le mokhoa oa ho fumana faele ho tloha FH ebe joale mokhoa oa ho e tsamaisa ka FTP ho FH. Ho bohlokoa ho hlakisa hore lits'ebetso li sebelisana ka se bitsoang flowFile. Ena ke setsi sa mantlha ho NIFI se bolokang litšobotsi le litaba. Content ke ya data e emeloang ke molapo faele. Ke hore, ha e le hantle, haeba u fumana faele ho tloha sekwereng se seng ebe u e fetisetsa ho e 'ngoe, litaba e tla ba faele ea hau.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Joalokaha u ka bona, setšoantšo sena se bontša mokhoa o akaretsang. HandleHttpRequest - e amohela likopo, ReplaceText - e hlahisa 'mele oa karabo, HandleHttpResponse - e romela karabo. FetchFile - e amohela faele ho tsoa polokelong ea faele, e e fetisetsa sebakeng sa lisekoere PutSftp - e beha faele ena ho FTP, atereseng e boletsoeng. Hona joale ho eketsehileng ka mokhoa ona.

Tabeng ena, kopo ke qalo ea tsohle. Ha re shebeng li-parameter tsa eona tsa tlhophiso.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Ntho e 'ngoe le e 'ngoe mona e nyenyane haholo ntle le StandardHttpContextMap - ona ke mofuta oa tšebeletso o u lumellang ho romela le ho amohela likopo. Ka botlalo, esita le ka mehlala, u ka bona - mona

Ka mor'a moo, ha re shebeng "ReplaceText configuration parameters" ea lisekoere. Ho bohlokoa ho ela hloko ReplacementValue - sena ke se tla khutlisetsoa ho mosebelisi ka mokhoa oa karabo. Litlhophisong u ka fetola boemo ba ho rema lifate, u ka bona lits'oants'o {moo u notlollotseng nifi}/nifi-1.9.2/logs, ho boetse ho na le liparamente tsa ho hloleha / katleho - ho ipapisitsoe le liparamente tsena o ka laola ts'ebetso ka kakaretso. . Ke hore, tabeng ea katleho ea ho sebetsana le mongolo, mokhoa oa ho romela karabo ho mosebedisi o tla bitsoa, ​​'me tabeng e' ngoe re tla ngola feela mokhoa o sa atleheng.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Ha ho letho le thahasellisang ka ho khetheha thepa ea HandleHttpResponse ntle le boemo ha karabo e etsoa ka katleho.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Re hlophisitse kopo le karabo - ha re tsoeleng pele ho amohela faele le ho e beha ho seva sa FTP. FetchFile - e amohela faele ka tsela e boletsoeng litlhophisong ebe e e fetisetsa ts'ebetsong e latelang.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Ebe sebaka sa PutSftp - se beha faele sebakeng sa polokelo ea lifaele. Re ka bona li-parameter tsa tlhophiso ka tlase.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Ho bohlokoa ho ela hloko taba ea hore sekwere se seng le se seng ke ts'ebetso e ikhethileng e tlamehang ho qalisoa. Re shebile mohlala o bonolo ka ho fetisisa o sa hlokeng mokhoa leha e le ofe o rarahaneng. Ka mor'a moo, re tla sheba ts'ebetso e thata haholoanyane, moo re tla ngola hanyenyane ka li-grooves.

Mohlala o rarahaneng haholoanyane

Ts'ebeletso ea phetisetso ea data ho moreki e ile ea ba thata haholoanyane ka lebaka la ts'ebetso ea ho fetola molaetsa oa SOAP. Mokhoa o akaretsang o bontšoa setšoantšong se ka tlase.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Mona mohopolo le ona ha o thata haholo: re fumane kopo ho moreki hore o hloka data, a romela karabo eo a e fumaneng molaetsa, a qala ts'ebetso ea ho amohela faele ea karabelo, ebe a e hlophisa ka logic e itseng, ebe joale. e fetiselitse faele ho bareki ka mokhoa oa molaetsa oa SEAP ho seva.

Ke nahana hore ha ho na lebaka la ho hlalosa lisekoere hape tseo re li boneng ka holimo - ha re feteleng ka kotloloho ho tse ncha. Haeba o hloka ho edita faele efe kapa efe mme mefuta e tlwaelehileng ya ReplaceText ha e a lokela, o tla tlameha ho ngola mongolo wa hao. Sena se ka etsoa ho sebelisa sekwere sa ExecuteGroogyScript. Litlhophiso tsa eona li hlahisoa ka tlase.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Ho na le likhetho tse peli tsa ho kenya sengoloa sebakeng sena. Ea pele ke ka ho khoasolla faele ka mongolo. Ea bobeli ke ka ho kenya mongolo ho scriptBody. Ho ea kamoo ke tsebang, sekwere sa executeScript se tšehetsa lipuo tse 'maloa - e' ngoe ea tsona ke groovy. Ke tla soabisa baetsi ba java - u ke ke ua ngola mangolo ho java libakeng tse joalo. Bakeng sa ba hlileng ba batlang, o hloka ho iketsetsa sebaka sa hau sa tloaelo mme o se kenye tsamaisong ea NIFI. Ts'ebetso ena eohle e tsamaisana le motjeko o molelele o nang le moropa, oo re ke keng ra sebetsana le oona sehloohong sena. Ke khethile puo ea groovy. Ka tlase ho na le lengolo la liteko le ntlafatsang id ka molaetsa oa SOAP. Ke habohlokoa ho hlokomela. U nka faele ho flowFile ebe u e ntlafatsa, u se ke oa lebala hore u hloka ho e khutlisetsa moo, e ntlafalitsoe. Hape ke habohlokoa ho hlokomela hore ha se lilaebrari tsohle tse kenyelelitsoeng. Ho ka etsahala hore o ntse o tlameha ho kenya e 'ngoe ea libs. Taba e 'ngoe e mpe ke hore script sekwereng sena ho thata ho e lokisa. Ho na le mokhoa oa ho hokela ho NIFI JVM le ho qala ts'ebetso ea ho lokisa liphoso. Ka bonna, ke ile ka qala kopo ea lehae mme ka etsisa ho amohela faele ho tsoa kopanong. Ke ile ka boela ka etsa debugging sebakeng sa heno. Liphoso tse hlahang ha u kenya script li bonolo haholo ho Google 'me li ngotsoe ke NIFI ka boeona ho 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)
}

Haele hantle, mona ke moo tlhophiso ea sekwere e fellang teng. Ka mor'a moo, faele e nchafalitsoeng e fetisetsoa lebaleng, le ikarabellang bakeng sa ho romela faele ho seva. Ka tlase ke litlhophiso tsa sekwere sena.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Re hlalosa mokhoa oo molaetsa oa SEAP o tla fetisoa ka oona. Re ngola kae. Ka mor'a moo, u lokela ho bontša hore sena ke SESEPA.

Apache NIFI - Kakaretso e Khutšoanyane ea Likarolo tsa Ts'ebetso

Kenya thepa e 'maloa joalo ka moamoheli le ketso (soapAction). Re boloka le ho hlahloba. U ka bona lintlha tse ling mabapi le mokhoa oa ho romella likopo tsa SEAP mona

Re shebile likhetho tse 'maloa tsa ho sebelisa lits'ebetso tsa NIFI. Ba sebelisana joang 'me molemo oa bona oa sebele ke ofe? Mehlala e nahanoang ke ea liteko 'me e fapane hanyane le se hlileng se etsahalang ntoeng. Ke tšepa hore sehlooho sena se tla ba molemo hanyenyane ho bahlahisi. Kea leboha ha u mametse. Haeba u na le lipotso, ngola. Ke tla leka ho araba.

Source: www.habr.com

Eketsa ka tlhaloso