Maison > base de données > tutoriel mysql > le corps du texte

Analyse de cas de base de l'architecture technique des grands sites Web Mysql

WBOY
Libérer: 2023-05-27 14:31:50
avant
1157 Les gens l'ont consulté

7. À la demande : Architecture évolutive du site Web

Extensibilité (Extensibilité) : Fait référence à la capacité d'étendre ou d'améliorer continuellement les fonctions du système avec un impact minimal sur le système existant. C'est le principe d'ouverture et de fermeture au niveau de la conception de l'architecture du système. La conception de l'architecture prend en compte l'expansion fonctionnelle future lorsque de nouvelles fonctions sont ajoutées au système, il n'est pas nécessaire de modifier la structure et le code du système existant.

Évolutivité : fait référence à la capacité du système à améliorer (réduire) ses propres capacités de calcul et de traitement en augmentant (diminuant) l'échelle de ses propres ressources.

A. Construire une architecture de site Web évolutive

1. La plus grande valeur d'un architecte logiciel ne réside pas dans le nombre de technologies avancées qu'il maîtrise, mais dans la capacité de diviser un grand système en N sous-modules à faible couplage. Les sous-modules comprennent des modules commerciaux horizontaux et des modules technologiques de base verticaux.

2. L'idée centrale est la modularisation. Sur cette base, le couplage entre les modules est réduit et la réutilisabilité des modules est améliorée.

B. Utilisez des files d'attente de messages distribuées pour réduire le couplage du système

1. Architecture pilotée par les événements

  • Architecture pilotée par les événements : en transmettant des messages d'événement entre les modules à faible couplage pour maintenir les modules. Elle est faiblement couplée et utilise un message d'événement. communication pour compléter la coopération inter-modules. Les files d’attente de messages distribuées sont couramment utilisées.

  • La file d'attente des messages fonctionne selon le modèle de publication-abonnement. L'expéditeur du message publie le message et un ou plusieurs destinataires du message s'abonnent au message.

2. File d'attente de messages distribuée

  • La file d'attente est une structure premier entré, premier sorti. Les applications peuvent utiliser la file d'attente de messages distribuée via l'interface d'accès à distance pour effectuer des opérations d'accès aux messages, réalisant ainsi un appel asynchrone distribué. .

  • L'application de production de messages transmet le message au serveur de file d'attente de messages via l'interface d'accès à distance. Le serveur de file d'attente de messages écrit le message dans la file d'attente de la mémoire locale et renvoie immédiatement une réponse réussie au producteur de messages. Le serveur de file d'attente de messages recherche l'application de consommateur de messages qui s'abonne au message sur la base de la liste d'abonnement aux messages, et envoie les messages dans la file d'attente de messages au programme de consommateur de messages via l'interface de communication distante selon le principe premier entré, premier sorti. (principe FIFO).

  • Les files d'attente de messages distribuées peuvent être très complexes, par exemple, elles peuvent prendre en charge ESB (Enterprise Service Bus), prendre en charge SOA (Service Oriented Architecture), ou elles peuvent être très simples en utilisant des enregistrements MySQL : le programme producteur de messages traite les messages en tant qu'enregistrements de données Après avoir écrit dans la base de données, le programme consommateur de messages interroge la base de données et trie les enregistrements par horodatage d'écriture, implémentant ainsi une file d'attente de messages distribuée de facto.

C. Utilisez des services distribués pour créer une plate-forme commerciale réutilisable

1. Les services distribués décomposent le couplage du système via les interfaces et différents sous-systèmes effectuent des appels de service via la description de l'interface de Desert Rose.

2. Problèmes avec les systèmes géants : Difficulté de compilation et de déploiement ; Difficulté dans la gestion des branches de code ; Épuisement des connexions aux bases de données ; plusieurs petites applications

  • Répartition horizontale : divisez l'activité réutilisée et déployez-la indépendamment en tant que services distribués. Les nouvelles entreprises n'ont besoin que d'appeler ces services distribués et n'ont pas besoin de s'appuyer sur des codes de module spécifiques


  • 4. Services distribués au niveau des services et de l'entreprise


    Inconvénients : mécanisme d'enregistrement et de découverte volumineux ; moyens de sérialisation XML inefficaces ; communication à distance HTTP relativement élevée ; moyens de déploiement et de maintenance complexes ;

  • Exigences et caractéristiques des services distribués pour les grands sites Web

. Équilibrage de charge, basculement, communication à distance efficace, intégration de systèmes hétérogènes, intrusion minimale dans les applications, gestion des versions, surveillance en temps réel

6. Conception de framework de services distribués : Thrift, Dubbo

D. Structure de données extensible

Utilise. la conception ColumnFamily (famille de colonnes) utilisée dans les bases de données NoSQL.

E. Utiliser une plateforme ouverte pour créer un écosystème de site Web

1. La plateforme ouverte est l'interface d'interaction interne et externe du site Web pour faire face à un grand nombre de développeurs tiers, et le. les besoins internes doivent faire face à de nombreux services commerciaux au sein du site Web.

2. Architecture : Interface API, conversion de protocole, sécurité, audit, routage, processus

8. Imprenable : Architecture de sécurité du site Web

A. Attaque et défense des applications du site Web

1.

L'attaque XSS, également connue sous le nom de Cross Site Script, fait référence à une méthode d'attaque dans laquelle les pirates altèrent les pages Web, injectent des scripts HTML malveillants et contrôlent le navigateur de l'utilisateur pour effectuer des opérations malveillantes lorsque les utilisateurs parcourent des pages Web.

Un type d'attaque est un type de réflexion. L'attaquant incite l'utilisateur à cliquer sur un lien intégré avec un script malveillant pour atteindre l'objectif de l'attaque.


  • L'autre type d'attaque est une attaque persistante. Attaque XSS. Le pirate soumet un lien contenant un script malveillant. La demande est stockée dans la base de données du site Web attaqué. Lorsque l'utilisateur parcourt la page Web, le script malveillant est inclus dans la page normale pour atteindre l'objectif de l'attaque. Il est souvent utilisé dans les applications Web telles que les forums et les blogs.

  • Les mesures préventives incluent la désinfection et le filtrage des caractères dangereux, tout en interdisant à la page JS d'accéder aux cookies avec l'attribut HttpOnly

2. Les attaques par injection

  • sont divisées en injection SQL et injection OS

  • SQL. injection Obtenir la structure de la base de données : utiliser des logiciels open source, écho d'erreur, injection aveugle

  • Prévention des injections SQL : désinfection ; liaison des paramètres, utiliser des moyens précompilés, lier les paramètres

3.

  • CSRF (Cross Site Request Forgery), l'attaquant effectue des opérations illégales en tant qu'utilisateur légitime via des requêtes cross-site. La méthode principale consiste à utiliser des requêtes intersites pour falsifier des requêtes avec l'identité de l'utilisateur à l'insu de l'utilisateur, et à utiliser des cookies de navigateur ou des politiques de session de serveur pour voler l'identité de l'utilisateur.


  • Prévention : jeton de formulaire, code de vérification, vérification du Referer (vérifier la source de la requête enregistrée dans le champ Referer de l'en-tête de la requête HTTP)


Autres vulnérabilités d'attaque

  • Code d'erreur : écho d'erreur. , commentaires HTML, téléchargement de fichiers, traversée de chemin


5. Pare-feu d'application Web : ModSecurity

6. Analyse des vulnérabilités de sécurité du site Web

B. Technologie de cryptage des informations et gestion de la sécurité des clés

1. Cryptage : md5, sha, etc., ajoutez du sel

2. Cryptage symétrique : algorithme DES, algorithme RC, etc., utilisez la même clé pour le cryptage

3. Cryptage asymétrique : algorithme RSA

4.

    En plaçant la clé et l'algorithme sur un serveur indépendant ou un périphérique matériel dédié, et en réalisant le cryptage et le déchiffrement des données via des appels de service.

  • Mettez l'algorithme de décryptage dans le système applicatif et la clé dans un serveur indépendant Lors du stockage effectif, la clé est divisée en plusieurs morceaux et cryptée et stockée dans différents supports de stockage pour prendre en compte la sécurité de la clé. tout en améliorant les performances.

C. Filtrage des informations et anti-spam

1. Correspondance de texte : résolvez le problème du filtrage des mots sensibles

    Une petite quantité de contenu peut être remplacée par des expressions régulières

  • Là. il y a beaucoup de mots et ils sont simultanés Lorsqu'il est élevé, utilisez l'algorithme d'arbre de Trie (algorithme de Trie à double tableau)

  • pour construire une table de hachage pour la correspondance de texte

  • Parfois, il est également nécessaire d'effectuer un traitement de réduction du bruit , tel que "Arab_rab"

  • 2. Algorithme de classification : algorithme bayésien, algorithme TAN, algorithme ARCS

3 Liste noire : table de hachage, filtre Bloom

D. Risque : risque de compte, risque d'acheteur, risque de vendeur, risque de transaction

2. Contrôle des risques

La machine identifie automatiquement les transactions et les informations à haut risque et les envoie aux auditeurs de contrôle des risques pour un examen manuel des technologies et méthodes de contrôle des risques de la machine. découvrent constamment de nouvelles technologies et méthodes manuellement. Les types de risques sont progressivement améliorés.

  • Moteur de règles : Lorsque certains indicateurs d'une transaction remplissent certaines conditions, elle sera considérée comme présentant un risque élevé de fraude.

  • Modèle statistique : utilisez des algorithmes de classification ou des algorithmes d'apprentissage automatique plus complexes pour effectuer des statistiques intelligentes. L'algorithme de classification est entraîné sur la base des informations de transaction frauduleuse dans les transactions historiques, puis les informations de transaction collectées et traitées sont entrées dans l'algorithme de classification pour obtenir le score de risque de transaction.


  • 9. Analyse de cas de l'évolution de l'architecture de Taobao

1.LAMP->JAVA/ORACLE->MySQL/NoSQL

2. -analyse de la conception de l'architecture des performances

Architecture globale du site A.Wikipedia :

Produits open source LAMP+, GeoDNS, LVS, Squid, Lighttpd, PHP, Memcached, Lucene, MySQL

B.Stratégie d'optimisation des performances Wikipédia

1 .Optimisation des performances front-end

Le cœur de l'architecture front-end est le cluster Squid du serveur proxy inverse, dont la charge est équilibrée par LVS et renvoyée via CDN avant le proxy inverse.

Conseils de mise en cache Wikipédia CDN : les pages de contenu ne contiennent pas d'informations dynamiques ; chaque page de contenu a une URL unique de style REST ; les informations de contrôle du cache sont écrites dans l'en-tête de réponse HTML

  • 2. Optimisation des performances : utilisez APC, Imagemagick, Tex, remplacez la fonction de recherche de chaîne de PHP starter() pour utiliser un algorithme plus optimisé
  • 3 Optimisation des performances du backend :


    caching

les données hotspot particulièrement concentrées sont directement mises en cache dans le. le contenu des données mises en cache dans la mémoire locale du serveur d'applications doit être dans un format qui peut être directement utilisé par le serveur d'applications. Utilisez le serveur de cache pour stocker les objets de session. Par rapport aux bases de données, la connexion persistante de Memcached est très bon marché, créez-en une. si nécessaire

    MySQL

  • Utilisez une mémoire de serveur plus grande

  • Utilisez une matrice de disques RAID0 pour un accès élevé

  • Définissez la cohérence des transactions de base de données au niveau inférieur

  • Si le Maître la base de données tombe en panne, basculez immédiatement l'application vers la base de données Salve et fermez le service d'écriture

11. Analyse de la conception de l'architecture à haute disponibilité du système de stockage distribué massif Doris

Pour un système de stockage de données, haute disponibilité signifie : services à haute disponibilité, données à haute fiabilité

A Distribution Haute disponibilité. architecture du système de stockage

1. Redondance : sauvegarde à chaud du serveur, stockage de données multiples

2. Division globale du système :

  • Serveur d'application : Le client du système de stockage initie des requêtes d'opération de données au système

  • .
  • Serveur de stockage de données : le cœur du système de stockage, qui stocke les données et répond aux demandes d'opération de données du serveur d'applications

  • Serveur du centre de gestion : un cluster de serveurs à petite échelle composé de deux machines : hot primaire-actif sauvegarde, responsable de la gestion des clusters, de la détection du rythme cardiaque des clusters de stockage de données ; de l'expansion des clusters et de la gestion de la récupération des pannes ; fourniture de services d'informations sur la configuration des adresses de cluster aux serveurs d'applications, etc.

B. 1. Classification des défauts des systèmes de stockage distribués : défaut instantané, défaut temporaire, défaut permanent

2. Résolution instantanée des défauts : plusieurs tentatives

3. Résolution des défauts temporaires : une intervention manuelle est requise et le serveur problématique utilise un stockage temporaire. serveur

4. Résolution permanente des pannes : permettre aux serveurs de sauvegarde de remplacer les serveurs en panne permanente

12. Analyse de cas de conception de l'architecture du système de vente flash d'achats en ligne

A. Défis techniques des activités de vente flash :

Avoir un impact sur le serveur. activité de site Web existante, applications simultanées élevées, charge de base de données, augmentation soudaine de la bande passante du réseau et du serveur, commande directe

B Contre-mesures pour le système de vente flash

    Déploiement indépendant du système de vente flash

  • Statisation. des pages de produits de vente flash

  • Louer la bande passante du réseau pour les activités de vente flash

  • Générer dynamiquement l'URL de la page de commande aléatoire

C Conception de l'architecture du système de vente flash

1. éclairage du bouton d'achat sur la page produit de la vente flash : utiliser un fichier JS, modifier le contenu au début, demander à chaque fois, non mis en cache par CDN, etc., et utiliser des numéros de version aléatoires.

2. Comment autoriser uniquement l'envoi de la première commande soumise au sous-système de commande : contrôlez l'entrée de la page de commande, afin que seuls quelques utilisateurs puissent entrer et que d'autres utilisateurs accèdent directement à la page de fin de la vente flash. Par exemple, il y a 10 serveurs, chacun traitant 10 requêtes. Lorsque le nombre de requêtes dépasse 10, les autres renverront des erreurs, puis demanderont l'enregistrement du cache global. Si c'est le premier, il entrera dans la page de commande, et. les autres renverront des échecs.

13. Analyse des cas d'échec typiques des grands sites Web

A. L'écriture de journaux peut également provoquer des échecs

    La propre configuration de la sortie des journaux de l'application et la sortie des journaux des composants tiers doivent être configurées séparément

  • Vérifiez le fichier de configuration du journal, jouons avec les journaux. Michelle considère au moins Warn

  • Besoin de désactiver trop de journaux d'erreurs que certains composants tiers peuvent générer

B. Défauts causés par un accès simultané élevé à la base de données

    La page d'accueil ne doit pas accéder à la base de données

  • La page d'accueil doit être statique

C Défauts causés par des verrous dans des situations de concurrence élevée

. Soyez prudent lors de l'utilisation des opérations de verrouillage

D. Défauts de cache provoqués

Le serveur de cache fait déjà partie intégrante de l'architecture du site Web et doit être géré au même niveau que la base de données

E. -démarrage de l'application de synchronisation

F. Disque exclusif pour la lecture et l'écriture de fichiers volumineux. Défauts causés

Les petits fichiers et les gros fichiers ne doivent pas partager le stockage

G. Défauts causés par un abus de l'environnement de production

Be. soyez très prudent lorsque vous accédez à l'environnement de production. Veuillez demander à un administrateur de base de données dédié de gérer la base de données

H. Processus irréguliers Échecs provoqués

Utilisez la commande diff pour comparer le code avant de le soumettre afin de confirmer qu'aucun code qui ne doit pas être soumis n'est présent. soumis ; renforcer la révision du code, demander à au moins un autre ingénieur de procéder à une révision du code avant la soumission et partager la responsabilité des échecs causés par le code

I Échecs causés par de mauvaises habitudes de programmation

Faites attention à la gestion des objets vides. , valeurs nulles, etc.

14. L'art du leadership d'architecte

A Se concentrer sur les personnes plutôt que sur les produits

1. Un groupe de personnes excellentes qui font quelque chose qu'ils aiment réussira certainement

2. La meilleure gestion logicielle consiste à explorer l'excellent potentiel de chaque membre de l'équipe de projet

3. Trouver un objectif qui mérite d'être atteint ensemble et créer une atmosphère de travail où chacun peut maximiser son estime de soi

B. des gens

1. Ce sont les choses qui font les gens, pas les gens qui font les choses

2. La plupart des gens, y compris nous-mêmes, vous êtes meilleurs que vous ne le pensez. Une certaine excellence doit être stimulée dans le bon environnement, comme faire. quelque chose de stimulant, collaborer avec de meilleures personnes ou avoir le courage de se dépasser

3 Découvrez les talents des gens L'excellence a bien plus de sens que de découvrir des personnes excellentes

C Partager un beau plan

1. a déclaré : ce que le produit fera, ce qu'il ne fera pas et quels objectifs commerciaux il atteindra

2. Le plan doit être visuel : quelle valeur le produit peut-il créer pour les utilisateurs, quels objectifs de marché peut-il atteindre et à quoi ressemblera finalement le produit ? 3. Le plan doit être simple : expliquez en une phrase : ce que nous sommes ? faire

4. Les architectes doivent rester concentrés sur le plan cible et rester attentifs à toute conception et décision qui s'écarte du plan. Les écarts erronés doivent être corrigés en temps opportun. Les changements nécessaires doivent être discutés par tout le monde et doivent regagner l'approbation de chacun. .

D. Participez ensemble à l'architecture

1 Ne laissez pas l'architecte seul posséder l'architecture

2 Laissez les autres entretenir le cadre et les documents d'architecture

E. architecture et solutions techniques Essentiellement, prêter attention, essayer de comprendre et d'accepter ces solutions. Les architectes ne doivent pas être trop sensibles et doivent partager franchement leurs opinions et rechercher un terrain d'entente tout en réservant les différences

2. Les arguments sur les détails techniques doivent être vérifiés immédiatement au lieu de continuer à discuter

3 Lorsque tout le monde ne discute pas de l'architecture, cela se voit. que l'architecture a été intégrée au projet, que le système et les développeurs réussissent, et plus tôt les architectes sont oubliés, plus l'architecture est réussie

F Réaliser les autres

1. mais aussi pour réaliser les gens, et finalement nous-mêmes

2. Faire Un projet doit non seulement créer de la valeur pour les clients et générer des bénéfices pour l'entreprise, mais aussi permettre aux membres du projet de grandir

3. L'architecte ne doit pas essayer de contrôler quoi que ce soit pendant le processus du projet, mais avoir un plan flexible. Au fur et à mesure que le plan avance, l'équipe prendra soin d'elle-même

Quinze Guide de carrière d'architecte de site Web

Le but du développement de logiciels est de. résoudre des problèmes du monde réel, mais souvent les gens ne savent pas quel est le vrai problème.

  • De nombreux problèmes seront également rencontrés lors du processus de développement du logiciel. Il est nécessaire de coordonner les intérêts de toutes les parties pour obtenir le plus grand soutien possible. Il est nécessaire d'équilibrer la relation entre les besoins du client, la production du logiciel et. ressources de développement. De nombreuses choses doivent être résolues. Ce n'est qu'ainsi que le plan original de conception logicielle peut être réalisé.


  • A. Découvrez les problèmes et trouvez des avancées

Lorsque les attentes ne peuvent pas être satisfaites, les gens auront le sentiment que quelque chose ne va pas, car le problème est l'écart entre l'expérience et les attentes. Il existe deux manières d'éliminer les problèmes : améliorer l'expérience ou réduire les attentes. Réduire simplement vos attentes ne résoudra pas le problème. Au contraire, vous devez faire face à la différence entre les attentes et l'expérience réelle, afin de pouvoir identifier le problème et trouver une avancée.

2. La première chose que les nouveaux employés doivent faire est de s'intégrer dans l'équipe

3. La dernière chose que les nouveaux employés doivent faire est de prouver leurs capacités.

B. Posez des questions et demandez de l'aide

1. Lorsque le problème est découvert, c'est uniquement le problème du chercheur de problème, pas du propriétaire du problème. Si vous souhaitez résoudre un problème, vous devez poser la question et. laissez le problème Le propriétaire est conscient du problème.

2. Conseils pour poser des questions :

Représentez "mon problème" comme "notre problème"

  • Posez des questions fermées à votre patron (donnez un plan AB et laissez votre patron choisir lequel est le meilleur) , donnez aux subordonnés de poser des questions ouvertes

  • Soulignez les problèmes au lieu de critiquer les gens

  • Posez des questions de manière agréable

  • 3. Le soi-disant franc-parler signifie que l'intention que vous souhaitez l'expression doit être simple et claire. Ne tournez pas autour du pot, mais soyez prudent dans votre expression et tenez compte des sentiments des parties impliquées

  • C Résolvez le problème et réalisez la performance

1. problème, résolvez d'abord votre problème

Vous aidez Lorsque d'autres résolvent des problèmes, d'autres vous aideront également à résoudre des problèmes

  • En aidant les autres à résoudre des problèmes, vous vous familiarisez avec la situation

  • Vous utilisez votre solution pour résoudre les problèmes des autres, et cette solution est entre vos mains Sous contrôle

  • 2. Évitez correctement les problèmes

  • 16. Parlez des architectes de sites Web

A. Architectes de conception, architectes anti-incendie et évangélistes Architecte de type, architecte de type Geek

B Divisez les architectes par effet

Architecte Sherpa : développez généralement les modules les plus techniques et les plus stimulants du projet, architecte spartiate, High. -classement architecte

C. Répartissez les architectes selon leurs responsabilités et rôles

Architecte produit : impliqué dans tout le cycle de vie du produit, architecte de service de base (architecte de plateforme), architecte d'infrastructure

D Press Architects qui. se concentrer sur la division hiérarchique

Architectes qui se concentrent uniquement sur les fonctions, architectes qui se concentrent sur les non-fonctions, architectes qui se concentrent sur l'organisation et la gestion des équipes, architectes qui se concentrent sur les opérations du produit, architectes qui se concentrent sur l'avenir du produit

E. Press Le bouche-à-oreille divise les architectes

meilleurs architectes, bons architectes, architectes moyens, mauvais architectes, pires architectes

F Manière non conventionnelle de diviser les architectes

architectes ordinaires, Architecte littéraire, 1+. 1 Architecte

Annexe A : Aperçu des technologies de sites Web à grande échelle

A. Architecture front-end

Technologie d'optimisation de navigateur, CDN, séparation statique et dynamique, déploiement indépendant de ressources statiques, service d'image, proxy de réflexion , DNS

B. Architecture de la couche application

Cadre de développement, rendu de page, équilibrage de charge, gestion de session, statique de page dynamique, fractionnement d'activité, serveur virtualisé

Architecture de couche de service

Messagerie distribuée, services distribués, cache distribué, configuration distribuée

D. architecture de couches

Fichiers distribués, bases de données relationnelles, bases de données NoSQL, synchronisation des données

E Architecture backend

Moteurs de recherche, entrepôts de données, systèmes de recommandation

Collecte de données (Log) et surveillance

Navigateur. collecte de données, collecte d'activités de serveur, collecte de données sur les performances du serveur, surveillance du système, alarme système

G Architecture de sécurité

Attaques Web, protection des données

H. Architecture de la salle informatique du centre de données

Salle informatique, armoire, serveur

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!