Die Herausforderung der Benachrichtigung
Benachrichtigungen scheinen einfach, bis man Millionen davon zuverlässig versenden muss. Die Liefergeschwindigkeit, die Verwaltung von Geräte-Token, die Rate-Begrenzung und die Benutzervorlieben spielen bei großen Skalierungen alle eine Rolle.
Architekturübersicht
[Ereignisauslöser] → [Benachrichtigungsdienst] → [Prioritätswarteschlange] → [Lieferarbeiter] → [APNs/FCM]Geräte-Token-Verwaltung
Geräte-Token ändern sich, wenn Benutzer die App neu installieren oder ihr Betriebssystem aktualisieren. Wir unterhalten ein Token-Register mit automatischer Reinigung.
class DeviceTokenService {
async registerToken(userId, token, platform) {
await this.db.devices.upsert({
where: { token },
update: { userId, platform, lastSeen: new Date() },
create: { userId, token, platform, lastSeen: new Date() }
});
}
async removeToken(token) {
await this.db.devices.delete({ where: { token } });
}
}Prioritäts-Warteschlangensystem
| Priorität | Typ | Latenzziel |
|---|---|---|
| Kritisch | Sicherheitswarnungen, 2FA-Codes | < 1 Sekunde |
| Hohe | Bestellaktualisierungen, Nachrichten | < 5 Sekunden |
| Normal | Marketing, Newsletter | < 30 Sekunden |
| Niedrig | Wochenend-Bericht, Empfehlungen | < 1 Stunde |
Rate-Begrenzung und Drosselung
Verhindere Benachrichtigungsmüdigkeit, indem Sie die Anzahl der Benachrichtigungen pro Stunde für jeden Benutzer begrenzen. Verschiedene Grenzen gelten für verschiedene Benachrichtigungstypen.
Analytik und Lieferverfolgung
- Lieferrate-Tracking (gesendet vs. geliefert)
- Offener-Rate-Messung und -Optimierung
- A/B-Testen von Benachrichtigungsinhalt und -Zeit
- Benutzervorlieben-Verwaltung und Ruhezeiten
Best Practices
Personalisiere Benachrichtigungen auf der Grundlage der Benutzerverhalten, nicht nur auf der Grundlage von Demografien. Senden Sie zu jeder Zeit für jeden Benutzer, der Zeitzone und die Aktivitätsmuster.