Comparthing Logo
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.

Susiję palyginimai

„Kafka“ ir „Flink“ palyginti su apdorojimu atmintyje

„Kafka“ ir „Flink“ sudaro paskirstytą srautinio apdorojimo ekosistemą realaus laiko duomenų srautams, o apdorojimas atmintyje pagreitina analizę, nes duomenys saugomi tik RAM atmintyje – kiekvienas iš jų tenkina iš esmės skirtingus architektūrinius greičio, mastelio ir tvarumo poreikius.

„Netflix“ mašininio mokymosi platforma ir nepriklausomi mašininio mokymosi įrankiai

„Netflix“ vidinė mašininio mokymosi platforma siūlo glaudžiai integruotus, didelio masto įrankius, skirtus transliacijų suasmeninimui, o nepriklausomi mašininio mokymosi įrankiai suteikia mažesnėms komandoms lankstumo ir kontrolės. Pasirinkimas priklauso nuo masto, pritaikymo poreikių ir esamų investicijų į infrastruktūrą.

Adaptyvioji infrastruktūra ir statinė infrastruktūros projektavimas

Adaptyvi infrastruktūra dinamiškai prisitaiko prie kintančių darbo krūvių, naudodama automatizavimą ir mastelio keitimą realiuoju laiku, o statinės infrastruktūros projektavimas remiasi fiksuotais, iš anksto sukonfigūruotais ištekliais. Pasirinkimas priklauso nuo darbo krūvio kintamumo, biudžeto nuspėjamumo ir veikimo brandos jūsų debesijos aplinkoje.

Apkrovos balansavimas mašininio mokymosi sistemose ir paprastas API užklausų tvarkymas

Apkrovos balansavimas mašininio mokymosi sistemose valdo GPU reikalaujančius išvadų ir mokymo darbo krūvius specializuotoje įrangoje, o paprastas API užklausų apdorojimas paskirsto nedidelį HTTP srautą bendrosios paskirties serveriuose. Jie labai skiriasi sudėtingumu, išteklių poreikiu ir maršruto parinkimo išmanumu.

Atsparumas gedimams ir sistemos paleidimas iš naujo

Atsparumas gedimams proaktyviai perkelia darbo krūvius į sveikas sistemas, kol vartotojai nepastebi problemų, o sistemos gedimų atveju iš naujo paleidžiamos sistemos reaktyviai atkuria paslaugas po netikėtų gedimų. Abu metodai siekia palaikyti prieinamumą, tačiau iš esmės skiriasi laiku, architektūros sudėtingumu ir poveikiu vartotojams.