Tout d'abord, résoudre la difficulté de problème +
Résoudre un problème d'affaires
(1) fin nuage exigences de reporting en temps réel de: fin des conducteurs de transport 58 vitesses GPS reporting en temps réel
(2) nuage à bout demande push temps réel: les commandes du pilote de transport 58 vitesses en push en temps réel
(3) - en -bout des besoins des messages de chat: communication entre les utilisateurs sur le Chat, les entreprises, le service à la clientèle
difficulté:
(1) un message de joignabilité à un environnement sans fil APP
(2) universelle, plate-forme et essayer de découpler entreprise
En second lieu, la solution traditionnelle avec une pénurie potentielle
[Nuage Fin: http sondage rapporté GPS service Nouvelles
Option One : Direct écrite par ligne de DB-serveur web entreprise
Option deux : couche serveur web Universal appelle la couche service d'affaires écriture DB
lacunes possibles :
(1) http frais connexion courte élevé (créer de façon répétée et détruire une connexion)
(2) une couche inférieure d'un certain serveur web (mille demandes de traitement de niveau par seconde)
[Cloud à la fin: par une poussée tiers ou d'un service push]
Un programme : APNs ou par d' autres poussée tiers poussée m
Option deux : à pousser à travers leurs propres structures de service mqtt
lacunes possibles :
(1) l'accessibilité et la rapidité tiers ne peut garantir qu'un tiers serait pousser la limite de vitesse
(2) la disponibilité de MQTT est un problème
Fin [:] ci-dessus de deux façons
Les programmes traditionnels peuvent souvent mettre fin à [nuage] [nuage en se liant à la fin] [fin] pour résoudre combinaison de nouvelles en temps réel pour pousser la question.
Troisièmement, les détails de la plate-forme de messagerie instantanée universelle
Analyse d'affaires et de l' abstraction: le conducteur, utilisateur, affaires, service à la clientèle sont « en ligne » affaires
[Optimisation nuage Fin]
Les solutions traditionnelles de problèmes potentiels : http sondages inefficaces, les performances du serveur Web limité
Optimisation des TIPS : message Internet en utilisant tcp lien longue (ci - dessus)
Les problèmes potentiels : la plate - forme de messagerie app-serveur couplé avec la ligne de service, commutateur de type ligne d'affaires cas besoin de distribuer le message délivré, la nouvelle ligne de l' entreprise a besoin d' appel RPC (ci - dessus)
Optimisation des TIPS : en utilisant le découplage message de bus msg-file d'attente (voir ci - dessous)
Peut être vu, l'utilisation du bus de messages, le nouvel expéditeur du message, la plate-forme de message seulement besoin de configurer la correspondance entre les thèmes du type de message et bus de message, le nouveau consommateur-serveur d'applications peut souscrire à de nouveaux sujets et de mettre en œuvre la plate-forme de service de messagerie découplage.
[Optimisation Cloud-to-end]
Problèmes potentiels : problèmes de disponibilité avec limite de vitesse tiers
Conseils d' optimisation : la plate - forme de messagerie pour fournir leur propre cluster, fournissant l' interface RPC, et "cloud-to-end", la chaîne de nouvelles
A noter ici est que le « nuage final » à l'aide d'un bus de message, afin d'affaires découpler. "Cloud-to-end" utilisé comme interface RPC, mais aussi au service découpler, le message Push nouveau parti message Internet sans changer le code.
Problème potentiel : de nombreux conducteurs poussent commandes sans réponse, saisir un seul taux plus faible que prévu
Conseils d' optimisation : l'introduction de l' état de stockage en temps réel, seul l'utilisateur « en ligne » état Nsappuyez un message
[Fin] optimisation
Si les entreprises associées, directement transmise par la voie de tcp, si le trafic lié, l'expéditeur d' abord à une livraison « fin nuage » (par MQ), puis en inversant le serveur de services de processus d' une livraison « cloud-to-end » (RPC) à destinataire .
Problème potentiel : Si le destinataire n'est pas en ligne comment faire
Conseils d' optimisation : DB stockage augmentation des messages hors ligne
Les problèmes potentiels : un environnement de réseau sans fil souvent instable (par exemple, de l'ascenseur hors du réseau), le message est souvent perdu
Conseils d' optimisation : la plate - forme de base de données nouvelles reçoit le message premier étage, après que le récepteur reçoit la couche d'application ACK puis supprimé pour assurer qu'aucune perte
Comme la figure, le procédé de distribution de messages dans son ensemble (figure 2 le présent mémoire, l'un des plus importants.).:
(1) Envoyer un message à l'Internet de transmission de message
(2) la plate-forme Premier message DB atterrissage un message
(3) un message expéditeur du message de réponse de succès de transmission Internet (dans ce cas, et indépendamment du fait que le bénéficiaire a reçu)
(3) En même temps, parallèlement à la livraison du message au destinataire (sinon en ligne pour le stockage hors ligne)
(4) le destinataire a reçu l'accusé de réception du message de couche d'application
(5) supprimer la plate-forme de messagerie de messages
(6) récepteur Publicité ACK a déjà traitée avec succès
On peut voir en utilisant la « couche l'application des messages ACK pouvant résoudre le problème de la »
Les problèmes potentiels : l'expéditeur ne reçoit pas la troisième étape de la plate - forme de messagerie répondre , comment faire?
Optimisation des TIPS : retransmission de l'émetteur (sans état du serveur)
Les problèmes potentiels : Le destinataire a reçu une retransmission de messages redondants de la façon de faire?
Optimisation des TIPS : récepteur de déduplication (peut être fait sans état serveur complètement, le message de livraison peut être simplement)
Architecture en couches [Description]
architecture en couches figure du système tel que décrit ci - dessus (ici, le plus important de la figure 2 bis.), l'ensemble de plate-forme de messagerie système se compose de:
(1) dans le message de plate-forme APP msg-sdk, fournit une interface au beau APP
(2) msg-porte, portail TCP plate-forme ensemble d'accès de message, en maintenant la connexion à long tcp, l'attaque initiale et de la défense, chiffrement et le déchiffrement, la compression et la décompression
La partie (3) msg-logique, l'ensemble logique de plate-forme de traitement de message
(4) Redis, la disponibilité de stockage en cluster Redis utilisateurs en ligne en ligne / hors ligne, et l'accès utilisateur qui msg-porte (si en ligne)
(5) DB, message stocké déconnecté
Plusieurs plate - forme non messagerie section d'affaires :
(1) APP: le service du parti APP, il peut y avoir une pluralité, par l'Internet pour accéder au message msg-sdk
(2) Mq: message Internet à la fête "nuage final" au serveur de service envoie un message via mq
(3) application-serveur: le côté d'extrémité arrière de l'entreprise, il peut y avoir une pluralité de réception de message de mq « nuage end » en envoyant le message « nuage de fin » par l'intermédiaire du RPC
[Description de l'interface prévu à l'extérieur]
plate - forme de messagerie Interface pour le service fourni par un petit nombre très commun interface.
msg-sdk pour l' APP fournit une interface de base sont les suivants :
(1) connexion: message d'accès Internet
(2) déconnexion: plate-forme de messagerie de déconnexion
(3) C2S: envoi client au serveur message "fin nuage"
(4) c2c: l'envoi d'un client à un message "fin"
(5) get-offline-msg: ôtant un message
(6) sur-msg-recieved: un message de rappel reçu interface de rappel
plate - forme de messagerie App-serveur pour fournir une interface de base sont:
(1) s2c: serveur d'envoi au client "cloud-to-end" un message
De l' autre côté de l' entreprise n'a pas besoin de préoccupation est l' interface interne entre la plate - forme de messagerie et msg-sdk sont:
(1) keepalive: pour la connexion avec la plate-forme un message de maintien msg-sdk (côté service transparent)
(2) c2c-ack: une interface utilisateur de la couche d'application ack interface c2c (partie d'affaires transparent)
[Comment mettre en œuvre le système de chat multicomptes]
Comme il est une plate-forme de messagerie commune, comment envoyer un message à travers le système de compte il (qui est, comment discuter avec Want Want qq)?
Solution : UID est plus utilisé comme une clé pour exécuter l'ensemble du système, tout en utilisant le domaine + uid, ou appid + uid comme la clé de l'ensemble du système
point de couplage potentiel : tel est le cas, la logique de traitement, la messagerie interfaces de plate - forme nécessite commutateur de connexion cas (domaine ou AppID) à différentes authentification de connexion, et le service a un certain couplage, mais la nouvelle fréquence du système de compte est faible, que nouveau faible type de message
[Conception du protocole Extensible]
APP est essentiellement l'architecture cs, une fois mis en version, il est difficile de récupérer, il faut l'architecture du système beaucoup plus compatible pour bs difficiles, comment les nouvelles fonctionnalités, tout en facilement compatible avec l'héritage historique APP il?
(1) Comment augmenter la commodité de l'interface?
Solution : + protocole utilise des inclusions d' en- tête de longueur fixe devient long, en utilisant le numéro de commande de nouvelles interfaces pour étendre cmd [ce changement est transparent à la couche de service, est un sujet entre l'Internet msg-sdk de message]
(2) Pour la même interface, la possibilité d'augmenter les paramètres sans affecter les anciennes versions de l'APP?
Solution : en utilisant un protocole de sérialisation extensible, par exemple protobuffer [protobuffer cette chose ligne claire de l' entreprise]
(3) Pour le côté commercial, il existe de nombreux types de type de message, il y a beaucoup de besoins d'affaires complexes, comment faire en sorte que tout l'évolutivité des entreprises, sans augmenter la complexité de la plate-forme de messagerie et compatible avec les anciennes versions APP?
Par exemple, les secteurs d'activité peuvent avoir une telle demande potentielle:
a) l'exploitation d'un message push
b) la police de support de contenu du message push, taille de la police, gras, couleur
c) l'appui à l'image des messages push
d) de soutien aux entreprises « choc fenêtre » et « l'autre partie est de taper ...... » et d'autres besoins
Solution : Utilisez le protocole évolutif du corps de message (pour la messagerie plate - forme transparente), tels que XML / JSON évolutive pour supporter plusieurs types de message, et compatible avec les anciennes versions APP
<Msg>
<Type> 1 </ type>
<Fond> Italique </ font>
<Content> bonjour, monde! </ Content>
<Pic> http://pic.daojia.com/hello.jpg </ pic>
</ Msg>
Avec ces nouvelles de l'accord, afin d' assurer que: évolutivité, compatible avec les anciennes versions, plate - forme transparente pour la messagerie et de nombreux autres avantages, il est fortement recommandé
Quatrièmement, les détails de l'architecture distribuée
Désolé, le temps de rappel d'accueil est venu pour une évolutivité d'architecture distribuée, l'équilibrage de charge, la disponibilité, les problèmes de cohérence à la ligne et de partager, de le mettre un diagramme d'architecture distribuée:
<Annonce>
Si vous lisez loin, indiquant que le message est encore un peu d' intérêt pour la plate - forme, la plate - forme 58 équipe de nouvelles de la maison seulement un étudiant, la pénurie de personnes avec de nobles idéaux invités à se joindre .
Quelques explications : la base de Pékin, l'équipe de base, axée sur la technologie, la direction Java, et une équipe de 58 Shen Jian
Joignez - vous à des façons : (1) message direct dans l'article ci - dessous (2) répond « recrutement » à se joindre à l'acquisition du numéro de clé publique
</ Publicité est terminée>
V. Résumé
(1) la distribution des messages "nuage final" : canal de messages TCP, le trafic de bus un message Découplage
(2) la remise des messages « à la fin du nuage » : fourniture d' une interface RPC, l' introduction du stockage d'état
(3) « bout à bout » étapes de livraison de messages ci - dessous :
(4) remise de messages « bout en bout » compétences
a) un message hors-ligne pré-existante contre la perte
b) mécanisme ACK pour garantir jusqu'à
c) retransmet de l'expéditeur du message
d) un message de partie de réception déduplication
(5) peut être étendue conception du protocole
a) en-tête de longueur fixe, le paquet de longueur variable de celui-ci à tout moment pour augmenter l'interface
b) une séquence d'étalement d'interfaces de protocole sont soumis à des changements
c) le protocole de message peut être étendu, prêt à augmenter les types
(6) en charge les comptes de discussion inter-systèmes (plusieurs domaines) : Utilisez le domaine (ou appid) + uid comme une clé complète
(7) architecture en couches comme sur la figure.