2012-08-29 4 views
6

Ich braucheWie Millionen von Apple Push-Benachrichtigung wie Urban Airship innerhalb weniger Sekunden senden

Ich habe mehrere dedizierte Server, ich kann tausende von Push-Benachrichtigungen innerhalb von einigen Sekunden senden, aber wie kann ich innerhalb weniger Sekunden Millionen von Apple Push-Benachrichtigungen wie Urban Airship senden?

+1

Mehrere Server haben ... –

+0

@LawrenceCherone Ja. Ich habe mehrere Dateiserver, mehrere Datenbankserver und mehrere memcached Server. –

+1

Anzahl der benötigten Server = 1.000.000/max. Anzahl Benachrichtigungen pro Server pro Sekunde. – Robbie

Antwort

8

Jeder Server verfügt über eine begrenzte Kapazität zur Ausführung bestimmter Aufgaben. Sie können nicht davon ausgehen, dass Ihr dedizierter Server mit einer xyz-Konfiguration jedes NFR für Ihre Anwendung erreicht. Sie müssen die Serverkapazität planen, um Ihre NFR-Anwendung zu erreichen. Wenn Ihr dedizierter Server in der Lage ist, 10K Push-Benachrichtigungen innerhalb von 1 Sekunden mit optimaler Konfiguration von Server und Anwendung zu senden, und Sie 20K Benachrichtigungen in 1 Sekunde erreichen möchten, müssen Sie die horizontale/vertikale Skalierung des Servers vornehmen.

Bei der horizontalen Skalierung legen Sie eine weitere parallele Instanz und teilen Sie die Aufgabe zwischen ihnen, aber vertikal skalieren Sie den gleichen Server, um eine höhere Konfiguration zu haben. Die vertikale Skalierung wird nicht empfohlen, da sie einen Single Point of Failure aufweist.

Für Ihr Problem zu skalieren müssen Sie eine andere Instanz parallel in teilen die Push-Benachrichtigung Aufgabe zwischen ihnen zu teilen. Wenn Sie zum Beispiel 20K-Push-Benachrichtigungen mit einer Sekunde für 20K-Geräte senden möchten, können Sie zuerst 10K auf den ersten Server und dann 10K auf einen anderen Server aufteilen. Dies wird Ihre NFR von 20K Push-Benachrichtigung mit in einer Sekunde erreichen.

2

Es hängt von Ihrer Bandbreite und Verarbeitungsgeschwindigkeit Ihres Servers ab. Ein einzelner Server ist nicht in der Lage, 142857 Pakete mit Payload eine Sekunde zu senden, weshalb Sie ein Limit sehen.

Sie benötigen mehrere dedizierte Server und einen Steuerungsserver, der über eine interne API einen einzelnen Auftrag an die APN-Server sendet. Auf diese Weise kann der Auftrag verteilt werden.

+0

können Sie bitte jede (bessere) Referenz teilen? –

+1

Ein einzelner Server mit welchen CPUs und wie viele NICs? –

3

meine 2cents wert.

max Apple-Push-Nutzlast = 255bytes

1 Million iOS-Geräte = 1.000.000

Paket, das in einer einzigen Datei = 255.000.000 Bytes = 255MB.

Öffnen Sie eine TCP-Verbindung + Weiterleiten aller Inhalte an APNS Gateway (s). Das ist der schnellste Weg, den ich mir vorstellen kann. Pre-Process und Pre-Package Ihre Payload in eine einzelne oder mehrere Dateien lokal vor dem Versenden von ihnen zu Ziel-APNS-Server-Grid.

Verwandte Themen