Préparer l'entrevue de conception de système | Programming Made Easy | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Préparer l'entrevue de conception de système

teacher avatar Programming Made Easy, Software Developer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Bienvenue dans ce cours !

      1:35

    • 2.

      Qu'est-ce que la conception de systèmes ?

      5:33

    • 3.

      Un modèle pour toute question

      7:12

    • 4.

      Le service de raccourcissement des URL

      24:22

    • 5.

      L'application de partage de photos

      19:02

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

83

apprenants

--

À propos de ce cours

Aujourd'hui, presque toutes les entreprises demandent la conception de différents systèmes dans leurs entretiens de conception de systèmes. Principalement le tour de conception de système s'adresse aux personnes expérimentées, mais les grandes entreprises comme celles de FANG et ainsi de suite, sont désireux de demander aux designs même des plus frais. Il existe un tour dédié d'une à deux heures pour la conception du système. Le cycle de conception de système a de multiples objectifs, l'intervieweur veut connaître votre vaste connaissance et il veut comprendre comment vous vous rapprochez d'un problème ouvert et comment vous faites face à des situations stressantes.

Le design de système est également connu sous le nom de conception de haut niveau. La conception de haut niveau n'est rien d'autre que de décider des composants dont nous aurons besoin dans notre système, de la manière dont tous les composants communiqueront les uns avec les autres ainsi que des systèmes externes et de la capacité que nous sommes la capacité de notre système. Il s'agit d'éléments importants tout en concevant n'importe quel système pour le rendre fiable, disponible, cohérent et efficace.

Ce cours est conçu de manière progressive pour la compréhension. Initialement, tous les concepts et composants de la conception du système sont discutés. Une procédure complète étape par étape est expliquée pour résoudre tout problème de conception de système. Toutes les études de cas sont données de manière complète et sont conçues en suivant ces étapes.

Rencontrez votre enseignant·e

Teacher Profile Image

Programming Made Easy

Software Developer

Enseignant·e

Compétences associées

Design Plus de design Scénographie
Level: All Levels

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Bienvenue dans ce cours !: Bonjour les gars et bienvenue dans ce cours sur la préparation de l'entretien de conception du système. m'appelle Alex et je suis ingénieur logiciel, le test est passé et je donne également entretiens de conception de systèmes pendant mon séjour dans des sociétés de logiciels. Lorsque j'ai entendu parler de la possibilité de créer un cours pour plus d'explications sur ces entretiens complexes de type II étais très impatient d'en développer un. Ce cours sera structuré en quatre leçons qui contiennent des étapes pratiques à suivre afin de comprendre exactement ce que les intervieweurs attendront avec impatience lors de la planification de ces types d'entretien que vous allez d'abord évoluer, vous présenter ce qu'est la conception du système. Ensuite, nous examinerons le modèle qui fonctionne lorsqu' il s'agit de résoudre toute question d'entretien de conception de système. Après cela, nous allons également résoudre deux des questions d'entretien les plus courantes dans ce domaine, concevant une nouvelle URL, service de raccourcissement et un système de partage de photos. Si vous souhaitez améliorer vos compétences en entrevue d'ingénieur logiciel, envisagez ce cours pour vous. n'y a pas d'autres exigences qu'une connexion Internet S pour le projet de cette classe, ce sera extrêmement pratique et vous devrez suivre les étapes présentées dans le modèle de cours. Vous pouvez donc commencer votre parcours de résolution de questions d' entrevue de conception de systèmes. Nous avons pensé que c'était dit, je pense que nous sommes prêts. voit dans la première leçon. 2. Qu'est-ce que la conception de système ?: Bonjour les gars et bienvenue dans le système. Vous lui avez dit un tutoriel interviewé. Dans cette conférence, nous allons discuter de ce qu' est exactement la conception du système, ce qui est censé être un entretien de conception de système. Nous allons également examiner certaines bonnes pratiques générales lorsqu'il s' agit de votre propre entretien de conception de système. Vous les placez peut-être en position où vous tentez décrocher un emploi pour une entreprise d' ingénierie logicielle. Et vous avez entendu les deux, je vais avoir une entrevue de conception de système ainsi que des entretiens plus techniques où vous êtes censé enduire. En général, dans les entretiens de conception de systèmes, vous n'avez pas vraiment le droit d'enduire. Peut-être juste un peu pour prouver vos points dans certaines parties. Maintenant, commencez avec la définition de ce que le système a conçu la facilité. Il s'agit simplement du processus consistant à définir différents modules, interfaces, composants, ainsi que les données d'un système afin de répondre aux exigences spécifiées dans votre question. Plus récent lors de l'entrevue. Maintenant, le processus de développement du système est en fait le processus que vous allez effectuer à votre travail. Si vous décrochez la position de développeur, où vous allez réellement créer ou modifier le système. Parallèlement aux processus, modèles, méthodologies et pratiques utilisés pour les développer. Mais pour l'instant, la conception du système n'est que le processus de définition des composants. Il s'agit donc essentiellement de ce qui serait nécessaire lorsque vous essayez de développer un projet à partir de zéro. passant à l'entrevue à part cet entretien de conception de système que vous auriez peut-être mené dans le seul but de permettre aux candidats qui l' acceptent. Comme peut-être des programmeurs, mais il peut s' agir aussi d'ingénieurs ou de designers. L'occasion de prouver leur expertise dans le domaine auquel ils postulent. L'application tangible des connaissances dans résolution d'un problème réel auquel l'entreprise pourrait être confrontée. Il s'agit donc là encore très gros problèmes et d' ordre général. On vous demandera donc d'implémenter quelque chose comme un chat WhatsApp ou quelque chose du genre. Nous allons également avoir des exemples concrets plus loin dans ce cours. Mais encore une fois, ce sont de gros problèmes et vous devez en parler et réfléchir à la façon dont vous les implémenteriez de manière optimale du point de vue de la complexité temporelle et spatiale. Aujourd'hui, cet entretien de conception de système est également mené plus tard dans le processus d'entretien. Tout d'abord, il se peut que vous receviez un entretien technique où on vous demande de coder un problème réel. Et plus tard dans le processus d' entrevue, DC, vous avez une connaissance préalable de certains sujets et vous pouvez également voir les choses d'un point de vue plus large. Ils vont également vous donner l'entretien de conception du système. Maintenant, cet essai avait pour but de voir à quel point vous travaillez en équipe. Et vous abordez également la résolution d'un problème en utilisant des questions qui sont, comme je l'ai déjà mentionné, ouvertes. Et il suffit d' arriver à la meilleure solution possible. Cet entretien est censé analyser votre traitement, résoudre les problèmes, votre processus de réflexion dans la création et la conception des systèmes pour aider les clients éventuels dans l'entreprise que vous souhaitez intégrer besoins. C'est également l'occasion pour vous montrer au personnel recruteur, soit au responsable ou aux autres développeurs avec lesquels vous passez cette entrevue. Les deux sont précieux pour le membre, en affichant vos compétences de cette manière. Lorsqu'il s'agit de questions d' entrevue et de réponses dans la conception du système, elles sont généralement très ambiguës. Et c'est simplement pour permettre la possibilité de démontrer vos qualifications. Mais vous n'avez pas besoin de vous précipiter pour donner une réponse qui pourrait être erronée ou même pas erronée, mais pas suffisamment documentée. Vous vous rencontrez également pour poser des questions avant répondre à leur question dans le but de restreindre la portée. Donnez-vous une direction pour clarifier également les explications. Il s'agissait d' une présentation générale d' un entretien de conception de système. Au cours de la prochaine conférence, nous allons discuter un peu façon dont nous pouvons aborder chaque question d' entretien de conception de système. Il y a un processus en quatre étapes qui a été documenté pour fonctionner, tournant pour y jeter un coup d'œil également. Mais pour l'instant, je vous remercie beaucoup rester avec moi jusqu'à la fin de cette conférence. Et j'ai hâte de vous voir dans le prochain. 3. Un modèle pour toute question: Bonjour les gars et bienvenue dans le tutoriel de l' entretien de conception du système. Dans cette conférence, nous allons examiner quelques étapes que nous pourrions utiliser dans un modèle lorsque nous recevons une question de conception système lors d'une entrevue. Ce moment temporaire dont le moment est sur le point de parler est une taille unique qui convient à tous les types de modèles lorsqu'il s'agit de questions d' entrevue de conception du système, il y a juste quelques étapes que vous devez vous assurer que vous répondez à une question d' entretien de conception système. Pour commencer avec ce modèle, la première chose à partager lorsque l'on vous pose la question c'est que vous le comprenez parfaitement. Nous devons donc comprendre ce problème. Ils ont besoin que vous résolviez et établissiez la portée de la conception dont vous allez parler. C'est la partie où vous devez poser des questions juste après avoir donné tous les détails sur les questions. Vous devrez également définir toutes les contraintes susceptibles d'apparaître. Vous n'avez pas besoin de vous précipiter pour essayer de résoudre le problème avant d'avoir tous les faits et d'avoir d'autres choses qui pourraient ne pas vous être claires par l'intervieweur. La prochaine étape consisterait à proposer une conception de haut niveau. Je dis que vous n'avez pas besoin de vous lancer dans la mise en œuvre sans le confirmer. L'approche à laquelle vous envisagez répond réellement à toutes les contraintes qu'ils souhaitent. Vous pouvez donc proposer une approche qui, selon vous est la meilleure pour résoudre le problème de conception du système. Voyez comment ils réagissent à votre approche avant de vous lancer dans la mise en œuvre même si vous entrez dans les détails de chaque partie de votre proposition. Maintenant, la troisième partie est en fait faite en prenant le plus de temps du mode, qui est le design Deep Dive. Cela se produit une fois que vous avez validé auprès votre intervieweur que vous êtes sur la bonne voie, vous le savez, à ce stade, il vous suffit d'entrer dans tous les détails de la demande résoudre ce que vous avez trouvé. Et c'est là que vous devez avoir une compréhension approfondie et un vocabulaire approfondis de la conception des systèmes. Et lors de cette plongée profonde de conception, il y a encore beaucoup d'étapes, et commencent à plonger en profondeur. La première question que vous devez poser concerne les exigences. Et les exigences peuvent être fonctionnelles ou non fonctionnelles. Les exigences fonctionnelles ne sont que des fonctionnalités que le problème que vous résolvez fournit aux utilisateurs. Par exemple, sur vos réseaux sociaux, il existe une fonctionnalité qui vous permet aimer une publication de n'importe quel autre utilisateur. C'est une exigence fonctionnelle. Vous devez établir et passer en revue toutes les exigences fonctionnelles avec vos intervieweurs par cours, les énumérer et valider leur importance. Maintenant, les exigences peuvent également être infonctionnelles, et il peut y avoir quelques éléments comme la latence, qui est le temps de réponse de l'interaction de l'utilisateur. Fiabilité, ce qui signifie qu' il n'y aura aucune perte de données. La cohérence, ce qui signifie que la haute disponibilité. Maintenant, deux choses que vous devez également garder à l'esprit lorsque vous essayez de concevoir vos composants. Vous devez les fabriquer. Tout d'abord, tolérant les pannes, ce qui signifie que votre système est opérationnel en tout temps, même s'il peut y avoir des erreurs ou des erreurs de base de données. Et ils doivent aussi être des maladies évolutives. Un autre fait important, évolutif, signifie simplement que vous devez gérer la quantité croissante de trafic sur votre système. J'y vais. De plus, à la deuxième partie de ce design Deep Dive. Outre les exigences, vous devez également effectuer une estimation du stockage basée sur la modalité des données, il vous suffit de donner une estimation approximative de la quantité de données à stocker. Vous devez également réfléchir au nombre de demandes, au service que vous fournissez et au ratio de lecture/écriture. Après avoir parlé de toutes ces estimations de stockage, vous devez penser à une conception de base de données. Ici, les actions que vous êtes utilisateur peuvent effectuer pour interagir avec votre système sont en cours. Vous pouvez également réfléchir ici au type de base de données que vous allez utiliser et à la raison pour laquelle vous pouvez opter pour SQL, NoSQL, etc. Il vous suffit de discuter de chaque option et réfléchir à celle qui convient le mieux à votre solution. Ensuite, une quatrième étape consisterait à lancer une conception de base de haut niveau, où vous pouvez écrire sur les clients, les serveurs et la base de données. Et à partir de cette conception de base, vous pouvez en outre entrer dans détails et isoler les services, partitionner les données évoquées sur la mise en cache, ainsi que la réplication des services et bases de données, même l'équilibrage de charge et les files d'attente de messages. Si cela correspond à votre problème spécifique. Il y a bien sûr optionnel d'autres choses auxquelles vous pouvez penser en fonction du problème qui vous est donné, qui peut être le chiffrement de certains messages ou mots de passe. Une télémétrie qui vous permet de garder trace des choses qui sont le plus utilisées dans votre application. Certains services de découverte de services API Gateway et également d service analyse qui analyse les demandes et la bêta de l'utilisateur. Et après cette conception en profondeur, la dernière étape, vous devez prendre cela pour se terminer, qui signifie qu'avec la conception donnée, pour construire. Si cela semble raisonnable, vous pouvez penser à identifier certains goulots d'étranglement et les domaines d' amélioration et en parler un peu. Il s'agit de la structure générale que vous devez garder à l'esprit avant commencer votre entretien de conception du système sans même être confronté au problème. Dans certaines conférences futures, nous allons examiner des questions spécifiques d' entrevue de conception de système telles que la conception du petit système d'URL, moteurs de recherche, des lecteurs partagés , etc. Je peux voir comment j' applique toutes ces étapes à partir de ce modèle exact, mon approche lors de la résolution de problèmes de DC. Si cela vous semble intéressant, j'ai hâte de vous voir lors des prochaines conférences. Merci beaucoup d'être resté avec moi jusqu'à la fin de celle-ci. 4. Le service de raccourcissement des URL: Bonjour les gars et bienvenue dans le tutoriel de l' entretien de conception du système. Dans cette conférence, nous allons discuter d' un problème célèbre souvent évoqué dans ce type d'entretiens. Plus précisément, la conception d'un nouveau service de raccourcissement d'URL. Comme par exemple, vous avez peut-être vu un petit point d' URL L et ainsi de suite. Dans cette conférence, je vais passer en revue tous les aspects que vous devez prendre en compte lorsque S porte ce sujet dans un entretien de conception de système. Et après avoir regardé cette conférence, vous allez savoir comment répondre à cette question. Mais non seulement cela, vous saurez également comment aborder des études de problèmes similaires. Parce qu'en résolvant ce problème, nous allons également respecter le modèle que nous devrions utiliser pour toute question de conception d' entretien système qui nous est posée. commençant par ce problème d' entretien, nous devons concevoir, comme je l'ai dit, un service de raccourcissement d'URL, comme de minuscules URL. Et cette surface fournira, bien sûr, lyse courte, la direction rouge des URL trop longues. Maintenant, la difficulté de l'entretien de conception du système est assez basique et elle est souvent la plus importante dans l'entretien de conception de système. Il est donc très important que vous sachiez comment résoudre ce problème. La première chose dont nous devons discuter est pourquoi devons-nous raccourcir l'URL ? Voici plusieurs raisons et pourquoi nous en aurions besoin. Tout d'abord, ils économisent beaucoup d'espace lorsqu'ils sont affichés, prédisent le message, etc. De plus, si vous voulez les taper à partir de votre propre clavier, vous êtes moins enclin à commettre des erreurs lorsque vous les tapez. Il est également utilisé pour optimiser les liens entre les appareils et mesurer les performances des publicités. La deuxième chose que nous devons aborder concerne les exigences et les objectifs de notre système que nous devons concevoir. Lorsque je me pose cette question, je vous rappelle ici que lorsque vous êtes dans une question d' entretien de conception de système, ainsi que d'autres types d'entretiens. Et on vous pose des questions. Vous devez clarifier toutes les exigences au début. Avant d'essayer de répondre à votre problème. Vous devez poser la question appelée pour trouver la portée exacte du système que vous êtes intervieweur à l'esprit, en vous basant sur les fonctionnalités que cette petite surface URL devrait fournir aux utilisateurs finaux de service. Nous les avons divisées en deux catégories principales d'exigences, qui sont fonctionnelles et non fonctionnelles. Lorsque nous réfléchissons aux exigences fonctionnelles, nous pouvons penser à donner une URL à notre service et à pouvoir générer un retour plus court et unique. Et c'est ce qu'on appelle le lien court. Ce lien fourni par notre service doit également être suffisamment court pour être facilement copié et collé. Et nous allons discuter plus tard de ce que signifie assez court et nous nous sommes également mis d'accord sur ce terme. Maintenant, la deuxième exigence fonctionnelle peut être que l'utilisateur puisse choisir prochainement une personnalisation pour ses URL. Donc, s'ils ne veulent pas un produit aléatoirement par notre surface, ils devraient également pouvoir choisir l'une des leurs. Ces liens fournis par notre surface devraient également avoir une durée après la mort. Ils doivent être supprimés et expirer. Sinon, notre base de données déborderait à un moment donné si vous continuez à y avoir ces liens. Enfin, l'accès des utilisateurs à un lien court doit bien entendu être lu vers le lien original que représente le lien court. Il existe également des exigences non fonctionnelles pour le service de raccourcissement d'URL, à savoir que la direction rouge doit se produire en temps réel sans aucune latence. Parce que imaginez que vous voudriez cliquer un peu sur le lien L-Y et que le chargement prendra une éternité. Vous étiez un lien réel auquel vous souhaitez accéder et qui ne serait pas bon du tout. Et aussi ennuyeux. Une autre exigence non fonctionnelle serait que le lien raccourci fourni ne soit ni devinable ni prévisible par un utilisateur éventuel malveillant. Les dernières exigences non fonctionnelles les plus importantes. Ce serait que notre système, notre service devrait être hautement disponible. Parce que s'il était en panne, toute la redirection d'URL est qu'elle conduirait bien sûr, en bas. Certaines exigences supplémentaires ne peuvent pas être que notre service soit accessible aux API. Ainsi, les tiers peuvent faire une demande réelle à nos points de terminaison et obtenir une URL raccourcie en réponse si la demande est correcte. De plus, quelques analyses que nous pourrons faire avec ce citronnier. Et ils devraient concerner le nombre de fois où la Résurrection s'est produite et aussi le plus souvent où la direction est liée, l'accès et des choses comme ça. Après avoir discuté de toutes ces exigences et coûts du système, nous pouvons passer au troisième, l'estimation de la capacité que le service devrait avoir et aussi la contrainte à battre. Donc, lorsque nous pensons au service que nous allons mettre en œuvre, il sera bien sûr lu lourdement. En effet, de nombreuses demandes de direction rouge comparativement au raccourcissement d'URL seront disponibles. Et nous pouvons supposer un rapport d'environ 90 pour un entre lecture et écriture. Parce que si vous y réfléchissez, vous ne générez le lien qu'une seule fois, mais bien sûr, il sera lu beaucoup plus d'une fois. Maintenant, les estimations du trafic pour le service, nous pouvons supposer que nous allons avoir plus 100 ou 500 millions de nouvelles raccourcissements d'URL par mois créés. Donc, 500 millions d'URL sont peut-être un service de tour. Avec notre pourcentage de lecture/écriture, nous pouvons nous attendre à environ 50 milliards d'érections rouges au cours de ce mois. Nous pouvons également penser à des requêtes par seconde pour notre système juste pour éviter que notre base de données ne se bloque. Mais en dehors de cela, nous devons également examiner les estimations du stockage. Ici, nous pouvons encore faire des estimations. Supposons que nous stockons toutes les demandes de raccourcissement d'URL pendant cinq ans. Étant donné que nous disposons de 500 millions de nouvelles URL et d' objets B et D que nous prévoyons stocker , ce sera environ 30 milliards de dollars. En supposant qu'ils aient pris entre 400 et 500 octets chacun, nous aurons besoin d' environ 15 téraoctets pour stocker l'ensemble de nos données. Nous devons également réfléchir aux estimations de la bande passante, pas seulement à l' estimation du stockage, nous pouvons nous attendre à environ 200 à 300 nouvelles URL chaque seconde. Et c'est bien sûr un top. Nous allons voir le haut de cette gamme. Ainsi, le total des données entrantes pour notre service serait environ 500 octets par demande , deux ou 300 nouvelles URL et B seconde, soit environ 100 à 200 kilo-octets par seconde. Une demande de lecture. Comme chaque seconde, nous prévoyons que 20 à 30 000 URL sont déjà orientées, le total des données sortantes sera d' environ dix mégaoctets par seconde. Nous pouvons également examiner une estimation de la mémoire. Et si nous voulons attraper certaines de nos URL courtes les plus utilisées qui sont très SH a dit x. Eh bien, nous pouvons examiner un peu la règle 8020. Cela signifie que 20 % de nos URL généreront 80 % du trafic. Donc, 20 % de nos URL courtes générées seront les plus chaudes. Et à court terme, nous pouvons constater que si nous avons 20 à 30 000 demandes par seconde, nous recevrons environ 1,7 à 8 milliards de demandes par jour. Pour en capturer 20 %, nous aurons besoin d'environ 170 gigaoctets de mémoire. Comme vous l'avez vu dans mon approche, la partie de l' estimation de la capacité et contraintes doit être très simple en réfléchissant à la limite et en estiment la capacité réelle et la bande passante Il va être pris par surface mise en œuvre. J'ai dit que nous pouvions également examiner certaines API et discuter de cette partie. Nous pouvons mettre à disposition certains points de terminaison que notre service va fournir à des tiers qui souhaitaient accéder à notre affichage de service, faire des demandes à nos points de terminaison et revenir en tant que répondre à l'URL raccourcie. Par exemple, nous pouvons avoir un point de terminaison appelé « créer l'URL ». Et il peut prendre l' URL d'origine comme paramètre de chaîne, qui est bien sûr l'URL d'origine que vous souhaitez raccourcir. Et aussi une sorte de clé associée à la clé développeur API d'un compte. Nous savons donc qui fait ces demandes et nous avons une certaine sécurité dans ces parties. Comme je l'ai déjà dit, ce point final, nous retournerions bien sûr l'insertion réussie. Il va bien sûr renvoyer une chaîne avec l'URL raccourcie si la demande est faite. Eh bien, et si ce n'est pas le cas, peut-être un code d'erreur, nous pouvons également avoir un point de terminaison d'URL de suppression. Ce qui est important, vous pouvez également le mentionner. Nous devons également réfléchir à la façon de prévenir les abus. Si nous exposons une API parce qu' un utilisateur malveillant pourrait vous mettre hors service et détruire vos services s'il met une URL olive c'est la conception actuelle et remplit votre base de données. Nous pouvons imposer ici une certaine limite à la clé développeur API. Il peut être limité à un certain nombre de créations d'URL qui disent dix ou 20 jours ou quelque chose du genre. La prochaine étape consisterait à réfléchir à la conception et au schéma de la base de données. La définition du schéma dans les premiers stades de l'entretien vous aiderait vraiment à comprendre le flux entre les composants vous guiderait vers un partitionnement ultérieur des données. Maintenant, certaines observations ici seraient que nous devons stocker des milliards de dossiers pour les services. Nous allons avoir beaucoup d'URL raccourcies. Mais ces objets vont être très petits, comme je l'ai dit, 500 kilo-octets. n'y a aucune relation entre les enregistrements. Donc, à part le stockage des utilisateurs qui ont créé cette URL, vous êtes à peu près libre de faire ce que nous voulons ici. Et une autre observation concernant la conception de la base de données et pertinente ici est que notre service va être très lourd sur la partie rouge. Nous allons avoir besoin, comme je l'ai dit, de deux tables, une pour stocker les informations sur les mappages d'URL et l'autre pour les données de l'utilisateur, qui a créé le lien court. Puisque nous prévoyons stocker beaucoup de rangées. Et nous n'avons pas non plus besoin de maintenir une relation entre les objets. Maintenant, le type de choix SQL serait très bon ici car il est également très facile à mettre à l'échelle. Nous pouvons donc regarder quelque chose comme Dynamo DB. Je suis venu ici au fur et à mesure que vous résolvez, nous devons créer le schéma de base de données lors d'une interview et réfléchir également au type de base de données à utiliser et suggérer une à partir de vos propres connaissances. La sixième étape sera la conception et l'algorithme de base du système. Nous allons donc nous lancer dans la mise en œuvre de la façon dont notre service va fonctionner en coulisses. Le problème que nous résolvons ici est de générer la clé unique raccourcie qui sera mappée à un SIC d'URL de plus en plus grand. Dans cette situation, nous avons deux approches. Nous pouvons générer ces clés de ligne avec un service de génération de clés. Et il va générer des chaînes aléatoires de six lettres préalable et les stocker dans une nouvelle base de données. Chaque fois que nous voulons raccourcir l'URL ici, nous pouvons en prendre une qui est déjà générée par la surface et ses années. Cette approche est très simple et rapide, mais parce que nous n'encodons pas l'URL, avons donc pas à nous soucier de la duplication ou des collusions. Le service de la génération de clés va s' assurer que toutes les clés seront uniques. Nous devons également garder à l'esprit certains problèmes de concurrence ici, car dès qu'une clé est utilisée, elle doit être marquée dans notre base de données pour s'assurer qu' elle ne sera plus utilisée. Et s'il existe plusieurs serveurs qui lisent ces clés simultanément, vous pouvez obtenir un scénario dans lequel deux services ou plus ont essayé de lire à partir de la base de données, même si, depuis le plus haut jusqu' au service points de terminaison, ce serait très moins probable. Les serveurs peuvent désormais utiliser ces systèmes de génération pour lire et saisir des chapiteaux dans une base de données. Et ils peuvent utiliser deux tables pour ranger les clés. Un pour les clés réelles qui ne sont pas encore utilisées, et l'autre pour les clés déjà utilisées. Et dès que ce service de génération donnera la clé à l'un des serveurs, mangez-les et déplacez-les sur la table. Nous devons également penser ici, si notre système de génération, étant le système unique de l'ensemble de notre service, ne serait-il pas mauvais s'il mourrait ? Et c'est un très bon point car nous avons besoin d' un réplica de secours, ce système de génération afin d'avoir un serveur de secours capable de prendre le relais pour les générer, fournir facilement quelque chose arrive à une approche primaire. Maintenant, une autre approche ici, autre dégénérescence morte des clés avec le service. Permet également de coder le codage URL réel. Une URL réelle peut être réalisée en calculant un hachage unique. Soit si nous parlons de la photo 250 places ou des cinq vides, et que nous pouvons hacher l' URL donnée avec ces algorithmes, ces hachages peuvent être codés pour affichage. Une question raisonnable à cette approche serait quelle serait la taille de la clé abrégée ? Il peut y avoir six à 20 caractères égaux, mais ce serait une clé assez longue. Nous pouvons utiliser le codage base 64. Et si nous allons utiliser des touches de six lettres, il faudra environ 64 à la puissance de six chaînes possibles. Si nous générons huit lettres de clés longues, nous aurons environ 280 billions de chaînes possibles. Mais pour notre système, le numéro de lettre serait assez élevé. Et nous pouvons supposer que six lettres suffisent pour notre nombre d'URL. Maintenant, si nous utilisons l'algorithme MD5 comme fonction de hachage, il fournira, comme vous le savez peut-être déjà, valeurs de hachage de 128 bits. Après le codage en base 64, nous obtiendrons une chaîne comportant plus de 21 caractères. Nous ne disposons désormais que de six ou huit caractères par touche courte. Comment allons-nous alors choisir notre clé ? Eh bien, nous pouvons prendre les premières lettres, mais cela peut entraîner la duplication des clés. Et pour résoudre ce problème, nous pouvons choisir de mettre d'autres caractères hors de l'encodage ou de les échanger entre eux pour éviter complètement ce problème. Nous pouvons également, après avoir donné la solution lors d'une entrevue, réfléchir à certains problèmes avec notre solution, si cela peut s'avérer ne pas être à l'épreuve des balles et que ces différents problèmes viennent de vous et non de la intervieweur. Vous obtiendrez probablement des points supplémentaires car vous serez un employé éventuel plus conscient. Les différents tissus avec l'encodage d'une URL réelle à l'aide d'un hashtag. La solution unique peut être que si plusieurs utilisateurs entrent la même URL, ils peuvent obtenir la même URL raccourcie. Le problème de concurrence est que c'était le cas B, la dernière approche également. Mais en voici un autre. Que se passe-t-il si des parties de l' URL sont codées ? Les solutions de contournement ici encore, l'ajout d'un numéro de séquence croissant à chaque URL d'entrée pour la rendre unique et générer son hachage. Une autre solution pourrait consister à ajouter l'ID utilisateur, qui doit être unique à l'URL d'entrée. Si l'utilisateur ne s'est pas connecté ici, cela pourrait poser problème car nous en aurions besoin pour confirmer l' unicité de la clé. Même si après toutes ces mesures que nous avons prises pour nous assurer que rien ne peut se produire, nous avons toujours un conflit. Nous pouvons continuer à générer la clé jusqu'à ce que nous obtenions la clé unique. Conclure le système de base, concevez une partie d'algorithme. La deuxième partie serait le partitionnement et la réplication des données de notre service. Pour étendre notre base de données, nous devons la partitionner afin qu'elle puisse stocker plus d'informations. Nous avons besoin d'environ des milliards d' entrées dans notre base de données. Et ici, nous pouvons jeter un coup d'œil aux deux types de partitionnement qui existent, à savoir la clé et le partitionnement basé sur le hachage. commençant par les URL du portail de partitionnement basé sur la plage dans des partitions distinctes basées sur les clés de hachage, caractères ou même l'un d'entre eux. Nous pouvons donc enregistrer toutes les URL commençant par exemple, blé ou lettre A dans une partition, et sauvegarder celles qui commencent par la lettre B dans une autre, et ainsi de suite. Et en regardant par contraste le partitionnement basé sur le hachage dans ce schéma, nous pouvons prendre le hachage de l'objet que nous stockons, puis calculer en fonction de la partition à utiliser. Dans notre cas, nous pouvons prendre le hachage de la clé ou le raccourcissement pour déterminer la partition laquelle nous allons démarrer cette URL spécifique. La prochaine chose à laquelle nous devons réfléchir lorsque abordons le problème de conception du système est la partie cash. Nous pouvons donc détecter les URL fréquemment consultées comme nous l'avons déjà suggéré précédemment. Et nous pouvons utiliser n'importe quelle solution d'étagère existante par memcached par exemple. Mais nous pouvons également stocker des URL complètes. Et ce faisant, stockez l'URL complète de leurs hachages respectifs dans leur surfeur dévoué. Dans cette approche, avant de penser, le stockage principal peut rapidement vérifier si le cache possède déjà l'URL de conception. Et ainsi, un service plus optimal. Nous devons également réfléchir ici à quantité de mémoire cache que nous devrions disposer. Nous pouvons donc démarrer. Environ 20 % du trafic quotidien et en fonction des habitudes d'utilisation du client, ajustent en outre le nombre de requêtes de serveurs dont nous avons besoin. Comme on l'a estimé ci-dessus, nous avons besoin d' environ 170 gigaoctets de mémoire pour encaisser 20 % du trafic. Puisqu'un service moderne peut contenir 256 gigaoctets de mémoire, il peut facilement insérer toute l' argent dans une seule machine. s'agissait de la partie mise en cache. Nous pouvons également penser à l' équilibreur de charge de notre système, ce qui est assez simple. Nous pouvons penser à ajouter cette couche d'équilibrage de charge à trois endroits. Et ce serait entre les clients et les serveurs d'applications, ainsi qu'entre les serveurs d' applications, les serveurs base de données et les serveurs de cache. Passons à la question de la danse à laquelle nous devons réfléchir lorsque nous avons question de l' entretien de conception de systèmes la question de l' entretien de conception de systèmes, c'est la purge ou le nettoyage de la base de données. Bien sûr, l'entrée ne devrait pas rester éternellement dans notre base de données car elle la remplirait et déborderait provoquant un crash. Epoque. Y a-t-il un délai d'expiration spécifié ? Que devrait-il advenir du lien ? Eh bien, si nous choisissons de rechercher continuellement des expériences pour les supprimer, cela exercerait également beaucoup de pression sur notre base de données. Nous pouvons donc supprimer lentement les liens expirés en effectuant un nettoyage paresseux. Et la façon dont notre service s'assurera que seuls les liens expirés seront supprimés avec B lorsque l'utilisateur essaye d' accéder au lien inspiré, nous les supprimons en leur faisant le code d' entrée à l'utilisateur. De cette façon, la suppression de toutes les URL n'a pas expiré en même temps et risque de planter la base de données. Nous pouvons également disposer d'un délai d'expiration par défaut pour chaque lien en ce qui concerne cet aspect. Enfin, nous devons également garder à l'esprit que l'arborescence des limites, qui devrait répondre à certaines questions comme le nombre de fois l'URL courte a été utilisée. Quel était l'emplacement de l'utilisateur ? Quelles seraient la date et l' heure de l'accès, etc. Partie sécurité et autorisations, qui est une autre partie importante. Nous pouvons stocker le niveau d'autorisation avec chaque URL de la base de données publique ou privée. Pour les personnes privées, nous pouvons également créer une table distincte pour stocker des identifiants utilisateur disposant des autorisations nécessaires pour voir cette URL spécifique. Bien sûr, s'il ne dispose pas de cette autorisation, notre point de terminaison ou x se trouve dans l'URL courte, peut renvoyer un HTTP pour un code unique, ce qui signifie qu'il n'y a pas assez d'axe. Bien sûr. C'était avant tout les angles que vous devez garder à l'esprit lorsque abordez une solution à la question de surface d'URL raccourcie dans une révision de la conception du système. J'espère que vous avez vraiment tiré quelque chose de cette conférence. Et je vous remercie beaucoup rester avec moi jusqu' à la fin. J'ai également hâte de vous voir dans le prochain. 5. L'application de partage de photos: Bonjour les gars et bienvenue dans le tutoriel de l' entretien de conception du système où nous comprenons comment passer un entretien composé de questions de signe C3b. Dans cette conférence, nous allons discuter un autre problème très courant qui est donné à ces types d'entretiens et examiner exactement comment les résoudre afin de réussir, comme je l'ai dit, l'entretien. Le problème que nous n' allons pas aborder dans cette conférence est la conception d'un service de partage de photos. Ici, les utilisateurs peuvent télécharger photos pour les partager avec d'autres utilisateurs. Et bien sûr, certains services similaires peuvent être Flickr ou certaines plateformes de médias sociaux, même s'ils ont plus de fonctionnalités intégrées à eux. Tout d'abord, lorsque j' aborderai ce problème, je vais utiliser le modèle général adapté à toute question de conception de système qui peut être posée lors d'une interview dont j'ai parlé lors d'une conférence précédente. Et la première étape après avoir bien compris la question et poser toute autre demande de requête que vous pourriez avoir de la part de votre intervieweur consiste à définir les exigences et les objectifs de le système dont vous allez parler. Lors de la conception de notre application de partage de photos, nous aimerions avoir certaines exigences fonctionnelles, notamment qu' un utilisateur puisse suivre d'autres utilisateurs disposant d'un compte sur cette plateforme. L'utilisateur peut également effectuer certaines recherches qui peuvent être basées sur les photos partagées. Avez-vous recherché peut également télécharger des photos elles-mêmes à partir de leur compte. Et le système que nous allons mettre en œuvre devrait également générer et afficher une sorte de flux d' actualités où un utilisateur, lorsqu'il ouvre l'application, verra les meilleures photos des personnes qu'il a combattues arcs. Comme je l'ai dit, il s'agit là des exigences fonctionnelles, mais nous devons également réfléchir aux exigences fonctionnelles. L' exigence non fonctionnelle numéro un doit être que le système soit très fiable, ce qui signifie qu'une fois que l'utilisateur téléchargé une photo sur notre surface, la photo ne sera pas perdue. Ensuite, notre surface doit être hautement disponible, donc toute question n'est pas autorisée. De plus, nous devrions maintenir notre latence niveau réduit pour la régénération des nouvelles et d'autres choses comme ça. Ce qui signifie le temps pendant lequel l'utilisateur va réellement attendre du démarrage de l'application jusqu' au point où il verra réellement certaines photos d' autres utilisateurs qu'il suit. La première étape est donc terminée. Et nous définissons les exigences et les objectifs du système que nous sommes sur le point de concevoir. Nous pouvons prendre en compte quelques autres considérations de conception. Ici. Nous pouvons commencer par le fait que tous ces services que nous allons mettre en œuvre, il est assez évident que ce sera très lu car la dette nette lorsque les utilisateurs téléchargeront réellement des photos, mais un nombre beaucoup plus élevé d'utilisateurs verra en fait les photos que j'ai vues par d'autres utilisateurs. Vous pouvez le penser, comme vous le pensez lorsque vous publiez une photo sur votre application de médias sociaux. Vous publiez très peu de fois, mais vous voyez en fait beaucoup d' autres fonctionnalités en comparaison pour vous regarder télécharger. C'est pourquoi ce système sera lu lourdement. Du fait que notre service sera lu fort, nous devons nous concentrer sur la récupération. La photo est très rapide. Désormais, les utilisateurs peuvent également télécharger autant de photos que la lumière du jour. C'est donc une chose à garder à l'esprit car nous avons besoin d'une gestion très efficace du stockage de ces photos. Et aussi, je l'ai dit, si un utilisateur télécharge une photo, ce système que nous avons conçu, nous garantissons qu'elle ne sera pas perdue. passés à une estimation et des contraintes quant à la capacité des objets que nous allons stocker. Nous pouvons supposer que nous aurons 100 millions d'utilisateurs avec environ 10 000 utilisateurs actifs par jour et 2 millions de nouvelles photos chaque jour. Ce serait environ 23 nouvelles photos chaque seconde. Et ces calculs que nous allons faire ici ont lieu à ici ont lieu à une date ultérieure où notre service sera largement adopté et couronné de succès. C'est pourquoi vous me voyez briser ces montants très élevés pour ces montants. Des chiffres réels. Maintenant, l'espace total requis pour une journée de photos, comme je l'ai dit, serait d'environ 2 millions parce que nous avions dit que nous aurions 2 millions de nouvelles photos chaque jour. Et nous pouvons penser à la taille moyenne du fichier photo, qui peut être de 100 kilo-octets, soit environ 200 gigaoctets au total pour notre capacité. Maintenant, cela ne prend en compte qu'un jour. Mais que se passe-t-il si nous indiquons l'espace pendant cinq ans, disons ? Eh bien, nous pouvons multiplier 200 par 3655 ans, et nous allons obtenir environ 365 téraoctets, donc 365 téraoctets. Maintenant que nous avons cette estimation de la capacité hors du chemin, nous pouvons penser à la conception du système de haut niveau. Parce qu'à un niveau élevé, nous n'avons besoin que de prendre en charge deux scénarios. Un pour télécharger les photos, c' est-à-dire le flux de travail dans notre service. Et oui, ils voulaient voir ou rechercher ces photos. Le service que nous allons mettre en œuvre doit bien sûr stocker les photos dans une base de données. Et nous allons avoir besoin de serveurs de stockage d'objets ici. En outre, pour le schéma de base de données permettant de stocker ces photos, il sera également discuté dans l'interview. Nous devons garder à l'esprit que nous avons environ trois entités. Un qui sera l'utilisateur, ensuite les photos, puis les utilisateurs qu'il suit. Le schéma peut contenir trois tables. Lorsqu'une photo, qui peut avoir une pièce d'identité avec photo, qui sera la clé primaire. Et puis quelques autres champs comme l'ID utilisateur, qui est bien sûr que l' utilisateur mort l'a posté, qui sera une clé étrangère dans cette table. Un autre champ très important ici sera la date de création, qui sera de type datetime. Et c'est un domaine très important car il va être utile lorsque l'utilisateur ouvrira son fil d'actualité, nous voulions lui obtenir les photos les plus récentes et les plus populaires, mais pour la dernière partie, nous allons être utile lorsque l'utilisateur ouvrira son fil d'actualité, nous voulions lui obtenir les photos les plus récentes et les plus populaires, mais pour la dernière partie, nous allons manger cette région battue champ. Ensuite, nous avons également la table des utilisateurs, qui aura bien sûr une clé primaire d'ID utilisateur. Et puis d'autres données que nous voulions stocker pour lui. Si nous voulons faire du marketing par e-mail, vous pouvez conserver son e-mail. Mais nous avons également besoin du nom, de la date de naissance, la date de chaque compte et peut-être de la dernière connexion. Je réfléchis. Nous aurions également besoin d'une table pour l'utilisateur follow, qui prendrait un champ qui fera tous deux partie de la clé primaire. Et il s'agira bien sûr des identifiants des utilisateurs qui se suivent. Cela tient donc bien sûr compte du scénario où l'utilisateur va dans les deux sens, comme sur Facebook lorsque vous ajoutez un ami. Donc, si vous vous acceptez tous les deux comme un ami, pas comme un Instagram où le suivi peut être unidirectionnel. Vous pouvez donc suivre quelqu'un qui ne vous suivrait pas. Nous n'avons pas ce scénario dans cette discussion uniquement pour que nous puissions le rendre un peu plus simple. Maintenant, l' approche simple pour prendre d' assaut les détecteurs de schéma dont parle les détecteurs serait un MySQL nécessitant évidemment les joints, mais nous pouvons le stocker dans un magasin de valeur de clé distribué pour profiter du les avantages offerts par NoSQL également. Après avoir parlé du schéma de la base de données dans notre entretien, nous devons également prendre une autre estimation de la taille des données. Le D décide donc de l'estimation sur le contient des informations sur les champs qui vont être stockés dans notre base de données. Et nous devons penser aux entiers, aux chaînes, etc. Plus tard, ils seront stockés dans notre base de données. Nous pouvons supposer que chaque requête en entrée et la DateTime dépassent quatre octets. Ainsi, chaque ligne de la table des utilisateurs comptera environ 68 octets. S'il y avait, comme je l'ai déjà compté, environ six champs. Si nous avions, par exemple, 250 millions d'utilisateurs, nous aurons exemple, 250 millions d'utilisateurs, nous aurons besoin d'environ 16 gigaoctets de stockage uniquement pour que la partie de l'utilisateur puisse être stockée avec toutes ses informations dans notre base de données. Mais qu'en est-il des photos ? Ainsi, chaque ligne de la table de photos aura environ 284 octets Cs. Nous avons également un pack de photos, qui sera un graphique var 265 caractères et qui prend 265 caractères, regardez l' entrée de photo qui serait assez longue que celle de l'utilisateur, mais ce serait C'est plutôt normal. Si nous prenons en compte environ 1 million de nouvelles photos téléchargées chaque jour, nous aurons besoin d'environ 200 et 50 mégaoctets de stockage pendant une journée. Et ce sera dans dix ans, environ un téraoctet, presque. Le dernier tableau, chaque utilisateur suit la table. Et si elle se compose de huit octets, nous n'avions que la clé primaire composée de deux intégrales, chacune de quatre octets. Nous pouvons penser à 250 millions d'utilisateurs. Ils peuvent suivre encore 250 millions d'utilisateurs et nous allons rencontrer un autre pétaoctet de stockage supplémentaire pour la table suivie par l' utilisateur. L'espace total requis pour toutes ces tables pour les oreilles, comme je l'ai dit, serait d' environ deux téraoctets, ce qui est vraiment idéal pour une application. Et la surface de ces types. week-end prochain, nous avons également examiné rapidement la conception des composants que nous allons avoir dans ce service. La photo est téléchargée ou lente à droite. Lisez qui va être plus rapide, surtout s'ils sont servis en espèces. téléchargeant, les utilisateurs peuvent consommer connexions de deck disponibles car le téléchargement est un processus lent ce qui signifie que nous ne pouvons pas être servis. L'un ou l'autre des systèmes est occupé par toutes les bonnes demandes. Nous devons garder à l'esprit que ces services Web ont une connexion si nous nous rencontrons avant de concevoir le système. Donc, si vous supposez qu' un serveur Web peut avoir un maximum de 500 connexions à n fois, il peut avoir plus de 500 téléchargements simultanés ou lectures gérées par ce goulot d'étranglement, nous pouvons diviser les lectures et écrit dans des services distincts. Cela nous permettra également à l'avenir de faire évoluer ces opérations de manière indépendante et beaucoup plus facile puisqu'il s'agit de deux entités distinctes. Pour la partie redondance maintenant, perte de fichiers est que j'ai déjà mentionnée, n' est pas une option. Nous pouvons commencer plusieurs copies de chaque fichier comme solution à la dette. Parce que si un dé de stockage, on peut récupérer le quatrième trop fort, l'autre copie. Mais le même principe s'applique également aux autres composants. Donc, si nous voulons avoir la disponibilité d'un système qui serait très vendu, notre système ne mourrait à aucun moment. Nous devons également disposer de répliques du service en cours d'exécution. Les services se sont éteints. Le système reste disponible avec peur, car cette redondance supprime le point de défaillance unique du système. C'est un point très important. Lorsque vous prenez un entretien de conception de système, vous devez penser que si vous implémentez réellement un point d' échec unique La dette S est un inconvénient et elle doit être observée. Et vous devez également trouver une solution de contournement. Si une seule instance des services requis pour l' exécuter à n'importe quel moment, nous pouvons exécuter une copie secondaire redondante du service qui ne dessert aucun trafic, mais elle peut prendre le contrôle après la fatal pour la primaire sourde blanche a un problème. Comme je l'ai dit, il s'agit deux instances du même service qui s'exécutent en production et l'une échoue. Le système peut basculer vers la copie saine. Et cela peut se produire automatiquement ou nécessiter une intervention manuelle, même si vous n'entrez pas dans votre système en panne à un moment donné, vous feriez mieux de l'implémenter et de le récupérer automatiquement. Parce que sinon, vous devez faire observer que votre système est de la gomme, puis intervenir manuellement avec la dette du développeur peut bien sûr par lui-même rediriger le 17e 2D disponible. Nous pouvons également parler du partage des données. Parce que, bien sûr, je pense que de telles quantités de données sont importantes, nous devons les partager d'une manière ou d'une autre. Nous pouvons établir un diagramme sur l'ID utilisateur afin de conserver toutes les photos d'un utilisateur dans la même base de données nette et définie, soit un téraoctets. Vous aurez besoin de quatre graphiques pour stocker environ quatre téraoctets de données. Maintenant, pour les performances et évolutivité, conservez une dizaine d'entre elles. Encore une fois, le système FOR s'agrandit de plus en plus, nous allons pouvoir gérer tout le trafic de dettes. Nous allons devoir trouver le nombre net par utilisateur multiple de dix. Commençons par là. Identifiez de manière unique n'importe quelle photo de notre système. Nous pouvons ajouter ce numéro à la pièce d'identité avec photo, ce qui serait une solution assez simple à cet égard. Comment générer les identifiants photo alors que chaque base de données peut avoir sa propre séquence d'incrémentation automatique pour les identifiants photo ? Et comme nous ajouterons cette idée de la pièce d'identité avec photo nette, elle la rendra unique dans tout notre système. Même si nous avons mis au point ce système de partitionnement, il présente quelques inconvénients. Par exemple, si nous ne pouvons pas stocker toutes les images en surutilisant mon graphique, nous devons les distribuer à plusieurs et causer une maladie plus élevée plus tard. Et aussi, les utilisateurs du cœur doivent être traités différemment car ils sont suivis par beaucoup d' autres utilisateurs et beaucoup de gens. Ils verront leur télécharger les photos et la dette peut causer des problèmes à cet égard. Bien sûr, nous pouvons partitionner autour de la pièce d' identité avec photo et non de l'ID utilisateur, ce qui peut être une autre approche. Parce que si nous sommes généralement ces pièces d'identité avec photo sont en premier, nous pouvons trouver à nouveau le numéro net, le module d'identification avec photo, ce qui signifie qu'ils sont moins de chiffres en gros. Et bien sûr, les problèmes dont nous venons de parler étaient les inconvénients après la première approche auraient été résolus à ce stade. Encore une fois, pour générer les identifiants avec photo, vous ne pouvez pas avoir de séquence auto-incrémentante car vous devez savoir que l'identification avec photo est d'abord définie la solution précise ici pourrait être de dédier une base de données distincte . générer cet ID auto-incrémentant, nous devons également réfléchir beaucoup à l'avenir et fusionner notre croissance du système. Si nous avons un grand nombre de partitions logiques pour accumuler la croissance des données au début, plusieurs partitions logiques à l'intérieur d'une seule base de données physique, de base données CCS, ou nous pouvons avoir plusieurs systèmes de bases de données exécutés dessus. Nous pouvons disposer de bases de données distinctes pour chaque partition logique sur n'importe quel serveur. Chaque fois que nous estimons qu' un serveur de base de données en particulier contient beaucoup de données, nous pouvons créer des partitions logiques sur un autre serveur et conserver un fichier de configuration. Et cela constituerait la seule chose que nous aurions à mettre à jour pour annoncer un éventuel changement. Le classement et la génération de flux d'actualités constituent un autre problème auquel nous sommes confrontés. La façon dont nous allons y faire face. Ou au moins une des façons dont nous pouvons y faire face est de prégénérer le flux américain. Nous pouvons avoir certains serveurs dont leur seule tâche serait de générer des utilisateurs en continu et de les stocker dans une autre table appelée fil d'actualité des utilisateurs. Lorsque l'utilisateur a besoin de cette photo pour une nouvelle suite, nous allons simplement interroger ce tableau et renvoyer les résultats. Leslie, nous devons aussi penser à équilibrage de la trésorerie et de la charge du système car il sera très utilisé un, nous devons introduire un cache pour moi à Data Service pour attraper les lignes de base de données. Cela signifie que les hot folders et les utilisateurs. Nous pouvons utiliser le cas de demande pour enregistrer ces serveurs de données et d'applications Avant d'accéder à la base de données, vous pourrez vérifier rapidement si le cache possède les routes souhaitées. Ici, une approche raisonnable serait la R U, qui est la moins utilisée récemment. Pour la stratégie d'éviction du cache. Nous pouvons construire le Kiersten intégré plus intelligent, utilisant la règle 8020, qui stipule que 280% du volume de photos qui seront lues quotidiennement, nous générerons 80 % du trafic, nous pouvons donc simplement encaisser les 20 % premiers. Il s'agissait donc de toutes les étapes et de données infinies. Je considérerais comme un impuissant lors de l' entretien de conception du système et je recevrais une mise en œuvre de conception de service de partage de photos. Je vous remercie beaucoup de rester avec moi jusqu'à la fin de cette conférence. Et j'ai hâte de vous voir dans le prochain.