Como engenheiro web, concentro-me mais em desempenho e arquitetura. Felizmente, desta vez participei da conferência sd2.0 e consegui me comunicar extensivamente com meus colegas. Nesses dois aspectos, não me atrevo a manter alguns dos meus colegas. experiências de projeto arquitetônico para mim Compartilhado por amigos, este artigo é a experiência de participar desta conferência e se comunicar com outras pessoas.
Algumas reflexões sobre projeto arquitetônico:
1. Nunca exagere no design: nunca exagere no design
Este é um tópico frequentemente mencionado, mas contanto que você pense em quantas funções em sua arquitetura não são usadas ou são finalmente abandonadas, você pode entender sua importância Quando você se envolve pela primeira vez no projeto de arquitetura, muitas vezes. tendem a projetar projetos em grande escala. Quanto à arquitetura de Huayi, esperamos projetar uma arquitetura incremental que seja extremamente escalável e possa se adaptar a todas as necessidades. mudanças na próxima semana, e precisamos responder às mudanças o mais rápido possível.
Os engenheiros do eBay disseram que seu projeto arquitetônico nunca foi capaz de acompanhar o crescimento do sistema, então seu sistema está sempre sendo revirado e refeito. Observe que não há problema com a capacidade dos arquitetos do eBay. A arquitetura que eles projetam sempre se baseia nos gargalos da versão antiga, esperando que a nova arquitetura traga avanços. em um curto período de tempo, sobrecarregados por novas demandas, eles tiveram que usar uma nova arquitetura.
O desenvolvimento da Web é um processo muito ágil. As mudanças ocorrem a qualquer momento. As necessidades do usuário estão em constante mudança. Em muitos aspectos, a contingência é muito alta em comparação com o desenvolvimento de software.
2. Ciclo de vida da arquitetura web: ciclo de vida da arquitetura web
Como precisamos eliminar o excesso de design e garantir um certo grau de previsão, como podemos encontrar o equilíbrio? Espero que o seguinte ciclo de vida da arquitetura web possa ajudá-lo.
A arquitetura projetada precisa ser capaz de lidar com o crescimento de 1 a 10 vezes simplesmente aumentando a capacidade do hardware. Durante o período de crescimento de 5 a 10 vezes, comece a projetar a próxima versão da arquitetura para que ela possa suportar as próximas 10 vezes. crescimento duplo
A razão pela qual o Google pode dominar não se deve inteiramente ao quão avançadas são as tecnologias de pesquisa e classificação. Na verdade, incluindo o Baidu e o Yahoo, as tecnologias usadas agora são semelhantes. No entanto, o Google pode conseguir isso adicionando dezenas de milhares de servidores. por mês. A capacidade de capacidade suficiente do sistema é realmente difícil de replicar.
3. Cache: Cache
O espaço é trocado por tempo. O cache é sempre a principal prioridade no design do computador. Da CPU ao IO, o design da arquitetura da Web é importante e o design do cache é essencial. jbosscache O fundador do Taobao disse o seguinte: Na verdade, o design do cache da web e do cache de nível empresarial é muito diferente. O cache de nível empresarial se concentra na lógica, enquanto o cache da web é simples e rápido. .
Qual é o problema causado pelo cache? É o aumento da complexidade do programa. Como os dados estão espalhados por vários processos, a sincronização é um problema problemático. Com a adição de clusters, a complexidade aumentará ainda mais. As estratégias muitas vezes precisam estar vinculadas aos negócios?
Laoqian projetou um cache de lista vinculada para postagens projetadas por Sohu, que pode não apenas atender às necessidades de inserção flexível, mas também permitir leitura rápida. Algumas outras grandes comunidades costumam usar estruturas semelhantes para otimizar listas de postagens. ferramenta
Link: vídeo de Qian Hongwu sobre projeto de arquitetura http://211.100.26.82/CSDN_Live/140/qhw.flv
A estratégia comum do Cache é manter os dados na memória em vez de no disco que consome mais tempo. Dessa perspectiva, o mecanismo de heap (método de armazenamento) fornecido pelo MySQL também é um método que vale a pena considerar. Esse método de armazenamento pode armazenar dados na memória e reter os poderosos recursos de consulta do SQL.
Aqui falamos apenas sobre cache de leitura. Na verdade, existe também um cache de gravação, que raramente é usado em comunidades orientadas a conteúdo, porque o principal problema que tais comunidades precisam resolver é o problema de leitura, mas quando a capacidade de processamento é menor. do que a capacidade de solicitação Quando ou quando uma única solicitação é armazenada em cache para formar um bloco e depois processada em lotes, o cache de gravação aparece. Podemos facilmente encontrar esse cache em um design de comunidade altamente interativo.
Quarto, o módulo principal deve ser desenvolvido por você mesmo: faça você mesmo seu módulo principal
Estamos profundamente cientes disso. Qian Hongwu e Yunfeng também mencionaram que muitas vezes tendemos a usar alguns módulos de código aberto. Se os módulos principais não estiverem envolvidos, é realmente possível. Se estiverem, devemos ter cuidado, porque quando. o número de visitas atinge um certo nível, esses módulos geralmente apresentam problemas de um tipo ou de outro. É claro que podemos atribuir o problema ao desconhecimento dos módulos de código aberto, mas não importa o que aconteça, quando há um problema com o núcleo, ele. é muito assustador não compreender totalmente seu código.
5. Armazenamento de dados razoável: armazenamento de dados razoável
Temos que usar um banco de dados? Não necessariamente. Lei Ming nos diz que a pesquisa não requer necessariamente um banco de dados. Yunfeng nos diz que os jogos não exigem necessariamente um banco de dados. substituí-lo?
Primeiramente, precisamos admitir que o banco de dados também opera sobre arquivos. Precisamos de um banco de dados, principalmente para usar as seguintes funções, uma é o armazenamento de dados e a outra é a recuperação de dados. Em bancos de dados relacionais, na verdade nos preocupamos muito com os recursos de pesquisa complexos do banco de dados. Não há necessidade de ler com atenção, basta dar uma olhada)
selecione c.Class_name,d.Class_name_2,a.Creativity_Title,b.User_name,(selecione count(Id) da revisão onde Reviewid=a.Id) como countNum de Criatividade como a,User_info como b,classe como c,class2 como d onde a.user_id=b.id e a.Creativity_Class=c.Id e a.Creativity_Class_2=d.Id
selecione 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 Criatividade como a,User_info como b ,classe como c,class2 como d,revisão como e onde a.user_id=b.id e a.Creativity_Class=c.Id e a.Creativity_Class_2=d.Id e a.Id=e.Reviewid grupo por a.Id… …………………………….