{"id":17007,"date":"2020-10-14T09:05:58","date_gmt":"2020-10-14T08:05:58","guid":{"rendered":"https:\/\/thingsolver.com\/blog\/once-you-start-with-streaming-you-go-with-the-flow\/"},"modified":"2024-12-02T13:10:30","modified_gmt":"2024-12-02T12:10:30","slug":"jednom-kada-pocnete-sa-strimingom-sledite-tok","status":"publish","type":"post","link":"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/","title":{"rendered":"Jednom kada po\u010dnete sa strimingom, sledite tok!"},"content":{"rendered":"<p>Striming podataka postao je veoma popularan u industriji velikih podataka. Koristi se za obradu velikih koli\u010dina podataka iz razli\u010ditih izvora koji se kontinuirano generi\u0161u, u stvarnom vremenu. Kada ka\u017eemo \u201eu stvarnom vremenu\u201c, moramo da razumemo da ono mo\u017ee da varira od nekoliko milisekundi do nekoliko minuta.<\/p>\n<p>Osim \u0161to nam striming omoguc\u0301ava obradu i obogac\u0301ivanje u stvarnom vremenu, tako\u0111e zna\u010dajno pobolj\u0161ava performanse. Skup podataka iz odre\u0111enog vremenskog perioda se grupi\u0161e u paket, a prilikom obrade takvog skupa mo\u017ee doc\u0301i do problema sa memorijom i skladi\u0161tenjem.<\/p>\n<p>U obradi strima se generi\u0161u mikro-serije koje sti\u017eu u milisekundama, zatim se utvr\u0111uju odre\u0111eni uslovi na osnovu kojih mo\u017eemo preduzeti predvi\u0111ene korake. Kada mikro-serije pro\u0111u kroz tok koji se sastoji od u\u010ditavanja, transformacije i eventualnih agregacija i uslova, podaci nestaju iz memorije.<\/p>\n<p>Zaklju\u010dak je da mo\u017eemo raditi na obradi mnogo vec\u0301e koli\u010dine podataka na jeftinijem hardveru ako se izabere odgovarajuc\u0301i alat i postavi kvalitetna obrada.<\/p>\n<p><img decoding=\"async\" class=\"size-large wp-image-8869 aligncenter\" src=\"https:\/\/thingsolver.com\/wp-content\/uploads\/Streaming-vs-Batch-1024x919.png\" alt=\"batch vs stream processing\" width=\"640\" height=\"574\" title=\"\" srcset=\"https:\/\/thingsolver.com\/wp-content\/uploads\/Streaming-vs-Batch-1024x919.png 1024w, https:\/\/thingsolver.com\/wp-content\/uploads\/Streaming-vs-Batch-768x689.png 768w, https:\/\/thingsolver.com\/wp-content\/uploads\/Streaming-vs-Batch-1536x1379.png 1536w, https:\/\/thingsolver.com\/wp-content\/uploads\/Streaming-vs-Batch.png 1838w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_72 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Sadr\u017eaj<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/#Osnove_striminga\" title=\"Osnove striminga\">Osnove striminga<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/#Latencija\" title=\"Latencija\">Latencija<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/#Vreme_dogadjaja_i_vreme_obrade\" title=\"Vreme doga\u0111aja i vreme obrade\">Vreme doga\u0111aja i vreme obrade<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/#Spojevi\" title=\"Spojevi\">Spojevi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/#Stateless_i_Stateful_aplikacije\" title=\"Stateless i Stateful aplikacije\">Stateless i Stateful aplikacije<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/#Alati_za_striming\" title=\"Alati za striming\">Alati za striming<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/#Slucajevi_upotrebe_striminga\" title=\"Slu\u010dajevi upotrebe striminga\">Slu\u010dajevi upotrebe striminga<\/a><\/li><\/ul><\/nav><\/div>\n<h4><span class=\"ez-toc-section\" id=\"Osnove_striminga\"><\/span><strong>Osnove striminga<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<h5 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"Latencija\"><\/span>Latencija<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Latencija je vremenski period izme\u0111u aktivnosti na izvoru, a to mo\u017ee biti transakcija, veblog, aktivnost na baznoj stanici ili mre\u017eama, do trenutka kada se podaci pohrane u odgovarajuc\u0301em obliku.<\/p>\n<p>Nivo latencije ili ka\u0161njenje koje mo\u017eemo da prihvatimo, zavisi od tipa aplikacije na kojoj radimo i slu\u010daja kori\u0161c\u0301enja. Stoga, pri izboru alata za obradu podataka u stvarnom vremenu, prvi preduslov je da latencija dobijena izborom odre\u0111enog alata ne bude du\u017ea od ka\u0161njenja koje mo\u017eemo tolerisati. Na primer, bezbednost i otkrivanje prevare su neki od primera slu\u010dajeva koji ne toleri\u0161u veliki period latencije.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Vreme_dogadjaja_i_vreme_obrade\"><\/span>Vreme doga\u0111aja i vreme obrade<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Vreme doga\u0111aja je vreme kada se neke transakcije de\u0161avaju. Vreme obrade je vreme obra\u0111ivanja istog unutar na\u0161eg posla. U idealnom svetu bez ikakve latencije ili odlaganja, te dve vremenske oznake treba da budu iste. Na\u017ealost, to je te\u0161ko moguc\u0301e, ali mi te\u017eimo da smanjimo jaz izme\u0111u njih.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Spojevi\"><\/span>Spojevi<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Uklju\u010divanje u grupnu obradu je uglavnom trivijalna stvar, ali u strimingu to nije tako jednostavno. Ako \u017eelite da spojite striming deo svog toka sa nekom stati\u010dkom tabelom, to c\u0301e biti skoro isto kao i grupno spajanje, me\u0111utim, ako imate tendenciju da spojite dva toka, stvari postaju komplikovane. Zbog toga je zaista va\u017eno posvetiti posebnu pa\u017enju zapisima datuma i vremena kako biste izbegli pogre\u0161ne prora\u010dune i moguc\u0301u prekomernu upotrebu resursa.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Stateless_i_Stateful_aplikacije\"><\/span>Stateless i Stateful aplikacije<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Svaki blok ili prozor treba detaljno definisati. Jedan od parametara koji su neizbe\u017eni je stanje prozora. Same re\u010di nam govore o \u010demu se radi. Stateless je vrsta prozora u toku u kojem se ne \u010duvaju zapisi, \u0161to zna\u010di da se istorija ne prikuplja u odre\u0111enom vremenskom okviru i uglavnom se koristi u prozorima za filtriranje, spaja se sa stati\u010dkom tabelom za obogac\u0301ivanje toka ili izra\u010dunavanje na nivou jednog zapisa.<\/p>\n<p>Stateful je su\u0161ta suprotnost tome. Ako prozor defini\u0161emo kao stateful, u obavezi smo da defini\u0161emo vremenski okvir u kome c\u0301e se podaci \u010duvati. Koristi se kao korak pre agregiranja na nivou odre\u0111enih vremenskih intervala.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Alati_za_striming\"><\/span>Alati za striming<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p style=\"text-align: justify;\"><img decoding=\"async\" class=\"size-large wp-image-8870 aligncenter\" src=\"https:\/\/thingsolver.com\/wp-content\/uploads\/StreamingTools-1024x560.png\" alt=\"\" width=\"640\" height=\"350\" title=\"\" srcset=\"https:\/\/thingsolver.com\/wp-content\/uploads\/StreamingTools-1024x560.png 1024w, https:\/\/thingsolver.com\/wp-content\/uploads\/StreamingTools-768x420.png 768w, https:\/\/thingsolver.com\/wp-content\/uploads\/StreamingTools-1536x840.png 1536w, https:\/\/thingsolver.com\/wp-content\/uploads\/StreamingTools-2048x1120.png 2048w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Uglavnom zahvaljujuc\u0301i razvoju alata iz Apache fondacije i razvoju klaud re\u0161enja, danas nam ne nedostaje softver za striming. Kao \u0161to ste mo\u017eda vec\u0301 zaklju\u010dili, da biste razvili aplikaciju za striming, potrebno je poznavanje programiranja, dok potreban nivo znanja mo\u017ee varirati u zavisnosti od slo\u017eenosti slu\u010daja upotrebe i alata koje odaberete. U jednom od narednih tekstova c\u0301emo preciznije pisati o jednom od alata sa slike ispod<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Slucajevi_upotrebe_striminga\"><\/span><strong>Slu\u010dajevi upotrebe striminga<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Telekomunikacije. Proces i analiza podataka o doga\u0111ajima (CDR). Sa pristupom strimingu, mo\u017eete imati kori\u0161c\u0301enje podataka ili glasa u stvarnom vremenu po klijentu i pokrenuti dodatne kampanje u vezi sa tim. Koristec\u0301i podatke o performansama mre\u017ee mo\u017eete detektovati anomalije na va\u0161im baznim stanicama u gotovo stvarnom vremenu. Ovo se mo\u017ee koristiti zajedno sa va\u0161im alarmnim sistemom da obogati informacije o kvarovima.<\/p>\n<p>Bankarstvo. Pristup strimingu c\u0301e vam potro\u0161iti vreme da odgovorite u slu\u010daju bilo koje la\u017ene aktivnosti. Bankarstvo je verovatno industrija koja najvi\u0161e obec\u0301ava kada su u pitanju slu\u010dajevi kori\u0161c\u0301enja u stvarnom vremenu. Jedan od njih je personalizacija kupaca. Ovim pristupom mo\u017eete poslati optimalnu ponudu u zavisnosti od lokacije, transakcije, konteksta itd.<\/p>\n<p>Maloprodaja. Maloprodajna industrija nam tako\u0111e daje ogroman spektar slu\u010dajeva upotrebe koje treba analizirati u stvarnom vremenu. Mo\u017eemo je koristiti za bolje sisteme preporuka, pokreta\u010de zasnovane na lokaciji, pripremiti se za tr\u017ei\u0161ne trendove i personalizovane ponude. U ovoj industriji pametno i pravovremeno snabdevanje, prac\u0301enje je klju\u010dno, tako da vam upravljanje zalihama mo\u017ee sigurno u\u0161tedeti mnogo novca i truda.<\/p>\n<p>Automobilska industrija.\u00a0 Svi znaju za Uberaov slu\u010daj upotrebe. Svrha pristupa strimingu je pronala\u017eenje najbli\u017eeg besplatnog automobila za optimizaciju tro\u0161kova i povec\u0301anje zadovoljstva kupaca. Predvi\u0111anje saobrac\u0301aja i optimizacija ruta moraju biti ura\u0111eni na vreme \u2013 \u0161to ovu industriju \u010dini savr\u0161enom osnovom za aplikacije za striming.<\/p>\n<p>U konkurentnom okru\u017eenju i industriji, kakva je danas, zaista je potrebno preduzeti prave korake u najkrac\u0301em moguc\u0301em roku da bismo bili ispred konkurencije. Zahvaljujuc\u0301i propusnosti mre\u017ea koje imamo, oblaku, jeftinom hardveru i razvoju alata koje danas koristimo, mo\u017eemo i treba da preduzmemo sve korake da iskoristimo prednosti velike koli\u010dine podataka koje primamo u stvarnom vremenu iz raznih sistema, koje do sada nismo mogli da obradimo. Predlozi bi bili da po\u010dnete sa najjednostavnijim slu\u010dajem kori\u0161c\u0301enja koji odgovara va\u0161em poslovanju, a zatim izgradite naprednija re\u0161enja povrh toga, bez \u017eurbe sa slo\u017eeno\u0161c\u0301u.<\/p>\n<p>U sledec\u0301em postu c\u0301emo pisati konkretnije o Flink-u i kori\u0161c\u0301enju u okru\u017eenju za striming \u2013 ostanite sa nama.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><em>The cover photo is taken from <a href=\"https:\/\/www.pexels.com\/@munkee-panic-272941\" target=\"_blank\" rel=\"noopener\">https:\/\/pexels.com\/@munkee-panic-272941<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Striming podataka postao je veoma popularan u industriji velikih podataka. Koristi se za obradu velikih koli\u010dina podataka iz razli\u010ditih izvora koji se kontinuirano generi\u0161u, u stvarnom vremenu. Kada ka\u017eemo \u201eu stvarnom vremenu\u201c, moramo da razumemo da ono mo\u017ee da varira &#8230; <\/p>\n<p class=\"read-more\"><a class=\"btn small\" href=\"https:\/\/thingsolver.com\/sr\/blog\/jednom-kada-pocnete-sa-strimingom-sledite-tok\/\">Pro\u010ditaj vi\u0161e<\/a><\/p>\n","protected":false},"author":4,"featured_media":17009,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[188,189],"tags":[280,281,282,283,284,285,286],"acf":[],"_links":{"self":[{"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/posts\/17007"}],"collection":[{"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/comments?post=17007"}],"version-history":[{"count":3,"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/posts\/17007\/revisions"}],"predecessor-version":[{"id":17014,"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/posts\/17007\/revisions\/17014"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/media\/17009"}],"wp:attachment":[{"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/media?parent=17007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/categories?post=17007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thingsolver.com\/sr\/wp-json\/wp\/v2\/tags?post=17007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}