J'ai imaginé ci-dessous des utilisations primaires pour l'application IM ci-dessus en fonction de vos entrées.
**
Les cas d'utilisation
**
- Beaucoup de nouveaux utilisateurs continuent à enregistrer avec le système et l'abonnement à un des canaux
- De nombreux utilisateurs existants changent leur abonnement d'un canal à
autre canal
- De nombreux utilisateurs existants garder les messages de publication aux canaux
- De nombreux utilisateurs existants continuent de recevoir des messages comme abonnés
XMPP est naturel pour usecases 3e et 4e. "ejabbered" est l'une des plates-formes hautement évolutives éprouvées pour aller de l'avant.
Dans le cas 2ème usecase, Vous probablement avez la logique quelque chose comme ceci. - a) d'information de canal de mise à jour de l'utilisateur dans DB - b) lui faire écouter nouvelle chaîne - c) changer son sujet d'édition à un autre canal ... ainsi de suite
Chaque fois que vous devez effectuer plusieurs opérations , je vous recommande fortement d'utiliser « KAFKA » pour effectuer les opérations ci-dessus de manière async
en cas de 1er usecase, fournir l'enregistrement par le repos APIs.So que l'enregistrement peut être fait de tout device.While l'enregistrement d'un utilisateur, vous peut avoir plusieurs opérations comme suit. - 1) registre utilisateur DB - 2) créer en interne IM compte - 3) envoyer des courriels ou SMS pour la confirmation ... ainsi de suite
Ici aussi effectuer 1ère opération comme une partie de la logique de service API reste. Effectuez les 2ème et 3ème opérations de manière asynchrone en utilisant KAFKA.Cela signifie que votre logique de service effectue la première opération de manière synchrone et déclenche un événement à KAFKA. Chaque consommateur va gérer les 2ème et 3ème opérations de manière asynchrone.
Le système peut bien évoluer si toutes les couches/sous-systèmes peuvent bien évoluer. Dans cette perspective, la pile technologique Below peut vous aider à bien évoluer.
REST APIS + KAFKA + EJABBERED (XMPP)