Ek is tans besig om 'n stelsel te bou waar S3 as 'n aanhoudende hash-stel (die S3-URL word uit die data afgelei) gebruik word deur baie rekenaars op die internet . As twee nodusse dieselfde data stoor, sal dit met dieselfde sleutel gestoor word en dit sal dus nie twee keer gestoor word nie. As 'n voorwerp verwyder word, moet ek weet of 'n ander node (s) ook daardie data gebruik. In daardie geval sal ek dit nie verwyder nie.
Op die oomblik het ek dit geïmplementeer deur 'n lys van die stoorknope toe te voeg as deel van die data wat na S3 geskryf is. Wanneer 'n node die data stoor, gebeur dit dus:
Dit skep 'n vorm van idempotente verwysingstelling. Aangesien versoeke oor die internet redelik onbetroubaar kan wees, wil ek nie net die aantal stoorknope tel nie. Daarom stoor ek 'n lys in plaas van 'n teller (as 'n node dieselfde versoek> 1 keer stuur).
Hierdie benadering werk solank twee nodusse nie gelyktydig skryf nie. S3 bied (sover ek weet) geen manier om die voorwerp te sluit sodat al hierdie 5 stappe atoom word nie.
Hoe sou u hierdie probleem met gelyktydigheid oplos? Ek oorweeg dit om een of ander vorm van optimistiese gelyktydigheid toe te pas. Hoe moet ek dit vir S3 doen? Moet ek miskien 'n heel ander benadering gebruik?