Transcription
1. Conception de système: Pendant les bases de la conception du système. Savez-vous que la quantité moyenne de vidéos regardées sur Netflix, mais à vk est environ 1 milliard d'heures. Le nombre de tweets affichés birdie est d'environ 500 millions. Ça fait environ 6 000. Les Grecs mangent du poulet et des étiquettes, juste le nombre de tweets postés. Nous ne parlons même pas des retraites sous les salutations aimé. J' ai exécuté ces numéros. Fascinant Est-ce que cela ne vous fait pas vous demander, comment est-il même possible pour les entreprises avec un tas d' ingénieurs qui gèrent de tels volumes de trafic ? Alors que l'utilisateur occasionnel, comme inconscient de la complexité. En tant que concepteur de système, vous devez faire face à la gestion. Vous devez être conscient de l'architecture de haut niveau de l'application sur laquelle ces produits sont construits. Ils ont tous une base solide et nous allons coder. Il est très important que ces entreprises soient fonctionnelles tout le temps. Dans le monde d'aujourd'hui, il est difficile d'imaginer même une seule minute par jour sans ces services. Qu' est-ce qui nous permet de disposer de ces outils ? 24 par sept ? La réponse est l'évasion. Ces systèmes sont conçus. Et ça devient de plus en plus une compétence. Comprendre comment garder vos systèmes fonctionnels tout le temps. Il est maintenant considéré comme une compétence primaire à posséder. Lorsque vous vous préparez à une entrevue, essayez de construire un système pour votre organisation ou pour votre propre produit. Et apprendre à concevoir des systèmes évolutifs vous aidera à devenir un meilleur ingénieur. Le but de ce cours est de vous aider à apprendre à concevoir systèmes à
grande échelle et à vous préparer à financer les entretiens de conception de systèmes, vous serez présenté aux sujets que vous devriez considérer en concevant vos systèmes. Alors commençons.
2. Les bases: Hé les gars. Dans cette vidéo, nous allons parler des bases de la conception du système. Tout d'abord, comprenons ce que les concepteurs de système. La conception du système est. Processus de conception de l'architecture compétente et interface photosystème afin qu'il réponde à l'exigence de l'utilisateur final. Dans le domaine de l'ingénierie logicielle, conception des
systèmes est un domaine dans lequel tout le monde devrait en être un peu familier. Quel que soit votre rôle. Systèmes de conception vile. Il y a trois principales préoccupations qui devraient être abordées. Fiabilité, évolutivité, maintenabilité. Alors maintenant, voyons ce que tout cela signifie indiqué. À peu près. La responsabilité signifie continuer à fonctionner correctement, même lorsque les choses tournent mal. Dans le domaine de conception du système. La responsabilité signifie la capacité d'un système à valider pour d'autres problèmes afin d'éviter les défaillances lors d'arrêts complets. grands systèmes sont construits en utilisant des entreprises intolérantes à la faute. La beauté et l'arc de conception du système est de construire un système
tolérant les pannes en utilisant des entreprises intolérantes aux pannes. Non. Les défauts peuvent être classés comme des formes hybrides, également des vides remplis. Les formulaires hybrides se sont beaucoup produits dans les grands centres de données. Un grand jeu de données que l'épaisseur de la valve, les disques durs vont buter tous les jours. La mémoire sera corrompue sur une base régulière. Les métaphores du VIH peuvent être corrigées en ajoutant de la redondance. Autrement dit, les centres de données peuvent avoir plusieurs sauvegardes illimitées pour éviter les points de défaillance uniques. Le logiciel Ford peut se produire pour une variété de raisons. Abondant d'un processus peut ressources système internes et provoquer un seuil systématique à travers tous les nœuds. Ou les hypothèses de fonctionnement des applications BI peuvent changer et disparaître dans des plantages. Par conséquent, il peut être géré en comprenant les exigences de l'entreprise et résilience
respiratoire pour gérer les suppressions de la même enchère d'ammoniac commencée, pour publier des avertissements ou des tests Leland méga unitaires. Et enfin, en concevant meilleures abstractions et interfaces pour isoler facilement le problème. évolutivité est la capacité du système à fournir des performances raisonnables face à une charge accrue. Par exemple, pour le social libérant la plaque, le nombre attendu de droits ou de messages ou pour épaissir ou lire. Autrement dit, dans votre vue chronologique. Quel épaissie peut être utilisé pour décrire la performance, peut être considéré comme les
caractéristiques de fonctionnement du système que le podomètre chargé du système est modifié. Par exemple, vous pouvez mesurer les performances en termes de temps de réponse moyen du système. Bien sûr, il existe de nombreuses façons de mesurer le rendement d' un système qui ne fait actuellement pas partie de notre discussion. La maintenabilité signifie écrire du code qui peut être facilement compris, refactorisé et mis à jour par quelqu'un qui n'est pas l'auteur original du code. Tout morceau de code confus spaghettis sera finalement compris par les machines. Un bon code devrait être lisible et facilement compréhensible afin qu'il puisse collaborer. Un bon code devrait toujours avoir le bon niveau d'abstractions, obtenir des API et des interfaces. Ainsi, de nouvelles fonctionnalités sombres peuvent être facilement construites sur les bases de code existantes. Ensuite, nous verrons les différents composants qui
doivent être combinés pour construire des systèmes évolutifs.
3. Balanceurs de charge: Salut les gars, bienvenue à la première conférence dans les villes de base de la conception du système. Aujourd'hui, nous allons parler des équilibreurs de charge. Un équilibreur de charge est un composant très important de tout système distribué. équilibreurs de lecture distribuent les demandes des clients entrants aux ressources informatiques, telles qu'un cluster de serveurs d'applications et de bases de données. Dans chaque cas, l'équilibreur de charge renvoie la réponse tant que le calcul de cette OLS les serveurs ou les bases de données au client approprié. L' objectif fondamental d'un équilibreur de charge est d'améliorer la réactivité et la disponibilité d'une application, d'un site Web ou d'une base de données. Un équilibreur de charge garde également une trace de l'état de toutes les forces britanniques tout en distribuant Nyquist. Voyons voir. Un serveur n'est pas disponible pour traiter de nouvelles demandes, ou il ne répond pas, ou il peut avoir un taux d'erreur, l'équilibreur de charge cessera d'envoyer du trafic tel que null. Ceci est réalisé via Celtx. L' équilibreur de charge tente régulièrement de se connecter
aux serveurs back-end pour s'assurer que les corps de cellule sont à l'écoute. Si cela se sent un bilan de santé. Il est automatiquement retiré du pool et le trafic lui
sera pas transféré tant qu'il ne répondra pas à nouveau au Healthix. Maintenant, jetons un oeil à l'architecture de base. Affreux. Équilibreur de charge. Généralement, un équilibreur de charge se trouve entre le client et les serveurs, exception du trafic réseau entrant et des applications,
et répartit le trafic entre
plusieurs serveurs back-end à l'aide de divers algorithmes tels que le round robin. Non, voici une architecture de base. Vous pourriez utiliser un équilibreur de charge. Maintenant, nous avons un client. Puisque cela équivaut à travers Internet, notre équilibreur de charge. Maintenant, il est de la responsabilité de l'équilibreur de de
distribuer le trafic entre nos différents serveurs Web. En équilibrant les demandes d'application sur plusieurs serveurs. Un équilibreur de charge réduit la charge de chaque serveur et empêche toute application qui était en train de devenir un point de défaillance unique. Améliorer ainsi l'ensemble de l'application, de la disponibilité et de la réactivité. Pour dire précisément, équilibreurs de
charge sont efficaces pour empêcher les linguistes d'aller à Sanders
impies aurait quelque chose de surcharger les ressources et aider et éliminer les points uniques d'échec. Pas de retard, évolutivité complète et redondance. Nous pouvons essayer d'équilibrer la charge à chaque couche du système. Vous pouvez ajouter des équilibres de charge aux remplaçants entre l'utilisateur et l'observateur. Entre les serveurs Web et une couche de plate-forme interne, comme les serveurs d'applications, un serveur de cache. Et entre toutes les familles noires internes et les bases de données le verra à travers le diagramme. Voici donc notre premier équilibreur de charge. Assis entre le client et j'aurai des serveurs. Maintenant, voici un deuxième équilibreur de charge
entre nos serveurs Web et nos serveurs d'applications. Maintenant, c'est un troisième équilibreur de charge. Chiennes utilisées entre les serveurs de l'application et les bases de données. Ainsi, le premier équilibreur de charge distribue les linguistes de glande entrants croient epsilon_1 ou le serveur Web à l'équilibreur de charge secondaire, distribue en
outre le trafic dans le serveur d'applications ou le serveur d'applications font. Et le troisième équilibreur de charge distribue le trafic entrant des bases de données des serveurs d'applications. Il s'agit essentiellement de distribuer la charge sur les interfaces. Voyons maintenant les avantages de l'utilisation d'un équilibreur de charge. D' abord utilise l'opportunité ou plus vite. Et un service ininterrompu, les utilisateurs n'auront pas à attendre qu'un seul peinait à terminer ses tâches précédentes. Au lieu de cela, leurs demandes, je vais immédiatement transmis à une ressource plus facilement disponible. Deuxièmement, les fournisseurs de services, l'opportunité, moins redoutable et un débit plus élevé. Même un coffre-fort de panne de serveur complet affecte l'expérience de l'utilisateur final comme l'équilibrage de la charge, ils vont simplement noter autour de lui pour le serveur lourd. Remorqué. L'équilibrage de charge permet aux administrateurs
système de gérer plus facilement les demandes entrantes en réduisant les utilisateurs douloureux en lecture. Et ensuite, les administrateurs système, l'opportunité. Moins d'alimentation de tous les composants synchronisés. Au lieu d'un seul appareil ou de former beaucoup de travail. L' équilibrage de charge a plusieurs dispositifs forment un peu de chance. Passons maintenant à quelques inconvénients de l'utilisation d'un équilibreur de charge. L' équilibreur de charge peut devenir un goulot d'étranglement des performances s'il ne dispose pas de ressources suffisantes ou s'il n'est pas configuré correctement. Deuxièmement, l'introduction d'un équilibreur de charge pour aider à éliminer les points de défaillance uniques entraîne une complexité accrue. Totalement. Un équilibreur de charge unique est un point de défaillance unique. La configuration de plusieurs équilibreurs de charge augmente encore la complexité. Donc, en gardant à l'esprit les avantages et les inconvénients, peu un équilibreur de charge offre. Benito inclut de façon judicieuse, mais nos besoins dans le système que nous concevons.
4. Caching: Si vous aviez sur la connexion Internet lente et la construction d'un site Web qui est avant toute image de haute qualité. Cependant, lors de vos visites ultérieures dans le même état, sorte que la page affiche une image étendue instantanément. Visitez un tout nouveau site Web. Le chargement prend plus de temps. Ensuite, un fréquemment visité le même navigateur. Voyons maintenant un autre cas. Remarqué en regardant une vidéo YouTube qui continue à bouillonner simultanément. Ensuite, vous avez une connexion Internet plus lente n'est pas interrompue. La vidéo continue à être lue jusqu'à ce que la quantité mise en mémoire tampon soit atteinte. Dans l'utilisation du réseau bouddhiste, le mécanisme interne qui se produit est la mise en cache. Alors maintenant, discutons du cache. Cache livres sur le principe de la localité finance également, le gash agit comme un outil pour les données pour accélérer la recherche sur. Le. Aussi Ganesh est de déduire que chaque agence et amplifier le débit. Maintenant, voyons un vrai or dehors. Et disons que tu veux cuisiner le dîner ce soir. Vous avez besoin de différents ingrédients, légumes, espaces, et cetera, pour la préparation. Mais utilisez au supermarché tous les jours. Tu sais, ce serait trop lourd. Donc, vous vérifiez vos données audio de cuisine définitivement pour rechercher les ingrédients requis. Cette vue des données du supermarché. Maintenant, votre réfrigérateur agit comme un invité. Et le supermarché est votre source de données ou les données stockées. Tout. Donc, l'avantage d'utiliser le cache et cette interview est qu'il vous permet d'économiser le temps de visiter le supermarché et de déposer vos ingrédients. Alors maintenant, voyons comment les applications fonctionnent et comment nous pouvons utiliser le gash. En règle générale, toute application backend stocke les données dans une base de données. Ensuite, un client essaie d'enseigner n'importe quelle donnée. C' est faux. L' application, l'application interroge la base de données, récupère les données et la base de données, et la renvoie à l'utilisateur ou au client. L' argent ne doit pas être en cours d'exécution le serveur d'applications sur le même système comme un processus séparé, ou le serveur de base de données s'exécutant sur un ordinateur différent. Maintenant, prendre les données d'une base de données prend beaucoup de temps car il a besoin d'une opération pour obtenir les données du système de fichiers. Si les données sont stockées dans le cache, l'opération de lecture sera agréable rapidement, car la lecture à partir de la mémoire est Vz. Puis la lecture à partir du système de fichiers. Et les bases de données stockées les données dans le système de défense par Lagash garde les données en mémoire. Donc, quand un client demande des informations, alors ne laissez pas une application, les applications qui étaient prennent juste le lieu de données pour récupérer les données du cache. Dans le cas où les données sont trouvées dans le cache, ce sera l'application. Et le serveur d'applications pourrait alors renvoyer les données à décliner. Maintenant, si les données ne sont pas trouvées dans le cache, elles seront validées dans la base de données. La base de données retournerait ensuite le serveur d'applications avec les données. Et le serveur d'applications pourrait stocker ces données. Nb gash. Afin d'éviter d'interroger davantage la base de données ou les mêmes requêtes ou similaires. Pliez la glande les mêmes données de manière répétitive. Il est plus logique convention à partir du cache, puis à partir de la base de données. Et regardons un exemple de verbe pour utiliser de l'argent. Disons que si elle devient Pourquoi tous les utilisateurs et récupère les données du même tweet ? Et puisque total n'a pas Melinda, les utilisateurs utilisant le cache, alors voir des millions d'appels à la base de données et les utilisateurs seraient visités avec des informations à un rythme beaucoup plus rapide. De cette façon, un cache sur la base de données. Si les données sont trouvées dans le gash, un appel de base de données sera enregistré en réduisant la pression sur la base de données.
5. Politiques d'évite des Cache: Hé les gars. Dans cette vidéo, nous allons parler de la politique d'expulsion de cache. Étant donné que le cache a une capacité limitée, il peut devenir plein à un moment donné. Et puis, en fonction du Big Data est accessible par l'application. Par conséquent, nous devons élaborer une stratégie. Autre politique, Bouddha déplacer les données du cache et le remplacer par celui qui a plus de probabilité d'être accédé dans un proche avenir. Il existe plusieurs stratégies d'expulsion de cache. Lru le moins récemment utilisé, LRU le moins fréquemment utilisé. Et le plus récemment utilisé. Il s'agit des politiques d'expulsion les plus couramment utilisées. Tu verras ? Non. Parlons de ceux-ci individuellement. Parler de LRU. Cette stratégie supprime le NPV du cache, qui est le moins récemment utilisé. Dès que le gaz devient plein, audit est sur le point de devenir pour eux les utilisations les moins décemment. L' entrée en est expulsée. Et l'entrée récente est ajoutée au cache. Donc, vous pouvez imaginer Facebook. C' est vers des célébrités, des photos dans une cache. Le modèle d'accès aux données des abonnés est
tel qu'ils sont intéressés par les photos les plus récentes. Alors cette célébrité photos argent devient plein. Il va lancer les photos qui ont été récemment ajoutées à elle. Donc, disons par exemple, b1 photo, B2, B3, B4 sont les travaux photovoltaïques qui, qui a ajouté au cache. Et mais x et d, p plus un, p plus 23. Cela représente donc l'heure à laquelle ces photographies ont été accédées pour la dernière fois par l'aspersion. Et voyons, nous avons besoin d'ajouter b5 au cache et seulement les supports pour les photographies terminées I. Donc, nous devons supprimer une photo et alors seulement nous
serons en mesure d'ajouter si je le fais dans ce cas, même serait retiré du cache parce que cette photographie a été utilisée le moins récemment auparavant, a été la plus récente utilisée. Et donc b1 sera retiré de l'estomac, et B5 prendra sa place. Et le temps de son axe sera p plus quatre. L de u. C'est le moins fréquemment utilisé. Il quelques garde une trace de la fréquence sont le nombre de fois qu'un élément de données est accessible. En cas de taille de cache franchissant un seuil donné, il émettra à l'entrée avec la fréquence la plus basse. Par exemple, entrez n'importe quel mot par SMS sur votre smartphone. Votre téléphone commence à suggérer plusieurs mots que vous pouvez sélectionner. Au lieu de taper le mot entier. En interne, vous êtes formé logiciel maintient un cache de tous les mots que vous avez le temps ainsi que sa fréquence. Les élites libérales, que la fréquence la plus basse. Alors disons que vous faites cuire Vasa le plus. Donc, dès que vous commencez à taper W et a, votre téléphone commencera à vous suggérer wassup immédiatement. Parce que cela a le plus grand nombre de fréquence et vous avez de l'argent. Maintenant, en cas de lien entre plusieurs modes, alors la liste essentiellement utilisée pour graver est expulsée du cache. Mrd, ou le plus récemment utilisé dans MIT vous, le N3 le plus récemment utilisé est supprimé et préférence est donnée aux entrées les plus anciennes dans le cache. Si le modèle d'accès aux données est tel que l'utilisateur est moins probable à l'entrée la plus récente. Ensuite, cette stratégie est utilisée pour l'expulsion. Un exemple pour ce type d'argent est des applications de rencontres comme Tinder. Il met en cache généralement toutes les correspondances potentielles d'un utilisateur. Ensuite, l'utilisateur soit à gauche ou à droite viole ou fournir. L' application ne devrait pas recommander d'être fournie à l'utilisateur. Encore une fois, si cela se produit,
cela se traduira par une mauvaise expérience utilisateur. Il est donc nécessaire d'éditer les entités qui absorberaient le plus récemment. L' application doit supprimer l'entrée de cache du profil à gauche ou à droite.
6. Types de cache: Dans cette vidéo, nous allons parler de différents types de caches. En devinant est fantastique. Cela nécessite un certain entretien pour garder le cache cohérent avec la source de la responsabilité délictuelle. Autrement dit, lorsque les bases de données, si les données sont modifiées dans la base de données, il doit être invalidé dans le cache. Sinon, cela peut entraîner un comportement incohérent de l'application. Résoudre ce problème est connu sous le nom d'invalidation du cache. Basé sur l'invalidation du cache, Il y a trois planches principales de caches. abord, pour gash que mal gash, et troisièmement, écrire gash. Voyons maintenant ce que tout cela signifie indegree, juste à travers le cache. Au fur et à mesure que
le nom se déplace, les données sont d'abord écrites dans le cache, puis faites la base de données. Il s'agit d'un serveur d'applications. Dès qu'il a besoin de lire certaines données. Il lit d'abord les données du cache, puis il écrit dans la base de données. Cela garantit la cohérence entre les données du cache et celles de la base de données. Chaque avance puis sur le gash suit le taux le plus récent. Cependant, l'inconvénient de cette approche est que la latence du taux d'application augmente car les données sont d'abord écrites dans le cache, puis elles sont conservées dans la base de données. Cette approche ne convient pas à aucun système à forte intensité d'écriture. Il est utile pour les applications qui réduisent fréquemment les données. Buns, c'est persistant dans la base de données. latence d'écriture peut prendre un coup, mais elle est compensée par une latence et une cohérence plus faibles. Ensuite, nous avons le cache d'écriture. Comme nous l'avons vu, les deux espèces tardives ne
conviennent pas aux systèmes à écriture lourde car la latence peut augmenter. Une autre approche consiste à écrire d'abord les données
dans le cache et à marquer le leader comme modifié, qui peut être mis à jour dans la base de données ultérieurement. Ainsi, un serveur d'applications écrit les données dans le cache. Et puis un travail honnête pourrait régulièrement conduire toutes les entrées modifiées dans le cache et mettre à jour leurs valeurs correspondantes dans la base de données. Cette approche nécessiterait que la lecture impactée, pas la latence retardée. Le seul inconvénient est qu'il y aura un décalage dû à la pensée des données entre le cache et le vivant. Maintenant, puisque la base de données est la source de la brute, toute lecture d'obligation à partir de dB lirait toujours incarnée. Les sites tels que YouTube. Utilise le cache d'écriture, va vers le buccal de n'importe quelle vidéo. La mise à jour de la base de données pour chaque vue d'une vidéo vitale serait coûteuse. Écriture de données dans le cache. Et puis sombrer dans la base de données est une meilleure solution. Il l'avait fait. L' utilisation du cache d'écriture, assure des latences de lecture et d'écriture. Prochain est le radon gaz. applications back-end de carburant ne sont pas souvent Vraiment, les données les plus récentes, dans ce cas, le radon gaz est utilisé. Et cette stratégie, la base de données, est mise à jour sans casser les données dans le cache. Ainsi, le serveur d'applications écrit d'abord les données dans la base de données. Et puis pour l'un d'entre vous mangez les requêtes gash la base de données. Si les entrées ne sont pas agréables dans l'estomac. Cette approche ne charge pas le cache, les données qui ne seront pas retardées. L' inconvénient de cette approche est que si l'application commence à interroger les données les plus récentes, elle désertera et mon double cache manque. Donc, ce sont les trois types de caches, qui ont des positifs et des négatifs. Cela dépend entièrement du scénario que
le cache devriez-vous considérer lors de la conception de vos systèmes ?
7. Partition de données: Hé les gars. Dans cette vidéo, nous allons parler du partitionnement des données. Il est également connu sous le nom de partage de données. partage de données est un processus qui consiste à diviser les
grandes tables en plusieurs petites tables ou fichiers indésirables, appelés jibes, et à distribuer les données sur plusieurs machines ou interclusters. Chaque graphique aura le même schéma et les mêmes colonnes que celui de la table d'origine. Mais les données stockées dans chaque enfant sont uniques et indépendantes des autres charges. Il y a deux façons de partager les données. Tout d'abord, le découpage vertical ou le partitionnement vertical. Et le second est appelé partitionnement horizontal. Dans le partitionnement vertical, la table principale est divisée en plusieurs partitions en séparant le nombre de colonnes. Ici, comme vous pouvez le voir, cette table principale contient des informations spécifiques à l'utilisateur. Il s'agit d'un ID utilisateur, nom d'utilisateur et de l'e-mail de l'utilisateur. Ces informations sont divisées en tableaux. Le premier contenant l'ID utilisateur et le nom d'utilisateur, et le second contenant l'ID utilisateur et l'utilisateur émis. Dans le cas où nous aurions besoin de récupérer les informations d'un utilisateur particulier. Nous pouvons joindre ces deux tables en fonction de l'ID. Ici. Nous avons divisé la table verticalement. Par conséquent, il est connu sous le nom de partitionnement vertical. Dans le partitionnement horizontal, v diviser la table principale en fonction du nombre de lignes. Ce n'est pas facturé. Un, V garder quelques rangées. Et en charge à V est venu un autre ensemble de rangées. Les données des deux plans combinés nous donneront les données d'origine. Ici. Les données auraient pu être divisées en fonction de quelques facteurs, que nous verrons plus tard. Base de données. Sharding est à peu près similaire à la mise à l'échelle horizontale. Autrement dit, ajouter plus de machines, mise à l'échelle automatique. D' où. Il nous permet d'ajouter plus de machines lorsque cluster existant afin de répartir la charge, permettre plus de trafic et un traitement plus rapide. En outre, la chiding aide à rendre cette application distribuée, minimisant
ainsi un seul point de défaillance. partage des bases de données doit être effectué de manière à ce que les données entrantes soient insérées dans le tableau de collecte. Il ne devrait pas y avoir de perte de données. Et les requêtes du désert ne devraient pas être lentes. Compte tenu de ces choses. Voyons voir, quelles sont les techniques pour éclater la base de données. Tout d'abord, le shashmi sharding, ou aussi connu sous le nom de Vedic brillant basé sur le SIG. Une paire clé-valeur, telle qu'un ID client sur IB
planifié ou immolation à partir des nouvelles lignes, sont les données. Ensuite, passez-le à une fonction de hachage et insérez les données dans le ne pense pas shied. De notre exemple précédent. Disons que nous avons les données suivantes à insérer. ID utilisateur, nom d'utilisateur et utilise l'e-mail. Voyons voir, la première valeur est un. Le nom d'utilisateur est ABC. Et un e-mail. Abc sur gmail.com. Ici, redessiné pour fragmenter nos données en fonction de cet identifiant utilisateur. Donc, le bus, cet ID utilisateur fait une fonction de hachage pour notre exemple, mais versets cette fonction de hachage, fait
juste le modulo de l'ID utilisateur par trois et assigne un bon enfant résultant. Donc, le modulo 43 entraînerait 012. Donc, chaque fois que le résultat est 0, c'est une même course de Bouchard. Chaque fois que le résultat est un, il est affecté à SIO2, et chaque fois que le résultat est deux, il est affecté au fragment trois. Donc, dans ce cas, l'ID d'utilisateur un, il serait affecté à notre graphique à. Donc cette règle serait insérée dans notre plan aussi. Dans le cas où nous aurions besoin d'ajouter une autre règle, cet ID utilisateur deux et quelques autres attributs. Cette fonction de hachage choisirait alors faire modulo trois, ce qui se traduira par deux, et assigner les données. Bouchard trois. C'est l'algorithme de partage le plus simple et peut être utilisé pour répartir uniformément les données entre les prises de vue. Et évitez le risque d'avoir un point d'accès de données. Le problème de point d'accès de base de données se pose lorsqu' un seul enfant est plus accessible que les autres objets pointus. Et donc, dans ce cas, tous les avantages de la brillance sont annulés. Le principal problème avec cette approche est qu'il devient vraiment difficile d'ajouter ou de supprimer dynamiquement un serveur de base de données. Chaque fois que cela se produit, nous devons contacter la base de données, ce qui signifie que nous devons mettre à jour la fonction de hachage et rééquilibrer les données. En outre, si cela arrive fréquemment, cela peut entraîner la perte de données. Alors voyons. Nous devons supprimer ou serveur, quels hôtes sont shard trois. Dans ce cas, nous devrons d'abord modifier notre fonction de hachage. Et puis le hachage, toutes les données qui ont été stockées dans un, SIO2 et enfant trois respectivement. Parce que lorsque nous changeons la fonction de hachage, la distribution des données changera également. Ventilation. Mais ce problème est d'utiliser un hachage cohérent. La mise en cache cohérente offre une évolutivité même lorsque nous avons beaucoup de données entre de nombreux serveurs. Et le nombre de serveurs disponibles change continuellement. Vivi, apprenez-en plus sur le hachage cohérent et les conférences à venir. Ensuite, nous avons les doyens pour briller et pour réentrer le tranchant. L' éclat est choisi sur la base de la gamme d'un Schottky. La plage de tranchage est choisie de telle sorte que le Schottky est susceptible de tomber dans l'une des valeurs possibles. Donc, disons que nous avons un système de recommandation qui stocke toutes les informations sur l'utilisateur et recommande des films basés sur les utilisateurs. C' est ça. Par conséquent, nous pouvons créer quelques frais différents et diviser chaque information utilisateur en fonction de la tranche d'âge dévolue en quelque chose comme celui-ci. Si l'utilisateur tombe dans la fourchette d'âge de 0 à 18 ans, les données seraient stockées dans le numéro d'enfant, mais s'il tombe dans l'âge de 19 à 27 ans, l'enfant associé serait choqué. De même, le partage d'interface est également très facile à mettre en œuvre. Nous avons juste besoin de vérifier la plage dans laquelle nos données actuelles sont défectueuses et d'insérer ou de lire les données du shied correspondant. En outre, chaque fragment contient un ensemble de données différent. Mais le schéma de tous les éclats est vu. Le principal inconvénient de cette technique est que si je l'ai fait, cela est inégalement distribué. Cela peut conduire à des hotspots de base de données. Ensuite, nous avons le Sharding et la cartographie directement basée. On a une table de recherche. C' est vers la schottky de garder la trace de l'art qui stocke quelles entrées, fluor ou lire les données. moteur décliné concerne d'abord la table de recherche pour trouver le numéro quatre blindé, les données correspondantes à l'aide du Schottky
, puis visite un fragment particulier pour effectuer différentes opérations. Donc, un exemple de l'être littéralement Sharding serait stocké les données basées sur la géolocalisation de l'utilisateur. Autrement dit, si l'utilisateur est situé en nous, il serait stocké dans l'enfance. Si l'utilisateur est situé au Royaume-Uni. Ses informations seraient stockées dans le graphique do. S' il le regarde en Inde, alors les informations seront trouvées dans le chat 3. Ce tranchant est à peu près similaire à la brillance basée sur la portée, sauf au lieu de déterminer la victoire et les données obtenues tombent dans. Chaque clé, est teint avec son propre bouclier spécifique. Contrairement a été l'arrêt, qui utilise une fonction de hachage fixe et la plage avant de décider, ce qui nous oblige à spécifier une plage à l'avance. Dedicatory be sharding vous permet d'utiliser n'importe quel système sur algorithme que vous voulez que les États-Unis attribuent des données dans des plaidoyers aux magasins. Et c'est aussi un relativement facile, bon dynamiquement ajouter des graphiques en utilisant cette approche. Le principal problème de Sharding médicalement basé est que nous devons conserver une table de recherche avant chaque requête d'acte et d'écriture. Par conséquent, il peut intégrer les performances de l'application. En outre, la table de recherche est soufflée à travers un seul point de défaillance. Une solution. Mais ce problème est d'utiliser des équilibreurs de charge. Mais encore une fois, mettre à jour fréquemment
la copie de la table de recherche dans chaque serveur serait une surcharge ? Non. Parlons de certains des avantages du Sharding. Base de données. Le Sharding nous aide à faciliter les extrémités horizontales de mise à l'échelle. Nous pouvons ajouter plus de machines
au cluster existant et distribuer la charge pour augmenter les applications. Temps de réponse des requêtes plus rapide. Sans partage de base de données, la base de données doit comparer une base de données grossière à chaque ligne. Et ça peut être un énorme revers. Mais avec chiding, au lieu de voyager toutes les lignes, nous avons besoin pro délivre seulement quelques lignes présentes dans le côté particulier. Le partage facilite la maintenance car chaque côté contient un morceau de données. partage de bases de données élimine le problème d'un point de
défaillance unique et rend notre application plus tolérante aux pannes. Quel tranchant. Nous avons réduit les coûts. Parce que si nous essayons d'ajouter plus de RAM et stockage à une machine existante afin de l'adapter verticalement. C' est une gloses coûteuses en ayant plusieurs nœuds. Le moins de puissance de calcul est moins cher. Évidemment, il y a quelques inconvénients de briller. Base de données. Le Sharding devient complexe. Ventilé vient à des implémentations pratiques. En outre, s'il est incorrect, cela peut entraîner une perte de données et des tables corrompues. Un autre problème majeur en ce qui concerne le tranchage est que l'accusation pourrait devenir déséquilibrée. En cas de problèmes de point d'accès de base de données. Une partie importante de données peut tomber dans un ensemble particulier de charges uniquement, et les plans restants peuvent rester vides. Le déjeuner-sharding est fait. Il est très difficile de revenir à la version originale non cartographiée de la base de données. Donc, c'était votre brève introduction à la base de données, sharding
8. Redondance des données: Le sujet de discussion de cette vidéo est donc la réplication des données et la redondance. La réplication signifie la duplication des services de données critiques dans le but d'accroître la fiabilité du système. Par exemple, s'il n'y a qu'une seule copie d'un fichier stockée sur un seul serveur
, perdre ce serveur signifie perdre le dépôt. Comme perdre des données n'est jamais une bonne chose, nous pouvons créer des copies en double ou redondantes. Pour résoudre le problème. Le même principe s'applique
aux services si nous avons un service critique dans notre système, veillant à ce que plusieurs copies, toutes les versions de celui-ci fonctionnent simultanément, peuvent nous protéger contre la défaillance de tout particulier nœud. Créer une redondance dans le système peut supprimer des points de
défaillance uniques et fournir une sauvegarde si jamais nécessaire dans une situation de crise. Par exemple, disons que nous avons deux instances d'un service en cours d'exécution en production. Supposons notre champ de service principal ou dégrader. Ensuite, le système peut basculer vers le second mauvais service. Dans de tels scénarios. Ces véhicules peuvent se produire automatiquement ou peuvent être commandés manuellement. Nous pouvons également nous sentir bien à base de données non mesurée dans le cas où nos champs de base de données primaires. Maintenant, une autre partie importante de la redondance des services consiste à créer une architecture de rien partagé. Dans l'architecture de rien partagé, chaque nœud peut fonctionner indépendamment l'un de l'autre. Cela signifie qu'il ne devrait pas y avoir service plus simple de gestion de l'état ou que nos invités lisent des activités pour les autres nœuds. Cela aide beaucoup à l'évolutivité car de nouveaux serveurs peuvent être ajoutés sans conditions particulières sur la connaissance. Et surtout, ces systèmes sont plus résistants aux défaillances. Comme il n'y a pas un seul point de défaillance. Nous avons toujours un serveur secondaire ou la base de données secondaire au cas où nous devions déclencher un basculement. Examinons maintenant les avantages de la réplication des données. La réplication ADN est généralement effectuée pour obtenir une disponibilité accrue, une latence réduite, une évolutivité et des interruptions réseau ? Non, discutons de chacun en bref. disponibilité embauchée signifie assurer la disponibilité d'un système distribué. Cela signifie que le système continue à fonctionner même dans donne la moitié d'un ou quelques nœuds se remplissent. Donc, nous pouvons simplement dire que cela continue de fonctionner. Désormais, la réplication de latence réduite aide. En réduisant la latence des requêtes de données en gardant les données géographiquement plus près de l'utilisateur, par exemple CDN, il garde une copie des données répliquées plus près de l'utilisateur. Avez-vous déjà pensé à la réduction des flux Netflix ? Cela dit, les latences du graphique ? La réplication des données Will est l'une des raisons de cela. Évolutivité Mec. Ainsi, les requêtes peuvent être servies à partir de copies répliquées des mêmes données. Cela augmente le débit global des requêtes et des interruptions réseau. Artiste quelques livres, même en cas de défaut de réseau. Il est également important de comprendre les inconvénients de la réplication des données. Tout d'abord, la plupart des bases d'étudiants nécessaires que le stockage de la réplique des mêmes données à différents, disons, consomme plus d'espace.. Deuxièmement, réplication
ne devient pas coûteuse, le réplica fournisseur sur différents sites doit être mis à jour. Troisièmement, le maintien de l'uniformité du jour J à différents sites implique des mesures complexes. Regardons maintenant une technique de réplication de données. Cette technique est appelée réplication maître-esclave. C' est l'une des pratiques les plus courantes en matière de réplication de données. Dans la technique de réplication maître-esclave. Le leader, ou vous pourriez dire maître, ou le nœud principal. Ici. On pourrait dire qu'il a un leader. Ou un nœud principal, réplique les données à tous ses followers, qui pourraient être appelés esclaves, sont des réplicas en lecture. Dans certains cas. Nos nœuds secondaires. C' est le mode de réplication le plus couramment utilisé. Chaque fois qu'un nouveau taux vient au maître. Il garde leurs marchandises sèches stockage local. Et depuis les mêmes données à tous ses réplicas comme un journal de réplication d'ordre de flux de chaîne. Mange en direct, puis mettre à jour sa propre copie locale des données telles qu'elles étaient possédées par le nœud principal. De nombreuses bases de données relationnelles comme MySQL, PostgreSQL et vos bases de données SQL comme MongoDB, rethink BB et espresso utilisent ce mode de réplication. Les cartes bleues de message comme Kafka et les indices comme Rabbit MQ utilisent également une réplication basée sur un leader unique. Données. Deux réplicas d'un leader sont copiés de manière asynchrone ou synchrone. Iit méthode de configuration de la réplication a son propre ensemble de avantages et de inconvénients, qui sont actuellement au-delà du cadre de cette discussion. J' espère donc que vous avez un peu de clarté ou de réplication et de redondance des données, ce qui est un principe qui doit être suivi lors de la conception des systèmes.
9. SQL vs NoSQL: Et le monde des bases de données. Il existe deux types principaux de solutions. Bases de données relationnelles et bases de données non relationnelles. Nous les connaissons plus comme SQL et NoSQL. Les deux indivi par défaut, développant le type de destructeur d'information et le V déformé. bases de données SQL et relationnelles stockent les données dans une ligne et des colonnes. Chaque ligne contient toutes les informations relatives à une entité. On pourrait l'imaginer sous la forme d'une table. Avoir plusieurs lignes et plusieurs colonnes. Chaque ligne contient toutes les informations relatives à une entité. Et toutes les colonnes sont les points de données séparés. Certaines des bases de données relationnelles les plus populaires incluent MySQL, Oracle, MS SQL server, SQLite à la fois vert et MongoDB. Parlant de bases de données non relationnelles, bases de données
NoSQL, ce qui suit sont les types les plus courants. Tout d'abord, les magasins de valeur clé. Dans les magasins clé-valeur,
les données sont stockées dans un tourbillon de paires clé et valeur. La clé est un nom d'attribut, ce qui est une bonne valeur. Les magasins de valeur clé méchant incluent Voldemort et DynamoDB. Vient ensuite les bases de données de documents. Dans ces bases de données, les données sont stockées dans des documents au lieu de lignes et de colonnes d'une table. Et ces documents sont regroupés sous la forme de collections. Ainsi, les données sont stockées dans des documents. Et un groupe de documents s'appelle une collection. Chaque document peut avoir une structure entièrement différente. Les exemples de bases de données de documents incluent CouchDB, impair MongoDB. Passons maintenant au troisième type de base de données
appelée bases de données de colonnes d'ID. Au lieu de tables. Dans les bases de données en colonnes, nous avons des familles de colonnes, qui sont des conteneurs pour les lignes. Et comme des bases de données relationnelles. Nous n'avons pas besoin de connaître toutes les colonnes retournées. Et ito n'a pas besoin d'avoir le même nombre de colonnes. Vous pourriez l'imaginer comme ça. Les bases de données Go luminary sont les mieux adaptées à l'analyse de jeux de données volumineux. Maintenant, les exemples incluent Cassandra, base de données HBase. Ensuite, nous avons des bases de données graphiques. Ces bases de données sont utilisées pour stocker des données. Qui est une suppression sont mieux représentés sous la forme d'un graphique. Comme ça. Les données sont enregistrées dans la structure du graphique avec des nœuds appelés entités. Propriétés. Informations sur les entités et les lignes, les connexions entre les entités. Les exemples de bases de données de graphiques incluent Neo4j dans le graphique fini et d'autres. Non, regardons quelques différences de haut niveau entre SQL et NoSQL. Sql est essentiellement sous les systèmes de gestion de base de données relationnelle SGBDR. Des dirigeants. Nosql est soumis à des systèmes numériques non relationnels ou distribués. Ces bases de données ont un schéma fixe ou statique ou prédéfini. Védas. Les bases de données Nosql n'ont pas de schéma, sont un schéma très dynamique. Les bases de données SQL ne sont pas adaptées à l'histoire de données hiérarchiques. Vid, comme les bases de données NoSQL sont les mieux adaptées pour le stockage de données hiérarchique, les bases de données
SQL sont les mieux adaptées pour les requêtes complexes. Vision, vous devez fusionner plusieurs entités pour faire ressortir certaines informations. Les bases de données par rapport à NoSQL ne sont pas si bonnes pour les requêtes complexes. Les bases de données SQL sont particulièrement bonnes Fit Vertical Scaling. Vid comme aucune base de données de suite prend très magnifiquement en charge l'évolutivité horizontale. Regardons maintenant les raisons pour lesquelles vous devriez utiliser des bases de données SQL. Tout d'abord, si vous devez vous assurer des plaintes acides, comme il se plaint, réduit les anomalies et protège l'intégrité de
votre base de données en prescrivant exactement comment les transactions interagissent avec la base de données. Généralement, les bases de données NoSQL sacrifient les plaintes acides pour l'évolutivité et la vitesse de traitement. Mais pour de nombreuses applications de commerce électronique et financières, comme il s'est plaint, les bases de données restent l'option privilégiée. Ensuite, vos données sont structurées et immuables. Si votre entreprise ne connaît pas de croissance massive, cela nécessiterait davantage de serveurs. uniquement en travaillant avec des données cohérentes, il peut être inutile pour vous d'utiliser une
base de données conçue par le système pour prendre en charge une variété de types de données et un volume de trafic élevé. Pas lorsque vous devriez utiliser des bases de données NoSQL. Ensuite, tous les autres composants de votre application sont rapides et transparentes. Bases de données Nosql. Données provenant d'un détournement. Big Data contribue à une grande base de données sans SQL réussie, principalement parce qu'il traite différemment des bases de données relationnelles traditionnelles. Quelques exemples de base de données NoSQL à MongoDB, CouchDB, Cassandra, HBase, comme nous l'avons vu précédemment, null. Les raisons d'utiliser la base de données MySQL sont les suivantes. Lorsque vous stockez de grands volumes de données qui ont souvent peu ou pas de structure. Et la base de données NOSQL fixe des limites sur les types de données que nous pouvons stocker ensemble et nous permet d'ajouter différentes formes comme les nouveaux dangers. Vid, bases de données basées sur des documents. Vous pouvez stocker des données en un seul endroit sans avoir à définir beaucoup de données. Ce sont les Pays-Bas. Ensuite, vous voudrez tirer le meilleur parti du cloud computing et du stockage. Le stockage basé sur le cloud est une excellente solution de tamisage de cours, mais nécessite que les données soient facilement réparties sur plusieurs serveurs pour pouvoir évoluer. L' utilisation de matériel de base, sur site ou dans le cloud, vous
donne les tracas de logiciels supplémentaires. bases de données Nosql telles que Cassandra sont conçues pour être mises à l'
échelle sur plusieurs centres de données. Si vous ajoutez une autre phase de pré-développement. Non, SQL est extrêmement utile pour un développement rapide car il n'a pas besoin de vous préparer à l'avance. Si vous travaillez sur des itérations plus rapides de votre système, qui nécessitent des mises à jour fréquentes de la
personne concernée sans trop de temps d'arrêt entre les versions, une base de données relationnelle vous ralentira. Maintenant, la question se pose, lequel utilisez-vous ? Sql ou au plus égal ? En ce qui concerne la technologie de base de données, il n'existe pas de solution unique. C' est pourquoi de nombreuses entreprises s'appuient sur des bases de données relationnelles et non relationnelles pour différents besoins. Même si aucune suite de bases de données ne gagne en popularité pour cette vitesse et cette évolutivité. Il y a toujours des situations où la base de données SQL hautement structurée peut fonctionner mieux. Choisir la bonne technologie dépend de votre cas d'utilisation. La grande majorité des bases de données relationnelles sont des plaintes acides. C' est-à-dire, cet avortement, atomicité, la consistance, l'isolement et la durabilité. Vds, les bases de données NoSQL sont plaintes de base. Autrement dit, ils sont essentiellement disponibles. État doux. Autrement dit, vous pouvez modifier la base de données quand vous souhaitez et ils fournissent une cohérence éventuelle. Pas hors de la boîte, mais oui, ils fournissent de la cohérence. Donc, quand il s'agit de la disponibilité des données, voyez si obtenir D pour effectuer des transactions bases de données SQL. J' ai toujours débattu avec la plupart des solutions Nozick, sacrifiez car il se plaint de performances et d'évolutivité.
10. Théorème CAP: Hé les gars. Dans cette conférence, nous allons parler des principes de liaison dans les bases de la conception des systèmes. C est synonyme de cohérence, disponibilité, et B est synonyme de dominance des auditions. Ainsi, l'écart entre eux indique qu'il est impossible pour le système logiciel distribué d'augmenter simultanément de plus de trois, la disponibilité
garantie, la cohérence et la tolérance de partition. Ensuite, nous concevons un système distribué. échange entre les écarts est presque la première chose que nous voulons considérer. Lors de la conception d'un système distribué. On peut choisir deux des trois. Qu' est-ce que tout ça veut dire ? Parlant de cohérence, un système est dit cohérent si tous les nœuds voient les mêmes données en même temps. Considérons donc un système distribué. Les trois inconnues interagissent. Donc, simplement parlant, si vous effectuez une opération de lecture sur un système cohérent, il devrait être fait la valeur de l'opération d'écriture la plus récente. Et cela signifie que le plomb devrait provoquer tous les nœuds sur les mêmes données. C' est la valeur du MOSFET et du taux. Donc, comprenons-le avec le, par exemple. Donc, laissez C être fourni notre entrée intégrée du système en tant que x. disons que ce sont nos données et liées cette entrée et ceci est fondamentalement une opération de lecture. Sois radon, relie à notre système. Donc, si vous lisez les données, n'a pas fait notre système à partir d'aucun des autres nœuds. Disons que nous lisons des C. existants
Donc la plupart du temps fait. Done x a été le plus récent. La domination seule. Ni supposons v, quelques nouvelles données à notre système B. Donc, disons que les données que l'
écart d'apprentissage de cette opération d'écriture est d plus un. Donc maintenant, si vous effectuez un système de règlement juridique, vous voyez, il devrait être fait lacune d'apprentissage au lieu de bionique. Parce qu'à ce stade, le déficit
d'apprentissage est notre plus récente population revendiquée. Maintenant, discutons de la disponibilité. La disponibilité dans un système distribué garantit que le système reste opérationnel 100 % du temps. Cela signifie que la consanguinité obtient une réponse quel que soit l'état individuel. Mais cela ne garantit pas que la réponse contient la note la plus récente, aucune garantie du droit. Dans la réponse. Exemple pour ce système, disons V, ils avaient été à trois dans notre système. V, x, y, z au temps t plus un. Donc, alors nous essayons de glaner du système PAR un système hautement disponible, ont fait, soit est allé à trois XYZ. En fonction de la synchronisation entre les systèmes. Cela ne garantit pas la cohérence, mais les systèmes sont hautement disponibles. Autrement dit, le système est opérationnel. Il donne une réponse. N' importe quel linguiste. Voyons maintenant ce que signifie la tolérance. C' est une condition qui indique que le système n'
échoue pas indépendamment du fait que les messages que je suis tombé assez milliards entre les nœuds et le système, domination de
partition est devenue plus d' une nécessité qu'une option dans un système distribué. Il est possible par suffisamment les enregistrements de début à travers les combinaisons de normes et de réseaux. Donc, dans notre système, nous avons trois nœuds. Disons que nous avons trois noeuds. Dans notre système. Nous avons trois noeuds. Ces nœuds sont connectés
au au système. Le système fonctionne toujours. Seulement. Ce nœud particulier commence à dysfonctionnement. Mais nous ne pouvons pas voir que le système est terminé. Il fonctionne toujours. Et cette édition particulière est affectée. Si des données, il serait déterminé par une autre norme qui a dupliqué. Ce noeud. Maintenant, B ne peut pas être un genre nous conduire à qui est commodément disponible. A, cohérent. Et toute défaillance de partition ne
peut faire qu'un système qui a trois propriétés. Parce que pour être cohérent, tous les nœuds doivent voir le même ensemble de mises à jour dans le même ordre. Mais si la prise en charge du réseau est mise à jour, l'
édition peut ne pas arriver aux pétitions avant une partition glande obsolète après avoir mis à niveau. La seule chose qui peut être apprise. Cette possibilité est d'arrêter de régler les linguistes de la variation hors jeu, mais alors le service ne serait plus disponible à 100%. Ainsi, les exemples de systèmes
hautement disponibles et cohérents pourraient ne pas tomber. Tolérance de cloison. Bases de données comme MySQL, SQLite, bases de données relationnelles. D' autre part, les exemples de systèmes hautement disponibles et de dominance des patients ne
sont pas les magasins de données en copropriété comme Cassandra et la tolérance de cohérence et de partition. Et nous ne nous soucions pas de la disponibilité. Ensuite, l'exemple serait MongoDB. Pour conclure, nous pouvons voir que nous ne pouvons attendre que deux des trois discutés. Obtenir n'importe quel système distribué.
11. Ajustement cohérent: Bienvenue dans la vidéo sur la mise en cache cohérente. Avant d'aller de l'avant avec un hachage cohérent, nous devons d'abord comprendre les tables de hachage distribuées. La table de hachage distribuée est
l'un des composants fondamentaux utilisés dans les systèmes évolutifs distribués. Comme nous le savons, les hashtables ont besoin d'un gain. Notre valeur, et la fonction de hachage. La fonction de hachage, mappe la clé à un emplacement où la valeur est stockée. Donc, lorsque nous passons la clé pour la fonction de hachage, il retourne l'index dans la valeur de données de la table de hachage serait stocké. Supposons maintenant que nous concevons un système de mise en cache distribué. Étant donné n serveurs de cache. Et dans la fonction de hachage butane serait d modulo m. Autrement dit, pour trouver quel serveur de cache AGI est présent, nous avons simplement besoin de faire cela modulaire. Et la valeur résultante nous fournira l'index du serveur de cache où notre valeur est stockée. C' est une fonction de hachage simple et couramment utilisée. Mais il présente deux inconvénients majeurs. Tout d'abord, il n'est pas évolutif horizontalement. Chaque fois qu'un nouvel hôte de cache est ajouté au cluster, tous les mappages existants sont interrompus. Parce que notre nombre de serveurs de cache change, notre fonction de hachage change. Et toutes les mappages déjà effectués dans le système existant vont gagner. Donc, ce sera un bin diminué dans la maintenance si le système de mise en cache et en beaucoup de données qu'il devient généralement difficile de planifier sont Dane qui mettent à jour nos mappages de bagages. Deuxièmement, il se peut que la charge ne soit pas équilibrée, en particulier pour les données non uniformément distribuées. Dans la pratique, on peut facilement supposer que les données ne seront pas uniformément réparties. Pour le système de mise en cache, cela se traduit par certains caches qui sont chauds et saturés, tandis que les autres sont inactifs et presque vides. Donc, si nous avons trois serveurs de cache, C1, C2 et C3, il peut arriver que la plupart des lectures de cache sont effectuées à partir de C1 et C2 et C3 ne sont pas classés DAG beaucoup. Cela déserte dans une donnée non uniformément distribuée. Donc, dans ces scénarios, passion
cohérente est un bon moyen d'améliorer le système de mise en cache. hachage cohérent est une stratégie très utile pour les systèmes de mise en cache
distribués et les tables de hachage distribuées. Il permet de distribuer des données
à travers un cluster de manière à minimiser la réorganisation. Ven nœuds sont ajoutés ou supprimés. qui rend le système de mise en cache plus facile. Que l'échelle vers le haut ou vers le bas. Hachage incohérent. Ensuite, la table de hachage est récite. Exemple. Un nouvel argent est ajouté à la grappe. Dans ce cas, seules les clés k par n
doivent être mappées. Si vous vous souvenez. Dans le système de mise en cache, nous utilisons le mode comme fonction de hachage. Donc c'était d modulo N. Donc seulement ceux-ci devraient être remappés. Mais dans ce cas, seul k par n regard doit vraiment cartographier. Ici. K est le nombre total de touches et N le nombre total de syllabes. Alors voyons comment ça marche. En tant que système de fonction de hachage typique, la passion mappe un B à un entier. Supposons que la sortie de la fonction de hachage soit dans la plage de 056. Imaginez que les entiers de la plage sont heureux honorer de telle sorte que les valeurs sont enroulées autour. C' est, et b à la 0 est stocké quelque part ici. Et le chiffre un est stocké un peu ici. Integer do est stocké quelque part ici, et ainsi de suite. Et ce sont 255, qui est probablement stocké ici. Maintenant, étant donné une liste de serveurs de cache, nous devons d'abord les hacher aux individus de notre gamme. Donc, disons que nous avions trois serveurs de cache et les hacher en entiers déserts dans les nombres suivants. A0 est mappé à cinq, B est mappé à un 100, et C est mappé à relatif et NP. Zoom soviétique qui est placé à l'index cinq. B est satisfait de l'indice 100, et C est heureux du fonds indexé MP dans notre lien. Maintenant, alors nous devons mapper n'importe quelle clé à un serveur particulier. Le premier risque. Donc, disons que nous devons cartographier le vn. Donc, nous le passons à notre fonction de hachage. Disons que si elle sort à, Nous allons vérifier notre index. Donc B se déplacera dans le sens des aiguilles d'une montre sur le lien jusqu'à ce que nous rencontrions notre premier argent. Donc l'index de Watson a frappé. Alors. Cela aurait dû être cartographié à cet endroit, mais nous avons notre syllabe de trésorerie la plus proche sur l'indice 5. Donc, cette clé serait mappée à notre serveur a. De même, disons que nous avons DK2 et que la fonction de hachage pour k2 renvoie 115, qui est probablement ici sur notre anneau. Donc ce ghetto doit être cartographié ici. Mais comme il n'y a pas d'argent célébrer ici, nous nous dirigeons dans le sens des aiguilles d'une montre. Et le premier compteur Vn serveur de cache est à la vanité de l'index, c'est-à-dire un serveur de cache c. Donc, la carte, ce schéma dans le serveur de cache c. Voilà comment nous mappons nos p qui sont des serveurs de cache. Voyons maintenant ce qui se passe lorsque nous ajoutons un nouveau settable. Dans ce cas, disons que nous avons ajouté de l'argent comptant qui serait à l'emplacement de l'indice 125. Donc c'est à 500, c'est à 80. Maintenant, il a donné que ça donne toujours des résultats dans un groupe d'entités qui est mappé ici. Et notre serveur de gaz le plus proche est un esclave de l'Atlantique. Cela était déjà stocké ici. Mais pour cela, le ghetto pour lequel la fonction de hachage a retourné 115 carte tablette ici et a été heureux dans notre serveur de cache c. Donc, ce que nous devons faire est que nous avons besoin de
cartographier la peau pour faire nos invités jamais besoin. Donc, nous avons seulement besoin de déplacer les clés avant l'index 125e car le regard restant serait stocké dans le cache, voir seulement les clés qui vise l'argent voir cru être divisé. Certains d'entre eux seront déplacés par les autres gays, ne seront pas touchés. De même, si par hasard notre serveur invité E tombe en panne et qu'il est retiré d'un cluster, n'
aura qu'à se déplacer donné D d'ici à ici. Comme B serait le premier serveur de cache sur cette bague. Ensuite, ce gaz est retiré. Toutes les clés qui ont été mappées à l'origine tomberont dans B. Et seules ces clés auraient besoin d'être déplacées pour que les autres clés ne soient pas affectées. Donc, le seul vécu pour déplacer d par n clés. Dans les deux cas, si nous ajoutons ou supprimons un serveur gash particulier. Pas pour l'équilibrage de charge. Comme cela a été discuté au début, le véritable leader est essentiellement distribué au hasard et peut donc ne pas être uniforme. Cela peut signifier que les oies sur les égouttements sont déséquilibrées. Pour gérer ce problème, nous ajoutons des réplicas virtuels, des tirets de financement. Au lieu de mapper chaque cache à un seul décroché pendant la carte, il aux multiples points sur l'anneau. Ce sont des répliques. De cette façon. Chaque cache est associé à plusieurs parties de la narration. Nous pouvons le faire en ayant plusieurs hachages pour les serveurs de cache eux-mêmes. Comme le nombre de répliques en Grèce, les oies seraient plus équilibrées. Pour cela, nous pouvons avoir plusieurs fonctions de hachage pour nos serveurs gash et de même pour b et de façon similaire pour C. Mais ce faisant, nous pouvons obtenir un gash équilibré.
12. Quen d'une file de message: Dans cette vidéo, nous allons discuter des files d'attente de messages. Et fait avantage lors de la conception d'un système. Est une file d'attente de messages. Sur MessageQueue est un composant du middleware de messagerie qui permet aux applications et
services indépendants d'échanger des informations. Files d'attente de messages. Les messages stockés sont des paquets de données que l'application crée pour qu'une autre application consomme dans l'ordre où ils sont transmis jusqu'à ce que l'application consommatrice puisse les traiter. Cela permet aux messages d'attendre en toute sécurité jusqu'à ce que l'application de réception soit Eddy ? Donc, s'il y a un problème avec le réseau ou l'application de réception, les messages dans la file d'attente des messages ou non perdus. Ces files d'attente de messages sont utilisées pour communication
asynchrone application à application ? Non. Que signifie la communication asynchrone entre les applications ? Communication asynchrone signifie application quand il veut envoyer une application de message m. Mais il ne nécessite pas de réponse immédiate pour poursuivre son traitement. Cela signifie que l'application un continuerait à fonctionner indépendamment du message M reçu par la demande à. L' application deux peut être occupée ou déconnectée. Dans le réseau. L' application est disponible. Et retour une réponse à l'application lorsque dans l'application de maintenance, on peut effectuer un autre sessile crépuscule. Alors, où stockons-nous ces messages ? Évidemment, nous ne voulons pas que notre message soit perdu. Maintenant, voici le message va à une rescousse. files d'attente de messages fournissent un stockage temporaire. Le programme de destination du fournisseur est occupé, ce qui n'est pas connecté. Maintenant, le meilleur exemple pour la messagerie asynchrone est alors qu'un e-mail est envoyé. L' expéditeur peut continuer à traiter d'autres choses sans une réponse immédiate de la part du destinataire. Donc, un outil de message n'est rien d'autre que l'agrégation des messages Gautama et de la file d'attente. La file d'attente contient une séquence de messages envoyés entre les applications attendent leur tour pour être traitées. Message est heureux sur un Q. J'ai stocké jusqu'à ce que le consommateur les croit. Envoyer cette application s'appelle le producteur. Et l'application récepteur est Goldie consommateur. Que tout le producteur doit produire les messages. Et le rôle du consommateur est de consommer les messages. Messages que les données à envoyer du producteur au consommateur. Il peut s'agir d'une réponse à une demande. Message. Les files d'attente ne traitent pas les messages. Il les stocke simplement. Cette façon de traiter les messages dissocie le producteur du consommateur. Le producteur et le consommateur
du message n'ont pas besoin d'interagir avec la file d'attente des messages de la même manière. Parlons maintenant des avantages du Massachusetts. Les files d'attente de messages sont importantes car elles aident à découpler les applications. Ou les applications sont découplées. S' ils peuvent communiquer entre eux sans être connectés. En outre, exécuter l'application n'est complètement pas au courant de l'implémentation de l'autre application. En d'autres termes, il n'y a pas de dépendance entre eux. Maintenant, l'application découplée, toute modification apportée à une application n'affecte pas l'autre application. Tant que le contrat de communication n'est pas violé. La balise brise facilement l'application monolithique ven dans des applications plus petites. Vetted réduit la complexité globale. Il devient plus facile à maintenir et les applications de
débogueur peuvent avoir une application multiplateforme est plus petite. Les applications peuvent être développées indépendamment dans n'importe quel langage de programmation et mises à l'échelle en conséquence. Cela signifie que les applications pourraient être indépendantes du langage de programmation. Adapter les files d'attente de messages. Da est une augmentation de la responsabilité et de la performance d'un système. Les producteurs n'ont pas à attendre que les consommateurs deviennent disponibles. Encore une fois, ajoutez simplement des requêtes dans la file d'attente. Les consommateurs peuvent traiter les messages chaque fois qu'ils sont disponibles. Et ce n'est tout simplement pas des frais généraux dans la lecture. Le message va. Messages photosystème. Même si différentes entreprises d'applications qui ont vu vos données seront perdues et le système devient plus tolérant aux pannes.
13. CDN: Bonjour et bienvenue à la vidéo sur le réseau de diffusion de contenu, ou populairement connu sous le nom de réseaux CDN. Un réseau CDN ou de diffusion de contenu est un réseau de serveurs Web distribué à l'échelle mondiale. Des points de présence impairs dont le but est de fournir un contenu plus rapide. Maintenant, d'abord, parlons des avantages de Simeon. Le contenu est répliqué et stocké tout au long de la saison. Ainsi, l'utilisateur peut accéder aux données qui sont stockées à l'emplacement le plus proche géographiquement de lui. C' est différent et plus efficace que la méthode traditionnelle de stockage du contenu sur un seul serveur central. Comme il évite le goulot d'étranglement sur ce serveur et fournit une vitesse de chargement de contenu élevée. Voyons maintenant comment Internet fonctionne avec et sans CDN. Dans le cas où nous indiquons avoir un réseau CPM. Toutes les demandes de nos utilisateurs sont traitées par le contenu fourni. Mais dans le cas où nous avons un réseau cd entre le ContentProvider et nos utilisateurs. Le contenu est servi par le CDN au lieu du fourni. Cela évite tout goulot d'étranglement potentiel. Par exemple, le contenu fourni. Étant donné que le réseau de CD est distribué globalement, refusé accès à une copie des données près de lui-même, par
opposition à tous refusé d'accéder au même serveur central. C' est en haute vitesse de chargement du contenu, améliorant
ainsi l'expérience utilisateur. Si toutes les données se trouvent sur le serveur central, l'expérience utilisateur est affectée négativement par une vitesse de chargement limitée. Plus la distance entre l'utilisateur et le serveur est grande, plus la lecture du contenu est longue. Pour le dire plus simplement. Le but d'un CDN est d'améliorer l'expérience utilisateur et de fournir une utilisation plus efficace du réseau. Un parfait exemple d'ensemencement est Netflix. Source Netflix, toutes ses données sur ce réseau. Donc, chaque fois que vous commencez à lire une vidéo, Voyons voir, Netflix a Silvers basé aux États-Unis. Et voyons, si vous décidez en Inde, sans coelom, Netflix devrait apporter toutes les données de lui, nous serveurs à vous ici en Inde. Cela aurait entraîné des suppressions de nombre pour mettre en mémoire tampon la vidéo. Mais vous ne remarquez jamais un manque vital regarder votre vidéo parce que le contenu est stocké dans les réseaux CDMA. Vous en tant qu'utilisateur en Inde, accédez au contenu de ce réseau plutôt, vitré, géographiquement beaucoup plus proche de vous. Par conséquent, cela se traduit par une meilleure expérience utilisateur et attend également d'accélérer les serveurs Netflix. Aux États-Unis. Les fournisseurs de contenu, tels que les entreprises de médias et les fournisseurs de commerce électronique, bcb et les opérateurs de livrer a fait point fin. Qui a fait Audience ? Et fait un FAI,
opérateurs et opérateurs de réseau CBGB pour les centres d'hébergement dans leurs centres de données. Il existe deux mécanismes clés qui expliquent le fonctionnement du CDN. Tout d'abord, gardez le contenu important distribué à plusieurs centres de données distribués à l'échelle mondiale. Il est donc plus proche de l'utilisateur final et donc plus rapide à télécharger. Et deuxièmement, vous configurez des optimisations basées sur le type de contenu pour obtenir le contenu à l'utilisateur le plus efficacement. Cela signifie que si vous mettez en mémoire tampon les vidéos sur votre smartphone, il est de la responsabilité du CDN de vous fournir uniquement la version SD de la vidéo. Si vous mettez la vidéo sur votre ordinateur portable, audio, même il vous fournirait une vidéo de résolution HD. Cela déserte une meilleure optimisation du réseau. Comme vous n'avez pas besoin d'une vidéo itérative, il sera mis en mémoire tampon sur votre smartphone. Donc, ce v, un CDN décharge l'auto graphique directement du ContentProvider, entraînant
ainsi des oisons possibles. L' emplacement est essentiel pour la vitesse de diffusion du contenu. Plus l'utilisateur est éloigné du programme que les données sont stockées, plus il faudra
de temps pour que le contenu atteigne l'utilisateur. Et cette intense affecte négativement l'expérience utilisateur. Et en déduisant le CB1 résout ce problème et fournit à l'utilisateur une expérience utilisateur beaucoup meilleure.