Ich arbeite an einer mobilen App, die eine Push-Nachricht an mehrere Hunderttausend Geräte gleichzeitig sendet. Wenn jeder Nutzer seine App über die Push-Nachricht öffnet, trifft die App unsere API für Daten. Die API-Ressource ist für jeden Benutzer dieses Push identisch.AWS API Gateway Cache - Mehrere Servicetreffer mit Anrufexplosion
Nehmen wir jetzt an, dass alle 500.000 Benutzer ihre App gleichzeitig öffnen. API Gateway erhält 500.000 identische Anrufe.
Da alle 500.000 fast gleichzeitige Anforderungen nach denselben Daten fragen, möchte ich sie zwischenspeichern. Beachten Sie jedoch, dass die Berechnung des gewünschten Wertes etwa 2 Sekunden dauert.
Was ich
Ich möchte API-Gateway sehen passieren soll, dass die Daten nicht im Cache ist, lassen Sie den ersten Anruf bis hin zu meinem Backend-Service, während die anderen Anfragen in der Warteschlange gehalten werden, bevölkern die Cache vom ersten Aufruf und dann auf die anderen 499.999 Anfragen mit den zwischengespeicherten Daten antworten.
Was ist (scheint zu)
API-Gateway geschieht zu sehen, dass es keinen Cache gespeicherten Wert ist, wird jede einzelne der 500.000 Anfragen an den Back-End-Service zurückschicken! Also werde ich den Wert mit einer komplexen DB-Abfrage viel öfter neu berechnen, als es die Ressourcen erlauben. Dies geschieht, weil der letzte Aufruf in API Gateway kommt, bevor der erste Aufruf den Cache gefüllt hat.
Gibt es eine Möglichkeit, wie ich dieses Verhalten bekommen kann?
Ich weiß, dass auf meinem Beispiel aus, dass vielleicht könnte ich prime die Cache durch die API-Aufruf mich einfach anrufen, bevor die Masse Druckauftrag sendet, aber der tatsächliche Anwendungsfall ist etwas komplizierter als mein vereinfachtes Beispiel. Aber seien Sie versichert, die Lösung dieses vereinfachten Anwendungsfalles wird das lösen, was ich versuche zu tun.