2016-07-31 34 views
0

Meine App verfügt über die Funktion zum Senden einer bestimmten App-Daten an einen Server einmal täglich alle 24 Stunden. Gesamtanzahl meiner Android App installiert im Play Store - 5,00,000 (ca.) Gesamtanzahl der Sekunden in 24 Stunden - 86400 Sek.So verteilen Sie die Last auf dem Server über den ganzen Tag von meiner Android-App

Ich muss die Last auf dem Server über den ganzen Tag verteilen, um sicherzustellen, dass alle installierten Anwendungen nicht gleichzeitig oder in einem kurzen Zeitfenster Daten senden. Kurz gesagt, ich brauche einige Logik auf der Client-Seite, um diese Anrufe gleichmäßig über 86400 Sekunden an den Server zu verteilen.

+0

Ich verstehe nicht die Logik .. Ihre App senden SMS an Ihren Server und was macht Ihr Server mit dieser SMS? es an einen anderen Benutzer senden? –

+0

Jedem Client kann vom Server ein Zeitfenster zugewiesen werden, wenn er das erste Mal den Server kontaktiert. – muratgu

Antwort

0

Eine zufällige Zahl sollte Ihnen genug Verbreitung mit so vielen Installationen geben. Wenn die App zum ersten Mal ausgeführt wird, rufen Sie Rand (0, 86399) auf und speichern Sie sie in den Einstellungen. Dann sende SMS an diese Sekunde am Tag.

+0

Es ist nicht so einfach. Wie planen Sie die Aktion zum Senden der SMS? Wenn Sie einen Alarm verwenden, sind die Chancen gut, dass es wieder Spikes geben wird, da sie z. während des Schlafens, aber wenn das Gerät in den Morgenstunden wieder aufwacht. Die Aktivierung des Geräts zum Aufwachen ist ziemlich schwierig, nur um ein Ereignis auszulösen, das nicht zeitrelevant zu sein scheint. – Endzeit

+0

Ein einfacher Hack besteht darin, nur die Hälfte der Sekunden (43200) zu verwenden und ihn bis 9 Uhr Ortszeit hinzuzufügen. Sollte immer noch genug Verbreitung geben, vor allem wenn Sie Nutzer in mehreren Zeitzonen haben. – lionscribe

0

Wir hatten ähnliche Situation, und wir haben diese Art von Anruf von Apache-Server zu node.js Server gewechselt und nie zurückgeschaut. Node.js kann viele, viele weitere Verbindungen verwalten UND kann die Verbindung zurückgeben und schließen, bevor alle Arbeit erledigt ist (wenn zum Beispiel Daten nicht kritisch sind, können Sie die Verbindung schließen und zurückgeben, bevor Sie in die Datenbank speichern).