2019/06/05 M évolution de l'architecture du site Web et optimisation du système de mise en cache

Auparavant, le programme de génération inverse à 7 couches nginx, ces applications ont également haproxy
nginx, qui peut réaliser à la fois un proxy inverse à 4 couches et une génération inverse à 7 couches, et après la génération inverse, le module en amont correspondant peut également être complété L'effet de l'équilibrage de charge vise
désormais principalement la génération de la couche application, en utilisant nginx pour réaliser la génération du module proxy, il y a une commande dans le module proxy appelée proxy_cache_path,
proxy_cache_path, spécifiez le chemin, (quelques niveaux de chemin, combien de sous-répertoires, 1, 2 , 2, Il y a deux parties dans le cache, une
partie est dans la mémoire, c'est la clé, la table de hachage sur le disque et l'autre partie sur le disque. Les données sur le disque sont le contenu correspondant un à un
dans le cache. Réduisez les liens dans l'ensemble du processus de service pour obtenir des fonctions accélérées.
Lorsqu'un client accède à votre service Web, s'il n'y a pas de cache, il atteindra le serveur proxy inverse pour la première fois, et le serveur inverse atteindra à nouveau le serveur proxy via le réseau. Pour obtenir le contenu dont l'utilisateur a besoin, cet hôte doit également voir s'il est statique ou dynamique. S'il s'agit d'un contenu statique, il doit être Après le disque IO, arriver à
le contenu demandé par l'utilisateur, en réponse au paquet hôte proxy, donc en général sera plus d'un processus de réseau IO, IO disque inévitable, ce réseau IO peut consommer beaucoup de temps, si elle est d'obtenir une dynamique Contenu, il peut y avoir un processus d'exécution au milieu, même s'il ne s'agit pas de génération inverse, ce serveur doit être exécuté pour obtenir le contenu. Cette étape est indispensable. Pour le serveur principal, pour faire l'équilibrage de charge, cette IO réseau n'est pas non plus possible Pour éviter, il est inévitable que le processus d'exécution prenne un certain temps.
Avec le cache, ces processus peuvent être omis dans une certaine mesure. S'il s'agit d'un contenu dynamique, le processus d'exécution peut également être omis. Cela peut donc considérablement gagner du temps.
Si l'utilisateur est une méthode de requête à obtenir, ou s'il n'y a pas de modification, le contenu original peut être utilisé. Cette méthode de cache peut en effet améliorer la perception de l'utilisateur des performances

Insérez la description de l'image ici
** La raison pour laquelle le cache peut prendre effet dépend principalement du fait que le programme a des caractéristiques locales.L'opération à
long terme a une localisation temporelle: après avoir accédé à une donnée, elle peut être consultée à nouveau bientôt. Base)
**
Insérez la description de l'image ici
Localité spatiale: Généralement, lorsqu'un élément de données est accédé, les données environnantes peuvent également être consultées par la suite
, et la méthode de préchargement peut être utilisée. Lorsqu'un accès est effectué, les données environnantes sont également mises en cache en mémoire Vous pouvez ensuite accéder aux

Insérez la description de l'image ici
Insérez la description de l'image ici
raisons pour lesquelles vous souhaitez utiliser le cache. S'il y a trop de liens intermédiaires, chaque lien réduira inévitablement les performances et affectera la perception des utilisateurs. Par conséquent, le contenu dont ces utilisateurs ont besoin est envoyé à l'endroit le plus proche de l'utilisateur pour améliorer les performances. L'amélioration est évidente.
Le cache utilisé ici n'est pas seulement le cache utilisé par notre serveur proxy inverse (cache serveur cache, cache public), en fait, chaque navigateur a un cache (cache privé utilisateur cache privé)
cache a plusieurs niveaux le plus proche de l'utilisateur, le mieux

Insérez la description de l'image ici
est le site lui - même est localisée zone chaude, donc il suffit de laisser le cache local Le renforcement
Insérez la description de l'image ici
de MySQL est concerné, est de résultats de la requête de cache mettre en cache instruction select, qui est le flux de données, et le site de cache (plus d'une image, un fichier css, la page des données)
mysql et certaines classes de mise en cache des données généralement appelées données ceche
et pour les sites Web, le cache est généralement appelé la
logique de cache du cache de pages est la même en
raison du concept de zone chaude, de sorte que le cache général ne mettra pas en cache l'ensemble des données, la plupart suivent la règle 2,8, 20% Les données, qui transportent 80% de l'accès, et les 80% restants portent 20% de l'accès, donc 20% des données sont mises en cache dans le système, généralement seules les données de la zone chaude sont mises en cache
Il est impossible de déterminer quelles données se trouvent dans la zone active, de sorte que le cache ne prendra pas effet immédiatement après la mise en ligne et n'atteindra pas immédiatement le meilleur mode de fonctionnement. Il doit être approximativement après un certain temps, la plupart des données de la zone active peuvent être mises en cache cache chaud procédure warm up-up ,

Insérez la description de l'image ici
mais le processus est trop long, il sera une mesure du débit de pression avec M. réplication pour la mise en cache, la pression mesurée d'échanger des données en continu, est laissé aux données de la zone chaude, le processus d'échauffement, la nécessité de mise en œuvre manuellement
Insérez la description de l'image ici
pour certains compilera les résultats de l'application peut également être mis en mémoire cache
tels que php il opcode, généralement entre deux pas le rythme avec le temps, à la fois pour résoudre le problème avec le cache, le cache presque partout dans les
données du cache doit être inférieur au nombre d'espace de données d' origine

Insérez la description de l'image ici
cache Il est plein et doit être nettoyé. Un algorithme bien connu est LRU. Le moins récemment utilisé.
Comme il s'agit d'un cache, ces données ne doivent pas être valides pendant une longue période. Les
données d'origine peuvent également être modifiées. À ce stade, le cache d'origine doit être invalidé, sinon le cache répond à l'utilisateur et non aux données les plus récentes
(pour les données mysql) , Le cache doit être mis à jour dans le temps)
Mais pour les sites Web, le nouveau css, ma façon d'afficher les marchandises, mais juste une autre façon d'afficher les marchandises, pour le moment de mettre à jour le cache dans le temps, ce n'est pas nécessaire, vous pouvez permettre de ralentir Un peu «
après expiration, il existe une logique de nettoyage du cache pour nettoyer» le

Insérez la description de l'image ici
cache manqué pour de nombreuses raisons,
1. Le premier accès, pas d'historique avant (échauffement manuel)
2. Le cache est enregistré, mais le temps de cache est très court, la prochaine visite Auparavant, il était effacé par l'expiration (augmentation de la durée du cache pour résoudre le problème, si les données d'origine changent trop fréquemment, l'efficacité d'accélération du cache est généralement très faible)
3. L'espace de cache est trop petit, un grand nombre d'éléments de cache, basé sur l'algorithme LRU Nettoyé, (vous devez augmenter l'espace de cache)
Par conséquent, il est généralement mis en cache pour lire plus et écrire moins. Si le taux de réussite du cache est trop faible, cela introduit un problème (vérifiez d'abord le cache, le cache manque, puis recherchez-le plus tard, il n'y a plus d'étapes, mais plus d'étapes
si La valeur du coût du cache est inférieure au temps gagné, puis le cache doit être retiré) Le

Insérez la description de l'image ici
Insérez la description de l'image ici
taux de réussite doit être compris entre 0 et 1, le niveau est bon et le niveau faible, et il n'y a aucune mesure du
taux de succès de page standard (un total de 800 pages, Il y a 40 caches, et le taux de réussite de ces 40 pages est très élevé, 90%. Il arrive que ces pages soient de très petite taille. Celles qui sont manquées sont souvent demandées, mais le volume est très important. Dans cet état, les économies Il est également limité) en
fonction de la taille de la page, en fonction du nombre de pages pour mesurer
presque tous les caches sont similaires au

Insérez la description de l'image ici
cache est une structure à plusieurs niveaux, tout comme la génération inverse, chaque niveau de génération inverse ouvrira le cache
Insérez la description de l'image ici
, le serveur doit donc spécifier ceci Les données peuvent-elles être mises en cache publiquement, ou uniquement les données mises en cache en privé?
Pour les informations privées, avec authentification et autorisation, les cookies, à l'
exception de ceux-ci sont généralement des données publiques, mais pas nécessairement Les cookies avec des cookies sont tous privés. Après la connexion, vérifiez le produit et les informations de description du produit ne sont pas des données privées.
Pour l'administrateur du cache, il est nécessaire de comprendre ce qui est privé et public.

Insérez la description de l'image ici
Pour les services Web, tous les caches sont un proxy
Cache proxy (demande de l'utilisateur, le cache n'est pas disponible, le serveur de cache doit demander au serveur de vous aider à obtenir les données, puis les envoyer au client)
Il existe également un cache appelé bypass (accès utilisateur au cache, si le hit revient directement, pas de hit, Le client doit trouver le serveur d'origine par lui-même. Après l'avoir trouvé, c'est au client de décider de le mettre en cache. Comme ce serveur de cache, les données mises en cache ne sont pas décidées par le client lui-même (service Web, tous les caches du protocole http) Ce sont tous des proxys, mais les proxies ne sont pas mis en cache, mais tant que les caches sont des proxys)
Les exigences latérales sur le client deviennent plus élevées (généralement de bons produits rendent les utilisateurs dupes, le client abandonnera parce que vous êtes difficile à utiliser, memacached, est un tel cache, un serveur de cache pur, pas un proxy)

Insérez la description de l'image ici
Insérez la description de l'image ici
La capacité de mise en cache de Vanish n'est pas comparable à nginx, mais la quantité de concurrence est faible, donc lors de la construction d'un site, le vernis et nginx seront utilisés ensemble.
Pourquoi ne pas utiliser squid (la relation entre le vernis et le squid est comme la relation entre nginx et httpd, l'une est Les produits de l'ère précédente, l'un des produits de l'ère actuelle, tirent pleinement parti des avantages du modèle de programmation de concurrence réseau actuel, comme EPOLL) .Nous
devrions organiser
les demandes des utilisateurs de notre site Web pour aller d'abord à nginx, pour éviter des points uniques, alors utilisez Keepalived est un modèle à double maître. Lors de l'itération
vers le serveur principal, il ne s'agit pas directement d'un serveur Web mais d'une couche supplémentaire. Le serveur de cache
divise les éléments de cache en plusieurs serveurs. Chaque serveur de cache ne transporte qu'une partie des éléments de cache
afin d'améliorer les accès au cache. Taux (URL, planification du cache basé sur l'URL), en utilisant un algorithme de hachage cohérent pour améliorer les accès au cache , Afin de ne pas provoquer une défaillance globale lorsque le nombre de serveurs de cache changé
serveur cache peut mettre en cache du contenu statique, contenu dynamique , vous devez réfléchir à deux fois, (qui cache de contenu, ce qui ne cache)
ajouter du contenu dynamique n'est pas mis en cache, la définition des services de localisation nginx Lorsque le contenu statique (images, css) est transmis par proxy au serveur de cache

Insérez la description de l'image ici
ou que vous pouvez définir directement ce qui ne peut pas être mis en cache est plus simple.
Pour le contenu dynamique, vous pouvez aller directement à l'hôte d'origine. Index.php
pense que chaque utilisateur est la première fois La demande d'accès doit être acheminée par le serveur de numéro d'origine. Si la vitesse de génération de la page d'accueil est très lente, cela entraînera une mauvaise expérience utilisateur.
Par conséquent, le contenu dynamique doit être statique, et index.html
sépare généralement les sites Web dynamiques et statiques .
css et js sont tous placés sur le serveur de page d'accueil dynamique, et les images sont généralement placées sur le serveur d'images, de sorte que les images sur un site Web sont
environ une douzaine d'unités avec des noms de domaine distincts , qui peuvent transporter près de dix millions. Le niveau pv

Insérez la description de l'image ici
est désormais web2. 0, certaines données fragmentées sont placées dans une base de données relationnelle, l'efficacité est très faible, vous devez utiliser une base de données non relationnelle (comme redis, mongodb)
Insérez la description de l'image ici
système de file d'attente de messages kafka, twitter en interne, les messages véhiculés chaque jour sont des milliards de niveaux Utilisez le
petit service Kafka et utilisez votre propre solution. Vous n'avez pas besoin d'obtenir délibérément un kafka ou similaire.
Maintenant, cette architecture semble parfaite, mais que devez-vous faire en cas de problème avec le nœud.
Donc, la première étape de l'exploitation et de la maintenance Assurez-vous que notre système doit être normalisé, la
version du système en clair doit être cohérente, la version du programme doit être cohérente, l'organisation du chemin doit être cohérente et une bonne cohérence peut être obtenue.
Cette étape consiste à effectuer un bon travail de surveillance, chaque composant de l'ensemble de votre système a besoin faire un bon contrôle et d' alarme emploi après la découverte du défaut informera la personne à la réparation du
système de surveillance ne peut identifier les problèmes et résoudre les problèmes ont également besoin de
résoudre les besoins de problèmes (mauvais pour un nouveau système, il faudrait installer le système, les programmes installés, fournir de l' énergie pour démarrer le service, puis laissez - le rejoindre le planificateur, le service continu)
adresse IP peut changer, mais le nom d'hôte peut être le même Nous avons donc besoin d' un serveur DNS interne
cette fois , vous devez configurer un serveur pour héberger tout votre environnement tout, chaque hôte de prétendre le programme, fournissant ce fichier de configuration, les services actifs , etc. sont définis dans le serveur qui est bon , Il peut être le même que votre système de surveillance périodiquement, en contrôlant si chacun de vos hôtes se trouve dans la cible souhaitée. (Si un service est démarré et si un certain fichier de configuration est cohérent) Vous pouvez forcer chacun de vos nœuds à installer le logiciel, copier le fichier de configuration, démarrer le service et

Insérez la description de l'image ici
surveiller le système de configuration s'il trouve un défaut. Configurez ensuite la surveillance des réparations,
Si vous ne voulez pas modifier manuellement le serveur , il est un moyen simple de nuage, tous les serveurs peuvent utiliser des machines virtuelles à utiliser des machines virtuelles, panne de la machine virtuelle n'a pas d' importance, il suffit de supprimer le problème se produit, tant que les données ne sont pas locales, créer une nouvelle instance directement, continuer à
avoir Une fois le cloud installé, il est toujours très difficile d'installer le système et de déployer le système. Tout comme le programme de liaison, il existe de nombreuses dépendances, mais si le programme python est déployé, cette dépendance n'est pas si facile à résoudre (divers modules, divers La bibliothèque et divers pams tiers doivent être installés. Cette relation de dépendance est très compliquée à résoudre. Si vous n'accédez pas à Internet, il est probable que certains packages d'installation ne puissent pas être installés. Pour les utilisateurs qui installent le système, c'est un grand défi. En cas de problème, une seule application et le package dont elle dépend peuvent être regroupés dans un fichier image, qui est directement démarré en fonction de ce fichier image, conteneur), donc après le fonctionnement du système, il ne s'agit plus d'une seule opération, mais d'un programme et d'un conteneur. Avec toutes les dépendances peut résoudre
le besoin d'implémentation manuelle de dooker
Le cloud est moins dépendant des capacités de création de réseau sous-jacentes, il est donc généralement recommandé aux petites entreprises d'utiliser le cloud public
comme étape manquante, comment pousser leur site Web au seuil de l'utilisateur, CDN, résolution de noms de domaine à divers endroits, et le serveur obtenu est absent récente adresse du serveur de cache

Insérez la description de l'image ici
si aucun nom CDN, CDN lancera une demande de lien vers votre site, ce qui signifie que le site peut avoir pour cent de la pression par 8090 CDN transporte
Insérez la description de l'image ici
Si CDN a raccroché, raccroché votre salle de serveurs, vous Vous devez faire une salle informatique dans un endroit différent et faire de la redondance
. La construction de l'ensemble du système basé sur doocker, appelée conteneurisation, peut vraiment réduire la complexité de
nos travaux d' exploitation et de maintenance. Lorsque nous effectuons l'ensemble du site, nous devons effectuer une analyse de fonctionnement et de maintenance. Il existe un système de moteur de recherche (ELK).
Il peut y avoir un ensemble de données avec une grande quantité de données, qui doit être affiché en temps réel, et un système de traitement de flux de données volumineuses (strom)

Insérez la description de l'image ici
. Le site officiel de Varnish
Insérez la description de l'image ici
Dans la version HTTP 1.1, il existe deux protocoles de mise en cache, la logique de cache expirée, 2. La condition est que la demande, le contenu du cache expire ne se rendra pas immédiatement sur le serveur principal pour demander des données, demandez d'abord au serveur principal s'il doit modifier Les modifications continuent d'être utilisées et le cache est mis à jour pour un autre cycle de vie)
peut réduire considérablement la pression sur le serveur principal

Publié 252 articles originaux · Likes6 · Visites 60 000+

Je suppose que tu aimes

Origine blog.csdn.net/qq_42227818/article/details/90938729
conseillé
Classement