deduplikacijadebesų infrastruktūraduomenų apdorojimasrealaus laiko sistemospaketinis apdorojimas
Užklausos lygio deduplikacija ir paketo lygio deduplikacija
Užklausų lygio deduplikacija apdoroja kiekvieną gaunamą užklausą atskirai, kad realiuoju laiku pašalintų dublikatus, o paketų lygio deduplikacija sugrupuoja kelias užklausas ir pašalina dublikatus po sukaupimo. Abu metodai sumažina duomenų dubliavimą, tačiau labai skiriasi delsos laiku, išteklių naudojimu ir idealiais naudojimo atvejais.
Akcentai
Užklausos lygio deduplikacija realiuoju laiku aptinka dublikatus su minimaliu delsos laiku
Paketinio lygio deduplikacija pasiekia didesnį tikslumą, lyginant su visais sukauptais duomenų rinkiniais.
Užklausų lygio sistemoms reikia greitų atminties saugyklų, o paketinės sistemos naudoja pigesnę disko saugyklą.
Paketinio lygio deduplikacija siūlo geresnį gedimų atkūrimą, nes neapdoroti duomenys išlieka saugykloje.
Kas yra Užklausos lygio deduplikacija?
Realaus laiko metodas, kuris tikrina ir pašalina pasikartojančias užklausas joms gavus, prieš pradedant bet kokį apdorojimą.
Veikia pagal individualias užklausas vos tik joms pasiekus sistemą, todėl galima nedelsiant aptikti dublikatus
Paprastai naudoja atmintyje esančias duomenų struktūras, tokias kaip maišos rinkiniai arba žydėjimo filtrai, kad būtų galima greitai ieškoti
Minimalus delsos laikas, nes sprendimai priimami kartu su užklausų tvarkymu
Dažniausiai naudojamas API šliuzuose, žiniatinklio serveriuose ir realaus laiko sukčiavimo aptikimo sistemose
Sumažina nereikalingus skaičiavimus, nes neleidžiama pradėti pasikartojančio darbo
Kas yra Paketinio lygio duplikacijų šalinimas?
Atidėtas metodas, kai užklausos renkamos laikui bėgant ir pašalinamos pasikartojančios užklausos per suplanuotą apdorojimo langą.
Apdoroja sukauptas užklausas suplanuotais intervalais nuo minučių iki valandų
Laukiamiems įrašams laikyti naudojama nuolatinė saugykla, pvz., duomenų bazės arba paskirstytos failų sistemos
Pasiekia didesnį deduplikacijos tikslumą lyginant su didesniais istoriniais duomenų rinkiniais
Dažnai naudojamas duomenų srautuose, ETL užduotyse ir analizės įvedimo darbo eigose
Įveda tyčinį delsos efektą, tačiau maksimaliai padidina pralaidumą ir saugojimo efektyvumą
Palyginimo lentelė
Funkcija
Užklausos lygio deduplikacija
Paketinio lygio duplikacijų šalinimas
Apdorojimo modelis
Realiuoju laiku, pagal užklausą
Suplanuota, pagal partiją
Vėlavimo poveikis
Beveik nulinis papildomas delsos laikas
Nuo minučių iki valandų vėlavimo
Sandėliavimo reikalavimai
Minimalus atminties naudojimas
Reikalingas nuolatinis duomenų saugojimas eilėje
Deduplikacijos tikslumas
Apribota iki neseniai atmintyje esančio lango
Didelis tikslumas visoje partijos istorijoje
Pralaidumo efektyvumas
Mažesnis pralaidumas vienai užklausai
Didesnis agregatų našumas
Įgyvendinimo sudėtingumas
Vidutinis, reikalingos greitos paieškos struktūros
Aukštesnis, reikalingas eilių valdymas ir planavimas
Geriausiai tinka
API, žiniatinklio kabliai, realaus laiko sistemos
Duomenų srautai, analitika, ETL
Gedimų atkūrimas
Praranda atminties būseną gedimo atveju
Paketą galima atkurti iš saugyklos
Išsamus palyginimas
Pagrindinis mechanizmas
Užklausos lygio deduplikacija perima kiekvieną užklausą įėjimo taške ir patikrina ją pagal neseniai matytų identifikatorių įrašą. Jei randamas atitikmuo, užklausa nedelsiant panaikinama arba sujungiama. Paketinio lygio deduplikacija taiko priešingą metodą, leisdama užklausoms kauptis eilėje arba paruošimo srityje, o tada, uždarius paketinį langą, paleidžiant deduplikacijos etapą visai kolekcijai.
Vėlavimo ir pralaidumo kompromisas
Esminis šių dviejų metodų prieštaravimas priklauso nuo greičio ir mastelio santykio. Užklausų lygio sistemos prideda tik mikrosekundes papildomo laiko vienam iškvietimui, todėl jos idealiai tinka, kai vartotojai tikisi greitų atsakymų. Paketinio lygio sistemos aukoja šį neatidėliotinumą mainais už daug daugiau įrašų apdorojimą vienam skaičiavimo vienetui, nes deduplikacijos logiką galima optimizuoti masinėms operacijoms, o ne vieno įrašo paieškai.
Tikslumas ir aptikimo langas
Kadangi užklausų lygio deduplikacija paprastai naudoja ribotą atmintį, ji gali aptikti tik tuos dublikatus, kurie atsiranda tame lange. Dublikatas, atsiradęs po kelių valandų, bus aptiktas. Paketų lygio deduplikacija lygina duomenis su visu sukauptu duomenų rinkiniu, todėl aptinka dublikatus, neatsižvelgiant į tai, kada jie pirmą kartą atsirado, o tai svarbu, kai sistemos bando iš naujo arba pakartotinai atkuria užklausas ilgą laiką.
Infrastruktūra ir kaina
Norint dideliu mastu vykdyti užklausų lygio deduplikaciją, reikalingos greitos, paskirstytos atminties saugyklos, tokios kaip „Redis“ ar „Memcached“, kurios gali būti brangios esant dideliems užklausų kiekiams. Paketinio lygio deduplikacija remiasi pigesne disko saugykla ir suplanuotais skaičiavimais, dažnai vykdomais vietoje arba ne piko valandomis. Sąnaudų profilis palankesnis paketiniam apdorojimui, kai apdorojami dideli kiekiai ir mažai skubūs darbo krūviai.
Gedimų tvarkymas
Kai užklausų lygio sistema sugenda, jos atminties deduplikacijos būsena prarandama, o tai reiškia, kad jau išfiltruoti dublikatai gali būti praleisti po perkrovimo. Paketinio lygio sistemos čia yra atsparesnės, nes neapdorotos užklausos yra saugomos patvarioje saugykloje ir jas galima tiesiog apdoroti iš naujo. Dėl to paketinis deduplikavimas yra saugesnis pasirinkimas darbo krūviams, kai dublikatų apdorojimas yra brangus arba rizikingas.
Privalumai ir trūkumai
Užklausos lygio deduplikacija
Privalumai
+Dublikatų aptikimas realiuoju laiku
+Minimalus papildomas delsos laikas
+Paprasta samprotauti
+Užkerta kelią ankstyvam skaičiavimo švaistymui
Pasirinkta
−Ribotas atminties langas
−Didesnės infrastruktūros išlaidos
−Valstybė pralaimėjo avariją
−Sunkiau horizontaliai mastelio keisti
Paketinio lygio duplikacijų šalinimas
Privalumai
+Didelis aptikimo tikslumas
+Pigesnės saugojimo galimybės
+Atsparus gedimams
+Didesnis našumas dideliu mastu
Pasirinkta
−Įvedamas apdorojimo vėlavimas
−Reikalingas eilių valdymas
−Sudėtingesnis planavimas
−Netinka realaus laiko poreikiams
Dažni klaidingi įsitikinimai
Mitas
Užklausos lygio deduplikacija suranda kiekvieną dublikatą, nesvarbu, kada jis gaunamas.
Realybė
Praktiškai užklausų lygio sistemos aptinka dublikatus tik savo atminties lange. Kai įrašas pasensta, pakartotinai išsiųsta užklausa bus laikoma nauja, todėl dauguma gamybinių sistemų susieja ją su antriniu paketų lygio perdavimu, kad būtų užtikrintas išsamumas.
Mitas
Paketinio lygio deduplikavimas visada yra lėtesnis ir todėl blogesnis.
Realybė
Vėlavimas nėra vienintelis svarbus rodiklis. Paketinio lygio deduplikacija dažnai užtikrina geresnį ekonomiškumą, didesnį tikslumą ir didesnį atsparumą gedimams, todėl tai yra geresnis pasirinkimas daugeliui didelio masto duomenų darbo eigų.
Mitas
Turite pasirinkti vieną metodą visai sistemai.
Realybė
Daugumoje brandžių debesijos architektūrų derinami abu šie būdai. Užklausų lygio deduplikacija tvarko karštąjį kelią, kad būtų galima nedelsiant filtruoti, o paketų lygio deduplikacija veikia kaip saugos tinklas, sulaikantis viską, kas praslydo pro šalį.
Mitas
„Bloom“ filtrai užtikrina idealiai tikslų užklausų lygio deduplikavimą.
Realybė
„Bloom“ filtrai gali pateikti klaidingai teigiamus rezultatus, o tai reiškia, kad kai kurios teisėtos užklausos yra atmestos. Jie yra tikimybiniai, todėl sistemose, kurios juos naudoja, paprastai pridedamas antrinis patvirtinimo žingsnis svarbioms operacijoms.
Mitas
Paketinio lygio deduplikacijos negalima pritaikyti prie realaus laiko darbo krūvių.
Realybė
Naudojant šiuolaikines srautinio apdorojimo sistemas, tokias kaip „Apache Flink“ ar „Spark Structured Streaming“, paketinio stiliaus deduplikacija gali veikti mikropaketuose su vos kelių sekundžių vėlavimais, panaikinant skirtumą tarp šių dviejų metodų.
Dažnai užduodami klausimai
Kuo skiriasi užklausos lygio ir paketinio lygio deduplikacija?
Pagrindinis skirtumas yra laikas. Užklausų lygio deduplikacija tikrina kiekvieną užklausą jai gavus ir nedelsdama pašalina dublikatus, o paketų lygio deduplikacija renka užklausas per tam tikrą langą ir vėliau pašalina dublikatus. Pirmasis teikia pirmenybę mažam delsos laikui, antrasis – kruopštumui ir ekonomiškumui.
Kuris deduplikacijos metodas yra geresnis API šliuzams?
Užklausų lygio deduplikacija paprastai tinka API šliuzams, nes vartotojai tikisi sinchroninių atsakymų, o pasikartojantys API iškvietimai dažnai rodo pakartotinius bandymus arba klaidas, kurias reikėtų nedelsiant aptikti. Pridėjus paketų lygio deduplikaciją kaip antrinį sluoksnį, galima dar labiau sumažinti tolesnius procesus.
Ar paketinio lygio deduplikacija gali veikti realiuoju laiku?
Taip, šiuolaikiniai srautinio apdorojimo varikliai gali vykdyti mikropaketų deduplikaciją su vos vienos–penkių sekundžių vėlavimu. Šis metodas užtikrina beveik realaus laiko veikimą, tuo pačiu išnaudojant paketinio apdorojimo efektyvumą.
Kokios duomenų struktūros naudojamos užklausų lygio deduplikacijai?
Įprasti pasirinkimai apima maišos rinkinius tiksliam atitikimui, „bloom“ filtrus atminties taupymui tikimybiniam atitikimui ir LRU talpyklas ribotiems atminties langams. „Redis“ ir „Memcached“ yra populiarios atsarginės saugyklos paskirstytiems diegimams.
Kaip paketinio lygio deduplikacija tvarko labai didelius duomenų rinkinius?
Didelio masto paketiniam duomenu dublikatų išgavimui paprastai naudojamos paskirstytosios apdorojimo sistemos, tokios kaip „Apache Spark“ arba „Hadoop“. Įrašai skaidomi pagal duomenu dublikatų išgavimo rakto maišą, rūšiuojami kiekviename skaidinyje ir tada sutraukiami lyginant gretimus įrašus, taip užtikrinant valdomą atminties naudojimą.
Ar užklausos lygio deduplikacija yra brangesnė nei paketinio lygio?
Pagal užklausą – taip, nes kiekvienam iškvietimui reikalingos greitos atminties paieškos. Didelio masto duomenų saugyklų su mažu delsos laiku infrastruktūros išlaidos gali greitai išaugti. Paketinio lygio deduplikacija šias išlaidas perkelia į suplanuotą skaičiavimą ir pigesnę disko saugyklą.
Kas nutinka, jei užklausų lygio deduplikacijos sistema sugenda?
Prarandama atmintyje esanti matytų užklausų būsena, todėl anksčiau filtruoti dublikatai gali būti apdorojami dar kartą po perkrovimo. Siekiant tai išvengti, daugelis sistemų išsaugo deduplikacijos būseną diske arba naudoja įrašymo iš anksto žurnalą, kurį galima atkurti atkuriant.
Ar abu metodus galima sujungti vienoje architektūroje?
Be abejo, ir tai įprasta gamybinėse sistemose. Užklausų lygio deduplikacija tvarko karštąjį kelią, kad būtų galima nedelsiant filtruoti, o paketinė užduotis periodiškai vykdoma, kad būtų sugauti visi dublikatai, kurie praslydo pro atminties langą arba atsirado sutrikimų metu.
Kuris metodas yra geresnis žurnalų įvedimo srautams?
Žurnalų įkėlimui paprastai pageidaujamas paketinio lygio duomenu deduplikavimas, nes žurnalai gaunami dideliais kiekiais, toleruoja tam tikrą vėlavimą ir dažnai reikalauja duomenu deduplikavimo per ilgus laiko intervalus. Tokios priemonės kaip „Logstash“, „Flink“ ir „Spark“ palaiko šį modelį iš anksto.
Kaip pasirinkti deduplikacijos lango dydį paketiniam apdorojimui?
Lango dydis priklauso nuo to, kiek laiko realiai gali užtrukti dublikatai. Pakartotiniams žiniatinklio kabliuko bandymams gali pakakti kelių valandų. Analizės duomenims, kurie pakartojami po kelių dienų, gali prireikti 24 valandų ar ilgesnių langų. Kompromisas visada yra tarp delsos ir išsamumo.
Nuosprendis
Rinkitės užklausų lygio deduplikaciją, kai jūsų sistemai reikalingi atsakymai realiuoju laiku, o pasikartojančios užklausos eikvotų brangius skaičiavimo išteklius arba sukeltų vartotojui matomų problemų, pvz., mokėjimo API arba žiniatinklio kablių imtuvuose. Rinkitės paketų lygio deduplikaciją, kai apdorojate didelius duomenų kiekius, kai tam tikras vėlavimas yra priimtinas ir jums reikia kruopštaus dublikatų aptikimo per ilgus laiko intervalus, pvz., analizės įrašymo ar žurnalų apdorojimo srautuose.