{"id":37567,"date":"2019-10-31T22:18:22","date_gmt":"2019-10-31T19:18:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\/"},"modified":"2019-10-31T22:18:22","modified_gmt":"2019-10-31T19:18:22","slug":"apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","title":{"rendered":"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Einf\u00fchrung<\/h3>\n<p><\/p>\n<p>Es stellte sich heraus, dass ich an meinem aktuellen Arbeitsplatz mit dieser Technologie in Kontakt kam. Lassen Sie mich mit einer kurzen Vorgeschichte beginnen. Bei einem unserer Meetings wurde unserem Team mitgeteilt, dass wir eine Integration mit <em>einem bekannten System<\/em>. Bei der Integration war vorgesehen, dass dieses bekannte System HTTP-Anfragen an einen bestimmten Endpunkt an uns sendet, und wir, seltsamerweise, senden die Antworten in Form von SOAP-Nachrichten zur\u00fcck. Das klingt zun\u00e4chst einfach und trivial. Daraus folgt, dass wir\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3>Ziel<\/h3>\n<p><\/p>\n<p>Erstellen Sie 3 Dienste. Der erste davon ist der Datenbankaktualisierungsdienst. Dieser Dienst aktualisiert die Daten in der Datenbank, sobald neue Daten von einem externen System eintreffen, und generiert eine Datei im CSV-Format zur \u00dcbertragung an das n\u00e4chste System. Er ruft den Endpunkt des zweiten Dienstes \u2013 des Transportdienstes \u00fcber FTP \u2013 auf, der die \u00fcbertragene Datei erh\u00e4lt, sie validiert und in den Dateispeicher \u00fcber FTP ablegt. Der dritte Dienst \u2013 der Daten\u00fcbertragungsdienst an den Endkunden \u2013 arbeitet asynchron zu den ersten beiden. Er akzeptiert eine Anfrage von einem externen System f\u00fcr die oben genannte Datei, holt die fertige Antwortdatei, modifiziert sie (aktualisiert die Felder id, description, linkToFile) und sendet die Antwort als SOAP-Nachricht. Insgesamt sieht die Situation folgenderma\u00dfen aus: Die ersten beiden Dienste beginnen ihre Arbeit nur, wenn Daten zur Aktualisierung eintreffen. Der dritte Dienst arbeitet st\u00e4ndig, da es viele Informationsanfragen gibt, etwa 1000 Anfragen pro Minute. Die Dienste sind durchgehend verf\u00fcgbar, und ihre Instanzen befinden sich in verschiedenen Umgebungen wie Test-, Demo-, Vorproduktions- und Produktionsumgebungen. Unten ist das Schema der Funktionsweise dieser Dienste dargestellt. Ich m\u00f6chte gleich erkl\u00e4ren, dass einige Details vereinfacht wurden, um \u00fcberfl\u00fcssige Komplexit\u00e4t zu vermeiden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/1edca5d5e917d8ac55ac96e892e816dd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"tehnicheskoe-uglublenie\">Technische Vertiefung<\/h3>\n<p><\/p>\n<p>Bei der Planung der L\u00f6sung haben wir zun\u00e4chst beschlossen, eine Anwendung in Java unter Verwendung des Spring Frameworks zu entwickeln, unterst\u00fctzt von einem Nginx-Load-Balancer und einer Postgres-Datenbank, sowie weiteren technischen und weniger technischen Elementen. Da der Zeitrahmen f\u00fcr die technische Entwicklung die Untersuchung alternativer Ans\u00e4tze erlaubte, fielen unsere Blicke auf die in bestimmten Kreisen modische Technologie Apache NIFI. Um es gleich vorweg zu sagen: Diese Technologie hat es uns erm\u00f6glicht, diese drei Dienste zu erkennen. In diesem Artikel wird die Entwicklung eines Datei\u00fcbertragungsdienstes und eines Daten\u00fcbertragungsdienstes an den Endnutzer beschrieben. Sollte das Interesse bestehen, werde ich auch \u00fcber den Dienst zur Aktualisierung von Daten in der Datenbank schreiben.<\/p>\n<p><\/p>\n<h3 id=\"chto-eto-takoe\">Was ist das?<\/h3>\n<p><\/p>\n<p>NIFI ist eine verteilte Architektur, die eine schnelle parallele Datenaufnahme und -verarbeitung erm\u00f6glicht. Sie bietet eine Vielzahl von Plugins f\u00fcr Datenquellen und Transformationen, Konfigurationsversionierung und vieles mehr. Ein zus\u00e4tzlicher Vorteil ist die Benutzerfreundlichkeit. Triviale Prozesse wie getFile, sendHttpRequest und andere k\u00f6nnen als K\u00e4stchen dargestellt werden. Jedes K\u00e4stchen repr\u00e4sentiert einen bestimmten Prozess, dessen Interaktionen im folgenden Bild zu sehen sind. Eine detaillierte Dokumentation \u00fcber die Interaktion und Konfiguration von Prozessen ist geschrieben. <noindex><a rel=\"nofollow\" href=\"https:\/\/nifi.apache.org\/docs.html\">hier<\/a><\/noindex> , f\u00fcr diejenigen, die auf Russisch sind \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.arenadata.io\/ads\/UserNIFI\/index.html\">hier<\/a><\/noindex>. In der Dokumentation wird hervorragend erkl\u00e4rt, wie man NIFI entpackt und startet sowie wie man Prozesse erstellt, die ebenfalls als K\u00e4stchen dargestellt werden.<br \/>\nDie Idee, diesen Artikel zu schreiben, entstand nach l\u00e4ngerer Suche und Strukturierung der gesammelten Informationen in etwas Verst\u00e4ndliches und dem Wunsch, zuk\u00fcnftigen Entwicklern das Leben etwas zu erleichtern.<\/p>\n<p><\/p>\n<h3 id=\"primer\">Beispiel<\/h3>\n<p><\/p>\n<p>Hier wird ein Beispiel vorgestellt, wie Quadrate miteinander interagieren. Das allgemeine Schema ist ziemlich einfach: Wir erhalten eine HTTP-Anfrage (theoretisch mit einer Datei im Anfragek\u00f6rper. Zur Demonstration der M\u00f6glichkeiten von NIFI startet in diesem Beispiel die Anfrage den Prozess, eine Datei aus dem lokalen FH zu erhalten), daraufhin wird eine Antwort gesendet, dass die Anfrage eingegangen ist, w\u00e4hrend parallel der Prozess zum Abrufen der Datei aus dem FH gestartet wird und anschlie\u00dfend der Prozess f\u00fcr die \u00dcbertragung \u00fcber FTP ins FH. Es sei erw\u00e4hnt, dass die Prozesse \u00fcber das sogenannte FlowFile miteinander kommunizieren. Dies ist eine grundlegende Entit\u00e4t in NIFI, die Attribute und Inhalt speichert. Der Inhalt sind die Daten, die durch die Stream-Datei dargestellt werden. Grob gesagt, wenn Sie eine Datei aus einem Quadrat erhalten und sie an ein anderes weitergeben, ist der Inhalt Ihre Datei.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/2649a29dcc9155ae7734db44fc6d3f9a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wie Sie an diesem Bild erkennen k\u00f6nnen, zeigt es den allgemeinen Prozess. HandleHttpRequest \u2013 empf\u00e4ngt Anfragen, ReplaceText \u2013 generiert den Antwortinhalt, HandleHttpResponse \u2013 gibt die Antwort zur\u00fcck. FetchFile \u2013 erh\u00e4lt eine Datei aus dem Dateispeicher und \u00fcbertr\u00e4gt sie an das Quadrat PutSftp \u2013 legt diese Datei an dem angegebenen FTP-Speicherort ab. Jetzt erfahren wir mehr \u00fcber diesen Prozess. <\/p>\n<p><\/p>\n<p>In diesem Fall ist der Request der Anfang f\u00fcr alles. Lassen Sie uns seine Konfigurationseinstellungen betrachten. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/cf93a09a10ed9aebaae2c10b93619658.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nHier ist alles ziemlich einfach, mit der Ausnahme von StandartHttpContextMap \u2013 das ist ein Service, der es erm\u00f6glicht, Anfragen zu senden und zu empfangen. Weitere Informationen und sogar Beispiele finden Sie hier \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/ddewaele.github.io\/http-communication-with-apache-nifi\/\">hier<\/a><\/noindex><\/p>\n<p>Als N\u00e4chstes sehen wir uns die Konfigurationseinstellungen von ReplaceText an. Hierbei sollten Sie auf ReplacementValue achten \u2013 das ist das, was dem Benutzer als Antwort zur\u00fcckgegeben wird. In den Einstellungen k\u00f6nnen Sie das Logging-Level anpassen; die Protokolle finden Sie unter {\u043a\u0443\u0434\u0430 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043b\u0438 nifi}\/nifi-1.9.2\/logs. Dort gibt es auch die Parameter failure\/success \u2013 basierend auf diesen Parametern k\u00f6nnen Sie den gesamten Prozess steuern. Das hei\u00dft, im Falle einer erfolgreichen Textverarbeitung wird der Prozess des Sendens einer Antwort an den Benutzer ausgel\u00f6st, w\u00e4hrend wir im anderen Fall einfach den fehlgeschlagenen Prozess protokollieren. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/97341fd7f6ea34a219a16c2c732a8062.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In den Eigenschaften von HandleHttpResponse gibt es au\u00dfer dem Status bei erfolgreicher Erstellung der Antwort nicht viel Interessantes. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/6082c84f81274927fdfbd20378cc252c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nun, da wir den Request und die Antwort bearbeitet haben, gehen wir weiter zum Abrufen der Datei und deren Platzierung auf dem FTP-Server. FetchFile \u2013 holt eine Datei aus dem in den Einstellungen angegebenen Pfad und \u00fcbergibt sie an den n\u00e4chsten Prozess. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/d1368879e13a223404a53ab623ae4079.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Der PutSftp-Block l\u00e4dt die Datei in den Speicher. Die Konfigurationsparameter sind unten aufgef\u00fchrt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/c22648f39bb0ad4e7209911e614d3edf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es ist wichtig zu beachten, dass jeder Block ein separater Prozess ist, der gestartet werden muss. Wir haben das einfachste Beispiel betrachtet, das keine komplizierte Anpassung erfordert. Nun schauen wir uns einen etwas komplexeren Prozess an, bei dem wir ein wenig mit Groovy programmieren. <\/p>\n<p><\/p>\n<h3 id=\"bolee-slozhnyy-primer\">Ein komplexeres Beispiel<\/h3>\n<p><\/p>\n<p>Der Daten\u00fcbertragungsdienst an den Verbraucher ist etwas komplizierter, da der Prozess der Modifikation von SOAP-Nachrichten hinzugef\u00fcgt wurde. Der gesamte Prozess ist im folgenden Diagramm dargestellt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/c48aa08c030cc252f9e53ce877329701.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Idee ist auch hier nicht besonders kompliziert: Wir haben die Anfrage vom Verbraucher erhalten, dass er Daten ben\u00f6tigt, haben eine Antwort gesendet, dass wir die Nachricht erhalten haben, den Prozess zur Datenbeschaffung gestartet, diesen mit einer bestimmten Logik bearbeitet und dann die Datei in Form einer SOAP-Nachricht an den Server \u00fcbergeben. <\/p>\n<p><\/p>\n<p>Ich denke, es ist nicht n\u00f6tig, die bereits oben erw\u00e4hnten Bl\u00f6cke erneut zu beschreiben \u2013 lassen Sie uns sofort zu den neuen \u00fcbergehen. Wenn Sie eine Datei bearbeiten m\u00fcssen und herk\u00f6mmliche Bl\u00f6cke wie ReplaceText nicht geeignet sind, m\u00fcssen Sie Ihr eigenes Skript schreiben. Dies kann mithilfe des Blocks ExecuteGroogyScript erfolgen. Die Einstellungen dazu sind unten aufgef\u00fchrt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/42d6691cf608b1620774426eae7b7027.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es gibt zwei M\u00f6glichkeiten, ein Skript in dieses Quadrat zu laden. Die erste besteht darin, die Datei mit dem Skript hochzuladen. Die zweite M\u00f6glichkeit ist, das Skript in den scriptBody einzuf\u00fcgen. Soweit ich wei\u00df, unterst\u00fctzt das Quadrat executeScript mehrere Programmiersprachen \u2013 eine davon ist Groovy. Leider m\u00fcssen Java-Entwickler entt\u00e4uscht werden: In einem solchen Quadrat kann man keine Skripte in Java schreiben. F\u00fcr diejenigen, die es unbedingt m\u00f6chten, muss ein benutzerdefiniertes Quadrat erstellt und in das NIFI-System integriert werden. Dieser gesamte Vorgang erfordert leider einiges an Aufwand, mit dem wir uns im Rahmen dieses Artikels jedoch nicht befassen werden. Ich habe mich f\u00fcr die Sprache Groovy entschieden. Im Folgenden finden Sie ein Testskript, das einfach inkrementell die ID in der SOAP-Nachricht aktualisiert. Wichtig zu beachten: Sie nehmen die Datei aus flowFile, aktualisieren sie und sollten nicht vergessen, die aktualisierte Version wieder zur\u00fcckzulegen. Ebenfalls zu beachten ist, dass nicht alle Bibliotheken eingebunden sind. Es kann also sein, dass Sie tats\u00e4chlich eine der Bibliotheken importieren m\u00fcssen. Ein weiterer Nachteil ist, dass das Debugging des Skripts in diesem Quadrat ziemlich schwierig ist. Es besteht die M\u00f6glichkeit, sich mit der JVM von NIFI zu verbinden und den Debugging-Prozess zu starten. Ich habe pers\u00f6nlich eine lokale Anwendung gestartet und den Empfang der Datei aus der Sitzung simuliert. Das Debugging wurde ebenfalls lokal durchgef\u00fchrt. Die Fehler, die beim Laden des Skripts auftreten, lassen sich relativ leicht googeln und werden von NIFI im Log verzeichnet.<\/p>\n<p><\/p>\n<pre><code class=\"java\">import org.apache.commons.io.IOUtils\nimport groovy.xml.XmlUtil\nimport java.nio.charset.*\nimport groovy.xml.StreamingMarkupBuilder\n\ndef flowFile = session.get()\nif (!flowFile) return\ntry {\n    flowFile = session.write(flowFile, { inputStream, outputStream -&gt;\n        String result = IOUtils.toString(inputStream, \"UTF-8\");\n        def recordIn = new XmlSlurper().parseText(result)\n        def element = recordIn.depthFirst().find {\n            it.name() == 'id'\n        }\n\n        def newId = Integer.parseInt(element.toString()) + 1\n        def recordOut = new XmlSlurper().parseText(result)\n        recordOut.Body.ClientMessage.RequestMessage.RequestContent.content.MessagePrimaryContent.ResponseBody.id = newId\n\n        def res = new StreamingMarkupBuilder().bind { mkp.yield recordOut }.toString()\n        outputStream.write(res.getBytes(StandardCharsets.UTF_8))\n} as StreamCallback)\n     session.transfer(flowFile, REL_SUCCESS)\n}\ncatch(Exception e) {\n    log.error(\"Fehler bei der Verarbeitung von validate.groovy\", e)\n    session.transfer(flowFile, REL_FAILURE)\n}<\/code><\/pre>\n<p><\/p>\n<p>An dieser Stelle endet die Anpassung des Blocks. Anschlie\u00dfend wird die aktualisierte Datei an den Block \u00fcbergeben, der f\u00fcr den Versand der Datei an den Server zust\u00e4ndig ist. Nachfolgend sind die Einstellungen dieses Blocks aufgef\u00fchrt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/706c53d8deaf3d1ef47bd337e639197a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir beschreiben die Methode, mit der die SOAP-Nachricht \u00fcbermittelt wird. Wir schreiben, wohin. Anschlie\u00dfend muss angegeben werden, dass es sich tats\u00e4chlich um SOAP handelt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2013 Ein kurzer \u00dcberblick \u00fcber die praktischen M\u00f6glichkeiten\" src=\"\/wp-content\/uploads\/2019\/08\/7206bc2a1c66a0204c0589daf35fd328.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir f\u00fcgen mehrere Eigenschaften wie Host und Aktion (soapAction) hinzu. Wir speichern und pr\u00fcfen. Genauere Informationen zum Versenden von SOAP-Anfragen finden Sie hier. <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/49457764\/nifi-how-to-use-invokehttp-processor-with-soap\/49565048\">hier<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Wir haben mehrere Anwendungsf\u00e4lle f\u00fcr NIFI-Prozesse untersucht. Wie sie interagieren und welchen echten Nutzen sie bringen. Die betrachteten Beispiele sind Testf\u00e4lle und weichen ein wenig von den realen Eins\u00e4tzen ab. Ich hoffe, dieser Artikel wird f\u00fcr Entwickler etwas n\u00fctzlich sein. Vielen Dank f\u00fcr Ihre Aufmerksamkeit. Bei Fragen k\u00f6nnen Sie mir gerne schreiben. Ich werde versuchen, zu antworten.<\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465299\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043c\u0438\u0442\u0438\u043d\u0433\u0435, \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041f\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u0430 \u043c\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0441\u043b\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28196,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-37567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043c\u0438\u0442\u0438\u043d\u0433\u0435, \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041f\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u0430 \u043c\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0441\u043b\u0430\u0442\u044c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Apache NIFI \u2014 \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043c\u0438\u0442\u0438\u043d\u0433\u0435, \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041f\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u0430 \u043c\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0441\u043b\u0430\u0442\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:18:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Apache NIFI \u2014 Eine kurze \u00dcbersicht der M\u00f6glichkeiten in der Praxis | ProHoster","description":"Einf\u00fchrung: Es kam so, dass ich an meinem jetzigen Arbeitsplatz mit dieser Technologie vertraut gemacht wurde. Ich fange mit einer kleinen Vorgeschichte an. W\u00e4hrend eines Meetings wurde unserem Team mitgeteilt, dass wir eine Integration mit einem bekannten System erstellen m\u00fcssen. Mit Integration war gemeint, dass dieses bekannte System uns \u00fcber HTTP Anfragen an einen bestimmten Endpunkt senden wird, und wir werden, wie seltsam es auch klingt, antworten.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Apache NIFI \u2014 \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster","og:description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043c\u0438\u0442\u0438\u043d\u0433\u0435, \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041f\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u0430 \u043c\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0441\u043b\u0430\u0442\u044c","og:url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:18:22+00:00","article:modified_time":"2019-10-31T19:18:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37567","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:24:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:24:24","updated":"2026-01-23 18:24:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=37567"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28196"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=37567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=37567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=37567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}