Inkrementel synkronisering bør kunne stoppe halvvejs gennem en side og genstarte uden at miste beviser. Den vanskelige sag er ikke den første vellykkede download. Det er timeout efter lagring, dubletleveringen efter genstart og rapporten, der kommer efter den tilsyneladende rapporteringsperiode er slut.
Definer identitetsenheden
Brug udbyderens dokumenterede rapportidentitet og bevar dens lejer- og indberetterkontekst. Rapport-id'er bør ikke antages at være globalt unikke på tværs af kunder eller kilder. Gem et kildenytefingeraftryk sammen med identiteten. En identisk gentagelse kan behandles som en duplikat; den samme identitet med forskellige bytes bør undersøges eller håndteres gennem en dokumenteret revisionsmodel.
RFC 9990 giver struktur og semantik af samlede rapporter. Bevar originale rapporteringsperioder og modtagelsestider separat. En samlers inkrementelle vandmærke bør ikke lydløst genfortolke en historisk evalueringsperiode som et ankomsttidsstempel.
Forpligt data og fremskridt sammen
Hent en afgrænset side, valider omfanget og skemaet, skriv de normaliserede data med dets herkomst og fremfør først derefter kontrolpunktet. Foretrækker en transaktion, der forpligter dataene og fremskridt atomært. Hvis det ikke er tilgængeligt, skal du designe til replay med en stabil unikhedsbegrænsning. En markør, der gemmes, før registreringerne er holdbare, skaber et tabsvindue.
Antag, at en samler gemmer side et holdbart, men går ned, før dens fremskridtsmarkør rykker frem. Ved genstart kan den hente siden igen. En stabil identitetsbegrænsning med korrekt omfang bør undgå at tilføje nøjagtige gentagelser, samtidig med at den næste side kan begås. Hvis fremskridtsmarkøren var rykket frem, før registreringerne var holdbare, kunne genstart springe beviser helt over. Disse er hypotetiske fejltilstande, ikke en udført fil eller databasetest.
Hvis en gentagen identitet ankommer med forskellige kildebytes, bevar originalen og konflikten til en dokumenteret revisionsbeslutning. En ændret hash er et signal til at undersøge, ikke et bevis på, at meddelelsens tæller ændret: formatering eller normalisering kan også påvirke bytes. Test den faktiske lagertransaktion, nedbrudsgendannelse og kilde-byte-sammenligning under den godkendte implementering; denne vejledning hævder ingen holdbarhedsgaranti.
Håndter forsinkelse uden at hævde sikkerhed
Brug et afgrænset overlapningsvindue, når den faktiske API understøtter genforespørgsel på ankomster, og deduplikér derefter efter identitet. Vælg overlapningen ved hjælp af observerede indtagelsesforsinkelser og operationelle behov. Et begrænset overlap kan ikke garantere opdagelse af vilkårligt sene data. Tilføj periodisk fuld afstemning eller en anden dokumenteret opfyldningsmekanisme og noter den resterende dækningsbegrænsning.
Hold ændringer adskilt fra nøjagtige dubletter. Behold begge hashes ved konflikt og forhindre en uforklarlig erstatning i at ændre en allerede udstedt kunderapport. Genberegn berørte oversigter under en ny revision, når en gyldig rettelse er accepteret, med et spor tilbage til det tidligere resultat.
Gendan under den rigtige servicekontrakt
Respekter hastighedsgrænser, Prøv igen efter og versionsspecifik paginering. GitHub's API bedste praksis give et konkret eksempel på begrænset, hensynsfuld anmodningsadfærd; de definerer ikke en godkendelsesleverandørs kvoter. Behandl en 429 eller forbigående fejl som en grund til at pause og prøve igen inden for politikken, ikke som tilladelse til ubegrænsede parallelle anmodninger.
Overvåg sidste vellykkede kontrolpunkt, ældste ubehandlede ankomst, forsøg igen, udmattelse og konflikter. Et sundt API-svar med en fastlåst markør er stadig en mislykket synkronisering. Ved et tvetydigt resultat skal du inspicere lagrede identiteter og fremskridt, før du forsøger igen med et bivirkningstrin. Bevar kildebytes og det tidligere kontrolpunkt, så gendannelse er bevisstyret. Ingen API-kald, genforsøgssimulering eller EmailAuth synkroniseringsevne er demonstreret her. GitHubs hastighedsgrænsedokumentation bemærker, at det kan returnere 403 såvel som 429 for satsgrænser; skelne dokumenterede grænsesignaler fra permanent autorisationsnægtelse i stedet for at tildele en betydning til hver status.