Capitolo 9. La resilienza
Questo lavoro è stato tradotto utilizzando l'AI. Siamo lieti di ricevere il tuo feedback e i tuoi commenti: translation-feedback@oreilly.com
Un sistema distribuito è un sistema in cui il guasto di un computer di cui non sei a conoscenza può rendere inutilizzabile il tuo stesso computer.1
Leslie Lamport, Bacheca del DEC SRC (maggio 1987)
Una notte di settembre, poco dopo le due del mattino, una parte della rete interna di Amazon ha smesso di funzionare.2 L'evento è stato breve e non particolarmente interessante, se non fosse che ha interessato un numero considerevole di server che supportavano il servizio DynamoDB.
Nella maggior parte dei giorni, questo non sarebbe un grosso problema. I server interessati proverebbero a riconnettersi al cluster recuperando i dati di appartenenza da un servizio di metadati dedicato. Se ciò non dovesse funzionare, si metterebbero temporaneamente offline e riproverebbero.
Ma questa volta, quando la rete è stata ripristinata, un piccolo esercito di server di archiviazione ha richiesto simultaneamente i propri dati di appartenenza al servizio di metadati, sovraccaricandolo in modo tale che le richieste - anche quelle provenienti da server precedentemente non interessati - hanno iniziato ad andare in timeout. I server di archiviazione rispondevano doverosamente ai timeout mettendosi offline e riprovando (di nuovo), mettendo ulteriormente sotto stress il servizio di metadati, causando la messa offline di altri server e così ...