En tant qu'ingénieur web, je me concentre principalement sur les performances et l'architecture. Heureusement, j'ai participé cette fois à la conférence sd2.0 et j'ai pu communiquer largement avec mes pairs. Sur ces deux aspects, je n'ose pas garder certains de mes. expériences de conception architecturale pour moi-même Partagé par des amis, cet article est l'expérience de participer à cette conférence et de communiquer avec les autres.
Quelques réflexions sur la conception architecturale :
1. Jamais trop de design : jamais trop de design
C'est un sujet qui est souvent évoqué, mais tant que vous réfléchissez au nombre de fonctions de votre architecture qui ne sont pas utilisées du tout, ou qui sont finalement abandonnées, vous pouvez comprendre son importance. Lorsque vous vous impliquez pour la première fois dans la conception d'une architecture, vous le faites souvent. ont tendance à concevoir des conceptions à grande échelle. Quant à l'architecture de Huayi, nous espérons concevoir une architecture incrémentale extrêmement évolutive et capable de s'adapter à tous les besoins. Le domaine du développement Web est un processus très dynamique. changements la semaine prochaine, et nous devons réagir aux changements le plus rapidement possible.
Les ingénieurs d'eBay ont déclaré que leur conception architecturale n'a jamais été en mesure de répondre à la croissance du système, leur système est donc toujours renversé et refait. Veuillez noter qu'il n'y a aucun problème avec la capacité des architectes d'eBay. L'architecture qu'ils conçoivent s'appuie toujours sur les goulots d'étranglement de l'ancienne version, en espérant que la nouvelle architecture apportera des percées. Cependant, les percées apportées par la nouvelle architecture seront toujours réalisées. en peu de temps, submergés par de nouvelles demandes, ils ont dû utiliser une nouvelle architecture.
Le développement Web est un processus très agile. Les changements surviennent à tout moment. À bien des égards, le degré de contingence est très élevé. Par rapport au développement de logiciels, il est irréaliste d’espérer utiliser une seule architecture pour planifier toutes les conceptions futures.
2. Cycle de vie de l'architecture Web : cycle de vie de l'architecture Web
Puisque nous devons éliminer la conception excessive et garantir un certain degré de prévoyance, comment pouvons-nous trouver l’équilibre ? J’espère que le cycle de vie de l’architecture Web suivant pourra vous aider.
L'architecture conçue doit être capable de gérer une croissance de 1 à 10 fois en augmentant simplement la capacité matérielle. Pendant la période de croissance de 5 à 10 fois, veuillez commencer à concevoir la prochaine version de l'architecture afin qu'elle puisse résister aux 10 prochaines fois. double croissance
La raison pour laquelle Google peut dominer n'est pas entièrement due à l'avancée de la technologie de recherche et de tri. En fait, y compris Baidu et Yahoo, les technologies utilisées sont désormais similaires. Cependant, Google peut y parvenir en ajoutant des dizaines de milliers de serveurs. par mois. Il est en effet difficile de reproduire une capacité système suffisante.
3. Cache : Cache
L'espace est échangé contre du temps.Le cache est toujours la priorité absolue dans la conception informatique, du processeur aux E/S, la conception de l'architecture Web est importante et la conception du cache est essentielle. jbosscache Le fondateur de Taobao a déclaré ceci : En fait, la conception du cache Web et du cache au niveau de l'entreprise est très différente. Le cache au niveau de l'entreprise se concentre sur la logique, tandis que le cache Web est simple et rapide. .
Quel est le problème causé par la mise en cache ? Il s'agit de l'augmentation de la complexité du programme. Étant donné que les données sont réparties sur plusieurs processus, la synchronisation est un problème gênant. Avec l'ajout de clusters, la complexité va encore augmenter dans les applications réelles. est utilisé ? Les stratégies doivent souvent être liées à l'entreprise
Laoqian a conçu un cache de liste chaînée pour les publications conçues par Sohu, qui peut non seulement répondre aux besoins d'insertion flexible, mais également permettre une lecture rapide. Certaines autres grandes communautés utilisent souvent des structures similaires pour optimiser les listes de publications. outil
Lien : Vidéo de Qian Hongwu sur la conception architecturale http://211.100.26.82/CSDN_Live/140/qhw.flv
La stratégie courante du cache consiste à conserver les données en mémoire plutôt que sur le disque, qui prend plus de temps. De ce point de vue, le moteur de tas (méthode de stockage) fourni par MySQL est également une méthode à considérer. Cette méthode de stockage peut stocker des données en mémoire et conserver les puissantes capacités de requête de SQL. Fait-il d'une pierre deux coups ?
Nous n'avons parlé ici que du cache de lecture. En fait, il existe également un cache d'écriture, qui est rarement utilisé dans les communautés orientées contenu, car le principal problème que ces communautés doivent résoudre est le problème de lecture, mais lorsque la capacité de traitement est inférieure. que la capacité de requête Lorsque, ou lorsqu'une seule requête est mise en cache pour former un bloc puis traitée par lots, une mise en cache en écriture apparaît On peut facilement trouver un tel cache dans une conception communautaire hautement interactive.
Quatrièmement, le module de base doit être développé par vous-même : créez votre module de base
Nous en sommes profondément conscients. Qian Hongwu et Yunfeng ont également mentionné que nous avons souvent tendance à utiliser certains modules open source. Si les modules de base ne sont pas impliqués, c'est effectivement possible. S'ils le sont, alors nous devons être prudents, car quand. le nombre de visites atteint un certain niveau, ces modules ont souvent des problèmes d'une sorte ou d'une autre. Bien sûr, on peut attribuer le problème à une méconnaissance des modules open source, mais quoi qu'il en soit, lorsqu'il y a un problème avec le noyau, c'est cela. est très effrayant de ne pas bien comprendre son code.
5. Stockage raisonnable des données : stockage raisonnable des données
Devons-nous utiliser une base de données ? Pas nécessairement. Lei Ming nous dit que la recherche ne nécessite pas nécessairement une base de données. Alors, pourquoi ne pas simplement utiliser des fichiers ? le remplacer ?
Tout d’abord, il faut admettre que la base de données fonctionne également sur des fichiers. Nous avons besoin d'une base de données, principalement pour utiliser les fonctions suivantes, l'une est le stockage de données et l'autre est la récupération de données. Dans les bases de données relationnelles, nous nous soucions en fait beaucoup des capacités de recherche complexes de la base de données. Il suffit de regarder un tsql pour les statistiques (. Pas besoin de lire attentivement, il suffit d'y jeter un coup d'oeil)
sélectionnez c.Class_name, d.Class_name_2, a.Creativity_Title, b.User_name, (sélectionnez count (Id) dans la revue où Reviewid = a.Id) comme countNum de Creativity comme a, User_info comme b, classe comme c, classe2 comme d où a.user_id=b.id et a.Creativity_Class=c.Id et a.Creativity_Class_2=d.Id
sélectionnez a.Id,max(c.Class_name),(max(d.Class_name_2),max(a.Creativity_Title),max(b.User_name),count(e.Id) comme countNum de Creativity comme a,User_info comme b ,classer comme c,class2 comme d,review comme e où a.user_id=b.id et a.Creativity_Class=c.Id et a.Creativity_Class_2=d.Id et a.Id=e.Reviewid grouper par a.Id… ……………………………….