twitter Architecture du système

twitter analyse de l'architecture du système

(A) l' activité principale twitter
twitter activité principale, et que suite à la suivre:
(1) l' attention suivantes-
dans la page d'accueil personnelle, vous verrez un message vous suivez les gens publiés (pas plus de 140 mots), qui suit la processus;
(2) l' attention followed-
vous postez un message, suivez votre peuple verra ce message, il est suivie dans le processus;

(B) la logique métier twitter de
la logique métier est pas compliqué twitter
opérations suivantes, vérifier qui suivent le message, et qui a publié,
l'entreprise a suivi, de front-end back-end du scrutin, voir suivre les gens ont pas de nouveaux messages, il est mis à jour (mise à jour en temps dépend du temps de vote);

(C) (architecture à trois niveaux) l' architecture à trois niveaux
architecture du site Web, l'approche traditionnelle est une structure à trois niveaux, le soi-disant « traditionnel » ne signifie pas « à jour », la technologie immature à la mode, la manière traditionnelle est plus robuste.
(1) la couche de présentation (couche de présentation): apache serveur web , la tâche principale est d'analyser le protocole HTTP, une demande à la couche logique;
(2) une couche logique (niveau logique): mongrel rails de serveur , en utilisant des rails Module prêt, afin de réduire l'exploitation le montant;
(3) la couche de données (couche de données): mysql;

couche de données à venir:
le twitter de base est (1) un utilisateur; (2) un message, (3) la relation utilisateur;
autour de ces clés, des données de conception du schéma de la base:
(1) la table utilisateur User
ID, nom, Col , statut, ...
(2) un message de table MSG
MSGID, le aUTHOR_ID, MSG, Temps, ...
(. 3) tableau relation utilisateur relation
ID, following_ids, followed_ids

couche logique :
Lorsqu'un utilisateur émet un message, réalisée de manière séquentielle:
(1) à la table de msg de message stocké;
(2) l'utilisateur de vérifier la table de relation, savoir followed_ids,
acquis dans l'état utilisateur followed_ids; (3).
(4) la ligne ids , appuyez sur le message dans une file d' attente file d' attente;
(5) dans la file d' attente msg, ids mettre à jour la page d'accueil,
il y a une file d' attente à l' utilisation, il y a plusieurs façons d'y parvenir, comme apache mina, twitter propre équipe a réalisé un Kestrel.

Présentation de couche :
une couche principale a deux fonctions:
(1) traiter le protocole HTTP (processeur HTTP);
(2) du distributeur (répartiteur),
bien sûr, plus qu'un navigateur pour accéder à twitter, il peut y avoir des téléphones cellulaires, en raison de possibles Il existe d' autres protocoles, donc il peut y avoir un autre processeur.

Dans tous les cas, le cadre architectural clair que suit:

Figure 1: schéma Version 1

(D) cache = revenu en espèces qui est égale à la cache
en utilisant une architecture de cache est essentiel pour les grands sites, le site est le temps de réponse de l' utilisateur de connaître les facteurs les plus importants qui affectent la vitesse de réponse est le plus grand ennemi du disque io.
ingénieurs gazouillement croient une bonne expérience pour le site temps de réponse moyen devrait être d' environ 500 ms, le temps idéal est 200-300ms.
Sur l'utilisation du cache, et est une partie importante de l' architecture de twitter avec une architecture de cache clair comme suit:

Figure 2: Avec une architecture de cache version 2

Où cache nécessaire? IO plus fréquente l'endroit, plus besoin de cache.
IO est la base de données les plus fréquemment consultées, les trois tables de base s'il est nécessaire de mettre en mémoire?
approche twitter est de diviser la table, dans lequel chargés les domaines les plus fréquemment consultés cache.
(1) cache vectoriel et la ligne de cache de ligne qui est un tableau de cache et cache
le cache vecteur : msgids de nouveaux messages publiés, liés aux ids de l'auteur, id ces haute fréquence de visite, de les stocker dans le cache de cache appelé le vecteur;
cache ligne : Corps du message lignes de cache,
mémoire limitée, cache vecteur prioritaire, le taux de succès de vecteur résultat réel du cache est de 99%, le cache de la ligne est de 95%;

(2) cache de fragments et cache de page
l' accès des utilisateurs en plus de twitter page (canal web), ainsi que les téléphones mobiles (canal API), alors que la proportion de ces derniers de la circulation totale de 80% -90%.
outre le cache de MySQL, la gravité API de cache sera dans le canal.
L'écran principal de téléphone, un écran est un écran d'un message, il peut être la totalité de la page est divisée en plusieurs locaux, chacun correspondant à un certain nombre de messages local de /, qui est ce fragment.
Grande popularité du fragment de cache de ses pages, vous pouvez lire son communiqué de nouvelles pour améliorer l' efficacité, telle est la mission de cache fragment.
Auteur popularité, les gens visiteront sa page d'accueil, qui est la mission de cache de page.
Les résultats réels, le taux de succès de cache fragment de 95%, cache de page est de 40%.
Bien que le cache de page taux de succès, mais parce qu'il accède à la page d'accueil, l'espace qu'il occupait est grande, influence les uns des autres afin d'éviter deux types de cache, les besoins de cache à déployer sur différentes machines physiques.
twitter Le cache de fragments et cache de page UTILISIEZ memcached.

(3) http accélérateur
canaux web problème de cache doivent être traitées, après analyse, la pression principalement de la recherche de canal web.
Face à des événements inattendus, les lecteurs peuvent rechercher des informations pertinentes, et ne se soucient pas des auteurs de ces informations sont ceux qui ne sont pas de leur propre suivi.
Afin de réduire la pression de la recherche, mot - clé de recherche et de recherche de contenu peut mettre en cache ici, twitter ingénieurs utilisent un vernis.
Fait intéressant, le vernis habituellement déployé dans la couche serveur web, le premier vernis de visite, qui ne se rapporte pas au contenu, il suffit de visiter le serveur web,
ingénieurs twitter met vernis sur le serveur web apache intérieur, parce qu'ils croient opérations vernis complexe, la peur de la paralysie provoquée par l'effondrement du système de vernis, il a adopté ce déploiement conservateur.
twitter pas de taux de succès de vernis public, ils ont affirmé, après l'utilisation de vernis, le point de charge a baissé de 50 toute%.

(E) nécessitent l' isolement inondation
architecture twitter est une autre partie importante de sa file d' attente de messages: l' isolement d' une opération de l'utilisateur, le lissage de débit de pointe.
Lorsque le restaurant est plein, pour les nouveaux clients, bien que sert pas, mais pas fermé, mais maintenant les laisser salon d'attendre.
Lorsqu'un utilisateur accède à Twitter, le reçu est apache serveur web, mais apache ne pouvait pas recevoir un nombre illimité d'utilisateurs.
20 janvier 2009, Obama a prononcé son discours d' investiture, le trafic Twitter monté en flèche, alors ce qu'il faut faire.
Face à pic de crue, comment faire en sorte que le site ne se précipite pas l' effondrement? Rapidement accepté, mais le service retardé.
réception apache de la demande, transmise à Mongrel, Mongrel responsable du traitement proprement dit, apache la main libre pour accueillir l'utilisateur suivant.
Cependant, le nombre d'utilisateurs pouvant recevoir apache est toujours limitée, il est soumis au nombre de apache concurrent peut accueillir le nombre de processus de travail, il n'y a pas regarder de plus près à l' intérieur du principe apache est la suivante:

Figure 3: apache architecture interne

données (Vi) Flux et contrôle de flux
acceptation rapide, le service retardé, juste une tactique dilatoire, pour permettre aux utilisateurs ne recevront pas le (non disponible Service) 503.
la capacité réelle d' inondation se reflète dans l'inondation Flood deux aspects:
(. 1) il y a une énorme grappe memcached Twitter peut inonder une grande capacité;
(2) Twitter Kestrel propre file d' attente de messages, comme moyen de drainage des déversoirs, une commande est transmise (drainage et canaux),
lorsqu'il atteint le sommet, les données de contrôle de flux twitter, les données à une pluralité de machines à évacuer, afin d' éviter une concentration de contraintes, ce qui entraîne une paralysie du système.
Voici des exemples twitter processus internes, en supposant qu'il ya deux auteurs, à travers le message du navigateur, un lecteur lire leurs messages via un navigateur.

Figure 4: flux twitter

(1) Se connecter apache serveur web, apache assign un processus de travail pour ses services, connectez - vous vérifier l'identifiant, cookie écriture, etc .;
(2) télécharger de nouveaux messages écrits, mis en avant l'id auteur, messages, etc. à Mongrel, apache attente Mongrel réponse, sur la page d'accueil afin de mettre à jour, le nouveau message de mise à jour rédigée;
(3) Mongrel après avoir reçu le message, attribuer une msgid, et il a continué sur la tenue id et autres mises en cache de vecteur memcached pour monter,
en même temps, Mongrel laisser vecteur memcached pour trouver l'auteur qui est suivre, s'il n'y a pas dans le cache ira à l'arrière- plan look mysql, incorporant cache,
lecteurs ids retournés au Mongrel, Mongrel mis SMS msgid avec le cache de texte à la ligne memcached;
(4) Mongrel notification serveur de file d'attente de messages crécerelle, chaque auteur et lecteur il y a une file d' attente (pas créer);
Mongrel sera msgid lecteurs dans la file d' attente, ainsi que l'auteur de la file d' attente;
(5) une table Mongrel, il a probablement affaire à un identifiant de file d' attente particulière, il retourne à l'ID utilisateur Ajouter à la fourniture d'informations sur la page d'accueil,
après (6) Mongrel est mis à jour à l'avant de l'attente de la maison pour le apache, apache est de retour Navigateur.

(Vii) de pointe et le cloud computing
précise pas, lorsque le pic de crue ne pouvait transporter, ne peut ajouter la machine.
Machine où ils viennent? équipement de la société de location de cloud computing plate - forme.
Bien sûr, que vous avez besoin de louer du matériel à la pointe, économiser de l' argent ah (question: twitter comment savoir quand est le pic).

(Viii) pousser et tirer de compromis
peut être vu, flux de travail Mongrel:
(1) les ids pertinentes dans le vecteur memcached et la ligne réussite de la libération même de nouvelles memecached, pas responsable de l' affichage de la base de données MySQL,
(2) le msgid concerné même si le message dans la file d' attente de messages Kestrel poussée succès,
Mongrel ne pas utiliser tous les moyens pour informer les auteurs, les lecteurs et les laisser re-pull message.
Les travaux ci - dessus, ce qui reflète le concept de conception architecturale twitter « spin-off » de:
(1) un processus complet sera divisé en travaux sous-processus indépendants, une œuvre de chaque service peut être l' architecture responsable ( à trois niveaux est lui - même un spin-off );
collaboration (2) de multiples machines, le flux de commande et les données de flux éclaircissage, et soulignant la séparation;

twitter processus d'affaires distincts, est un design événementiel, principalement dans deux aspects:
(1) la séparation Mongrel et mysql, l'ancien n'intervient pas directement dans le fonctionnement de MySQL, commandé memcached seul responsable;
(2) télécharger, télécharger séparation logique: Kestrel seulement de passer à travers la file d' attente d'instructions;

Publié 136 articles originaux · a gagné les éloges 6 · vues 1518

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42073629/article/details/104603209
conseillé
Classement