Disponibilité et les performances d'un seul point d'optimisation de l'architecture du système

Tout d'abord, la demande d'origine

Il est évident que l'architecture exige une haute disponibilité, pourquoi un seul point du système?

Réponse: maître unique point de conception, va grandement simplifier la conception du système, sans parler peut parfois éviter un point

 

Il y aura un seul point où la scène? Regardez d'abord une infrastructure Internet typique de haute disponibilité.


Une infrastructure Internet haute disponibilité typique:

(1) couche client , cette couche est navigateur ou APP, la première étape pour accéder au serveur DNS, un nom de domaine pour obtenir nginx IP de réseau externe

(2) la couche d' équilibrage de charge , nginx est l'entrée de l'ensemble du serveur, il est responsable du travail d' équilibrage proxy inverse et de la charge

(3) au niveau du site , de la couche serveur web, typiquement tomcat ou apache

(4) le niveau de service , niveau de service, généralement Dubbo Thrift ou de fournir des services dorsaux appel RPC

(5) une couche de données , et comprenant un cache db, typiquement séparé de la copie maîtresse de l'architecture d'écriture db

Dans cette architecture Internet, la couche de site, la couche de service, la base de données de la bibliothèque peut être par le biais d'une redondance pour assurer une haute disponibilité, mais au moins

(1) Couche de nginx est un point unique potentiel

(2) base de données principale de la bibliothèque d'écriture est également un point unique potentiel

 

Autre exemple l'architecture GFS (Google File System).


l'architecture système GFS où il y a si peu de rôles:

(1) client , appelle les initiés de fin de lecture et d'écriture des fichiers

(2) Maître , qui est un point de service unique, il a une carrière mondiale, fichier maître méta informations

(3) morceau-serveur , le montant réel du serveur de fichiers de stockage

Ce système, maître est aussi un seul point de service, Plan-reduce système a un rôle de coordination globale similaire du point unique maître.

 

conception de l'architecture système, comme nginx, db-maître, gfs-maître d'un tel point de service unique, il y aura un problème, quelles solutions pour l'optimiser, c'est un problème abordé dans cet article.

 

En second lieu, il y a le problème de l'architecture en un seul point

système de points unique en général, il y a deux grands problèmes:

(1) non-disponibilité : Comme il est un seul point, l' événement principal de l' échec, le service sera affecté

(2) les goulots d'étranglement : Comme il est un seul point, ne pas une bonne évolutivité, la performance du service il y a toujours une limite, la limite supérieure d'un point unique de la performance est souvent limitée par la performance de l'ensemble du système

 

Ensuite, jetez un oeil à ce que signifie l'optimisation pour optimiser les deux problèmes mentionnés ci-dessus

 

Trois, un seul point d'ombre maître de problèmes de disponibilité pour résoudre

shadow-maître est une des solutions technologiques très communes pour résoudre le problème d'un seul point de disponibilité.

« Shadow maître », comme son nom l'indique, lorsque le service normal, il est juste un maître d'ombre d'un seul point de défaillance dans le maître, l'ombre maître deviendra automatiquement un maître, de continuer à fournir des services.

shadow-maître peut résoudre le problème de la haute disponibilité et le basculement est automatique, sans intervention humaine, mais il est le manque d'utilisation des services de ressources réduites de 50%, l'industrie keepalived + façon vip pour réaliser ce type souvent utilisé High Point simple disponibilité .

 


GFS au maître, par exemple, lorsqu'un maître normal:

(1) client se connecte maître normale, ombre-maître ne fournit pas de services

(2) la détection du mécanisme de survie entre le maître et l'ombre-maître

(3) shadow-maître maître et ont la même adresse IP virtuelle (Virtual IP)

 


Lorsque vous trouvez exception maître:

shadow-maître deviendra automatiquement le maître de haut, le mécanisme IP virtuel pour assurer que le processus est transparent pour l'appelant

 

En plus de GFS et MapReduce système maître maître, nginx peut également être utilisé de manière similaire pour assurer une haute disponibilité, la base de données principale maître de la bibliothèque (bibliothèque principale) peut également être utilisé de manière similaire pour garantir une haute disponibilité, mais certains endroits devraient prêter attention aux détails:


D'un multi-maître traditionnel, lire et écrire l'architecture séparée db, haute disponibilité ne peut garantir la bibliothèque de lecture, une haute disponibilité est garantie bibliothèque d'écriture, afin d'assurer la bibliothèque d'écriture de haute disponibilité, vous pouvez également utiliser l'ombre maître mentionnée ci-dessus mécanisme:


(1) ensemble de deux bibliothèques principales bis mode maître mutuellement synchronisés

(2) une bibliothèque principale fournissent généralement que des services implique, ombre-maître ne sera pas synchronisé avec les données de base

(3) anormale, dériva vers l'autre principale bibliothèque IP virtuelle, les bibliothèques maître d'ombre continuent de fournir des services dans la principale

Notez que, en raison de la nature particulière de la base de données, le retard de synchronisation de données requises, si la synchronisation des données ne sont pas encore terminée, le flux est tangente à l'ombre maître, peut entraîner une petite quantité d'incohérence des données.

 

Quatre, ce qui réduit l'interaction avec un seul point, un point unique de la direction centrale de l'optimisation du système

Puisque nous savons qu'il ya une limite de performance d'un seul point, point unique de performance (par exemple, dans le maître GFS) peut devenir un goulot d'étranglement dans le système, puis réduire à interagir avec un seul point, il est devenu le seul point de direction de base d'optimisation du système.

Comment réduire l'interaction avec un seul point, deux méthodes communes mentionnées ici.

lot écrit

l'écriture par lots est une façon courante pour améliorer la performance d'un seul point.

Par exemple, en utilisant une base de données exemple génération unique point d'écriture « ID générateur » faire:


(1) côté commercial besoin ID

(2) en utilisant une base de données unique point de génération écrivain id increament automatique et renvoie l'ID

Ceci est un exemple très commun, de nombreuses entreprises qui est ainsi produit ID, qui utilise les caractéristiques de la base de données pour écrire un seul point, pratique, aucun frais de développement supplémentaires, est un programme très beau.

Problème potentiel: la limite supérieure d'identité concurrente de génération, en fonction des performances d'écriture limite d'une seule base de données de points.

Comment améliorer la performance? lot écrit

 


(1) au milieu d'un service, retirer chaque ID de la base de données 100

(2) côté commercial besoin ID

(3) identifiant un service de retour direct 100 1, 100 été distribué, puis accéder à la base de données

En conséquence, chacun attribué 100 écriront une base de données, la performance peut être considérée pour améliorer l'ID d'allocation 100 fois.

 

la mise en cache côté client

la mise en cache côté client est également un procédé à un seul point et le nombre d'interactions, d'améliorer la performance globale du système est réduite.

Ou dans le système de fichiers GFS comme exemple:


(1) client GFS appelle le client à shenjian.txt d'accès, vérifiez d'abord le cache local, le manque

(2) client d'accès aux fichiers dans le maître a demandé où, maître dit client sur chunk3

(3) client pour stocker shenjian.txt de cache local enregistré sur chunk3, puis lire et fichiers d'écriture

(4) le client à côté des fichiers d'accès à partir du cache local pour trouver les enregistrements correspondants pas besoin de demander un maître, vous pouvez accéder directement au morceau serveur. Si le fichier est déplacé, chunk3 client de retour à dire « pas dans mon dossier ici », client, puis accéder au maître, demande se trouve le fichier du serveur.

 

Selon l'expérience, ce type de cache frappé très, très élevé, probablement (depuis fichier migré automatiquement est un petit événement de probabilité) à 99,9%, et le nombre d'interactions avec le maître réduirait 1000 fois.

 

En cinquième lieu, l'expansion horizontale est un bon programme pour améliorer les performances du système à un seul point

Peu importe comment écrire en vrac, la mise en cache côté client, un seul point, après tout, autonome, ou une limite de performance.

Trouver des moyens d'étendre horizontalement, pour éliminer un seul point, en théorie, être en mesure d'améliorer le système de système infini.

Avec nginx par exemple, comment l'échelle horizontale il?


La première étape de la résolution DNS, ne peut renvoyer un réseau externe nginx IP Pourquoi? La réponse est clairement non, « le vote DNS » technique support pour le serveur DNS renvoie un nginx IP de réseau externe différent, afin que nous puissions atteindre le niveau d'expansion nginx charger la couche d' équilibrage.

 


partie de serveur DNS, une pluralité de domaine IP peut être configuré, chaque fois que la demande de résolution de DNS, renvoie une interrogation des différents IP, l'expansion peut être obtenue nginx horizontal, la couche d'équilibrage de charge d'extension performance globale.

 

Un seul point de la bibliothèque de base de données d'écriture est la même raison, dans le cas d'une grande quantité de données, vous pouvez diviser le niveau, pour améliorer les performances d'écriture.

 

Malheureusement, pas tous les scénarios d'affaires peuvent être divisés horizontalement , par exemple, le nombre d'entreprises de pointe, produits peut être faible, la quantité de données dans la base de données, il ne peut pas être divisé pour améliorer le niveau global du système de pointe d'écriture de performance ( 100 bibliothèque ne peut pas enregistrer, non?).

 

VI Résumé

Le sujet d'aujourd'hui de la discussion ici, beaucoup de contenu, en prenant un temps précieux profondément coupable, a estimé que la plupart ne peuvent se rappeler, au moins quelques points à retenir que:

(1) la présence de problèmes de système de point unique : problèmes de disponibilité, les goulots d'étranglement

(2) Shadow-maître est une solution commune au problème d'un point unique de solutions de disponibilité du système

(3) coopérant avec un seul point de réduction , il est la présence de la direction centrale d'un point unique de l' optimisation du système, écrire des lots de méthodes commun, la mise en cache côté client

(4) le niveau d'expansion est un bon programme pour améliorer les performances du système à un seul point

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

Je suppose que tu aimes

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