2017-06-07 3 views
0

Kürzlich stieß ich auf eine Frage, wo wir gefragt wurden, ob etwa 1000 Benutzer einen Ruheendpunkt eines Microservices erreichen und auf diesem Endpunkt dieselben Daten von einem anderen langsamen Prozess abriefen. Wie können wir die Anfrage in diesem Anwendungsfall optimieren? Caching ist die naheliegende Antwort, aber wie könnte es für eine große Anzahl gleichzeitiger Anfragen optimiert werden?Behandlung mehrerer Anfragen auf einer einzigen Ressource

+1

http://www.ehcache.org/documentation/2.8/recipes/thunderingherd.html – dm03514

+0

Ja, den Cache auf mehrere Anfragen Synchronisation sollte der einzige Weg sein .. danke für den Link – jtkSource

Antwort

0

Offensichtlich, wie Sie sagen, müssen Sie die Cache-Optionen durchlaufen, wenn Sie eine einzige Anwendung haben, kann der schnellste Weg Ehcache sein, es ist ein ziemlich einfaches Framework zu implementieren.

Aber wenn Sie die Verfügbarkeit des Dienstes erhöhen möchten, müssen Sie es clustern. Dafür muss man einen Load Balancer wie nginx haben, und andererseits kann der Cache Redis db sein, um den Cache zu zentralisieren.

   Redis (cache) 
        ^^ 
Nginx (LB) -> cluster of your app -> Other service 
+0

Ich denke, die Frage war, zum Behandeln eines Bursts einer Anfrage auf einem Ruheendpunkt, der von einem langsamen Dienst unterstützt wird. – jtkSource

+0

@Cacheable Synchronisiert die Ausführungen der Methode mit den gleichen Parametern und speichert auch die Antwort für die nächste Ausführung im Speicher. Auf diese Weise minimieren Sie die Anfrage an eine andere Anwendung. org.springframework.cache.annotation.Cacheable – German

Verwandte Themen