Como ingeniero web, me concentro más en el rendimiento y la arquitectura. Afortunadamente, esta vez participé en la conferencia sd2.0 y pude comunicarme ampliamente con mis compañeros en estos dos aspectos, no me atrevo a quedarme con algunos de mis compañeros. Experiencias de diseño arquitectónico para mí. Compartido por amigos, este artículo es la experiencia de participar en esta conferencia y comunicarse con otros.
Algunas reflexiones sobre el diseño arquitectónico:
1. Nunca sobre diseñar: nunca sobre diseñar
Este es un tema que se menciona a menudo, pero siempre que piense en cuántas funciones de su arquitectura no se utilizan en absoluto o finalmente se abandonan, podrá comprender su importancia cuando se involucra por primera vez en el diseño de arquitectura. tendemos a diseñar diseños a gran escala. En cuanto a la arquitectura de Huayi, esperamos diseñar una arquitectura incremental que sea extremadamente escalable y pueda adaptarse a todas las necesidades. El campo del desarrollo web es un proceso muy dinámico para nosotros. cambios la próxima semana, y debemos responder a los cambios lo más rápido posible. La respuesta más efectiva.
Los ingenieros de eBay han dicho que su diseño arquitectónico nunca ha podido satisfacer el crecimiento del sistema, por lo que su sistema siempre está siendo anulado y rehecho. Tenga en cuenta que no hay ningún problema con la capacidad de los arquitectos de eBay. La arquitectura que diseñan siempre se basa en los cuellos de botella de la versión anterior, con la esperanza de que la nueva arquitectura traiga avances. Sin embargo, los avances que aporta la nueva arquitectura siempre se lograrán. En poco tiempo, abrumados por las nuevas exigencias, tuvieron que utilizar una nueva arquitectura.
El desarrollo web es un proceso muy ágil y los cambios ocurren en cualquier momento. Las necesidades de los usuarios cambian constantemente. En muchos aspectos, la contingencia es muy alta en comparación con el desarrollo de software, y no es realista esperar utilizar una arquitectura para planificar todos los diseños futuros.
2. Ciclo de vida de la arquitectura web: ciclo de vida de la arquitectura web.
Dado que necesitamos eliminar el diseño excesivo y garantizar un cierto grado de previsión, ¿cómo podemos encontrar el equilibrio? Espero que el siguiente ciclo de vida de la arquitectura web pueda ayudarlo.
La arquitectura diseñada debe poder soportar un crecimiento de 1 a 10 veces simplemente aumentando la capacidad del hardware. Durante el período de crecimiento de 5 a 10 veces, comience a diseñar la siguiente versión de la arquitectura para que pueda soportar las siguientes 10 veces. doble crecimiento
La razón por la que Google puede dominar no se debe exclusivamente a lo avanzadas que son la tecnología de búsqueda y la tecnología de clasificación. De hecho, incluidas Baidu y Yahoo, las tecnologías utilizadas ahora son similares. Sin embargo, Google puede lograrlo agregando decenas de miles de servidores. al mes. La capacidad de un sistema suficiente es realmente difícil de replicar.
3. Caché: Caché
El espacio se intercambia por el tiempo. El caché es siempre la máxima prioridad en el diseño de computadoras, desde la CPU hasta el IO, el diseño de la arquitectura web es importante y el diseño del caché es esencial. jbosscache El fundador de Taobao dijo esto: De hecho, el diseño del caché web y el caché de nivel empresarial son muy diferentes. El caché de nivel empresarial se centra en la lógica, mientras que el caché web es simple y rápido. .
¿Cuál es el problema causado por el almacenamiento en caché? Es el aumento de la complejidad del programa. Debido a que los datos se distribuyen en múltiples procesos, la sincronización es un problema problemático y la complejidad aumentará aún más en las aplicaciones reales. ¿Se utilizan las estrategias a menudo deben estar vinculadas al negocio?
Laoqian diseñó un caché de lista vinculada para publicaciones diseñadas por Sohu, que no solo puede satisfacer las necesidades de inserción flexible, sino que también permite una lectura rápida. Algunas otras comunidades grandes a menudo usan estructuras similares para optimizar las listas de publicaciones. herramienta
Enlace: vídeo de Qian Hongwu sobre diseño arquitectónico http://211.100.26.82/CSDN_Live/140/qhw.flv
La estrategia común de Cache es mantener los datos en la memoria en lugar de en el disco, que consume más tiempo. Desde esta perspectiva, el motor de almacenamiento dinámico (método de almacenamiento) proporcionado por MySQL también es un método en el que vale la pena pensar. Este método de almacenamiento puede almacenar datos en la memoria y conservar las poderosas capacidades de consulta de SQL.
Aquí solo hablamos de almacenamiento en caché de lectura. De hecho, también existe un caché de escritura, que rara vez se usa en comunidades orientadas a contenido, porque el principal problema que dichas comunidades deben resolver es el problema de lectura, pero cuando la capacidad de procesamiento es menor. que la capacidad de solicitud Cuando, o cuando una sola solicitud se almacena en caché para formar un bloque y luego se procesa en lotes, aparece el almacenamiento en caché de escritura. Podemos encontrar fácilmente dicho caché en un diseño comunitario altamente interactivo.
Cuarto, el módulo principal debe ser desarrollado por usted mismo: haga su propio módulo principal
Somos muy conscientes de esto. Qian Hongwu y Yunfeng también mencionaron que a menudo tendemos a usar algunos módulos de código abierto. Si los módulos principales no están involucrados, es posible. Si lo están, entonces debemos tener cuidado, porque cuando. el número de visitas alcanza un cierto nivel, estos módulos a menudo tienen problemas de un tipo u otro. Por supuesto, podemos atribuir el problema a la falta de familiaridad con los módulos de código abierto, pero pase lo que pase, cuando hay un problema con el núcleo, sucede. Da mucho miedo no comprender completamente su código.
5. Almacenamiento de datos razonable: almacenamiento de datos razonable
¿Tenemos que usar una base de datos? No necesariamente. Lei Ming nos dice que la búsqueda no requiere necesariamente una base de datos. Yunfeng nos dice que los juegos no necesariamente requieren una base de datos. reemplazarlo?
En primer lugar, debemos admitir que la base de datos también opera con archivos. Necesitamos una base de datos, principalmente para usar las siguientes funciones, una es el almacenamiento de datos y la otra es la recuperación de datos. En las bases de datos relacionales, en realidad nos preocupamos mucho por las complejas capacidades de búsqueda de la base de datos. Solo mire un tsql para obtener estadísticas. No es necesario leerlo con atención, basta con echarle un vistazo)
seleccione c.Class_name,d.Class_name_2,a.Creativity_Title,b.User_name,(seleccione count(Id) de la revisión donde Reviewid=a.Id) como countNum de Creativity como a,User_info como b,class como c,class2 como d donde a.user_id=b.id y a.Creativity_Class=c.Id y a.Creativity_Class_2=d.Id
seleccione a.Id,max(c.Class_name),(max(d.Class_name_2),max(a.Creativity_Title),max(b.User_name),count(e.Id) como countNum de Creatividad como a,User_info como b ,clase como c,clase2 como d,revisión como e donde a.user_id=b.id y a.Creativity_Class=c.Id y a.Creativity_Class_2=d.Id y a.Id=e.Reviewid agrupan por a.Id… ……………………………….