Ribotas lygiagretumas
Naudokite riboto dydžio kliento pusės eilę ir kiekvieną užduotį siųskite įprasta suderinama užklausa. Taip valdysite apkrovą nedarydami prielaidos, kad serveryje yra paketinio apdorojimo galinis taškas.
Paslaugos paketinis režimas yra atskira API sutartis: jo maršrutą ir turinį naudokite tik juos paskelbus paskyros nustatymuose arba specifikacijoje.
async function runWithLimit(items, limit, work) {
const results = [];
for (let offset = 0; offset < items.length; offset += limit) {
const group = items.slice(offset, offset + limit);
results.push(...await Promise.all(group.map(work)));
}
return results;
}Valdykite eilę
- Vidinį užduoties ID padarykite deterministinį ir unikalų vieno vykdymo ribose.
- Per didelį rinkinį suskaidykite į lengvai valdomas grupes.
- Vieno elemento klaidą atskirkite nuo visos eilės klaidos.
Surinkite rezultatus
Susiekite rezultatą su vidiniu identifikatoriumi ir išsaugokite kiekvienos užduoties būseną.
Nekartokite automatiškai visų užduočių: patikrinę idempotentiškumą kartokite tik tas, kurios nepavyko dėl laikinos priežasties.