Em 2020 perguntas da entrevista PHP (c)

Yaezakura: 2020 PHP Interview Questions (a)

Yaezakura: 2020 PHP Interview Questions (II)

 

A. banco de dados três paradigmas

O primeiro paradigma: restrições atômicas 1nF nas propriedades, atributo obrigatório é atômica, não decomposição;

O segundo paradigma: 2NF é os registos única restrição requerem identificação único está gravado, isto é, a especificidade da entidade;

O terceiro paradigma: redundância de campo 3NF é obrigado a, que qualquer campo não pode ser derivada de outros campos, que não necessita de campo redundante.

Paradigm vantagens de design e desvantagens:

vantagens:

Pode tentar obter reduzir a redundância de dados, de tal forma que são atualizadas rapidamente, pequeno

Contras: Para consultas exigem várias tabelas para associar, para reduzir a leitura eficiência write a aumentar a eficiência, otimizar o índice mais difícil

Anti-normalização:

Vantagens: mesa pode ter reduzido índice associados podem ser optimizadas para dar

Desvantagens: redundância de dados e de dados de anomalias, os dados devem ser alterados em mais cara

Há dois .Mysql Que tipos de fechaduras

- bloqueios de tabela suportes MyISAM, mesa de apoio InnoDB e linha fechaduras, linha fechamentos por padrão
- bloqueio no nível de tabela: pequena sobrecarga, bloqueio rápido, não impasse. Bloqueio de partícula grande, a maior probabilidade de conflitos de bloqueio, a menor quantidade de simultaneidade
- bloqueio ao nível de linha: grande sobrecarga, bloqueio lento, haverá um bloqueio. esforços Lock, pequena probabilidade de conflitos de bloqueio, a simultaneidade máxima

 

III. O que é um procedimento armazenado

Nós utilizado para operar as instruções SQL linguagem de banco de dados requerem compilado pela primeira vez no curso da implementação e execução e procedimentos (procedimento armazenado) armazenado é um conjunto de funções específicas, a fim de completar o conjunto de instruções SQL, depois de compilado armazenado no banco de dados, especificando o usuário o nome do procedimento armazenado e os parâmetros dados (se o procedimento armazenado com parâmetros) para chamar para executá-lo.

Um procedimento armazenado é uma função programável que criou e salvou no banco de dados. Ele pode ter alguns especiais instruções SQL e estruturas de controle. Quando se deseja executar a mesma função em diferentes aplicações ou a internet, ou uma embalagem com uma determinada função, o processo de armazenagem é muito útil. procedimento armazenado banco de dados pode ser visto como uma programação orientada a objeto no método de simulação. Ele permite acesso controlado aos dados.

Vantagens:

(1) um procedimento armazenado melhora a funcionalidade e flexibilidade da linguagem SQL. processo de controle de fluxo pode ser armazenado declarações preparadas, muita flexibilidade, e pode executar a operação de julgamento complexo mais complexa.

(2) O componente de armazenamento é programado para permitir que o procedimento padrão. Após o procedimento armazenado é criado, ele pode ser chamado várias vezes no programa sem ter que re-escrever as instruções SQL procedimento armazenado. E profissionais de banco de dados podem ser modificados a qualquer momento do procedimento armazenado, não há impacto sobre o código fonte da aplicação.

(3) O processo de armazenamento permite uma maior velocidade de execução. Se uma operação contém um grande número de Código de transação-SQL ou são executados várias vezes, então a velocidade de execução procedimento armazenado muito mais rápido do que o lote. Porque procedimentos armazenados são pré-compilado. Quando você executa uma consulta procedimento armazenado otimizador analisar otimização, e dá o plano de execução final é armazenada nas tabelas do sistema. As demonstrações Transação-SQL lote deve ser compilado e otimizado para cada corrida, a velocidade é relativamente lenta.

(4) sobre o procedimento armazenado pode reduzir o tráfego de rede. Para operação com um objeto de banco de dados (como consulta, modificar), se o procedimento de operação declarações Transação-SQL envolvidos armazenado é processo organizado, então quando você chamar o procedimento armazenado no computador do cliente, a rede entregue apenas a chamada declaração, assim, aumentando o tráfego de rede e reduz a carga da rede.

 

(5) O processo de armazenamento pode ser utilizada como um mecanismo de segurança para aproveitar. O administrador do sistema para restringir permissões executando um procedimento armazenado pode ser alcançado restrições de acesso a dados correspondente, evitar o acesso do usuário não autorizado a dados, garantindo a segurança dos dados.

IV. Como lidar com a carga, alta concorrência

1, HTML estático
Na verdade, todos nós sabemos, a mais alta eficiência, o consumo é o menor da página html estática pura, por isso, tentar tornar as páginas do nosso site usando páginas estáticas para perceber que a maneira mais fácil é realmente o mais eficaz método.

2, a separação de imagem servidor
as imagens armazenadas separadamente, para minimizar o fluxo de imagens de grande e outras despesas gerais, pode ser colocado num certo número de plataformas relacionadas, tais como o gado sete.

3, agrupamento de banco de dados e banco de dados de hash tabelas e de cache

100 ligações simultâneas com a base de dados, um banco de dados não é suficiente, ele pode ser separado a partir do leitor, replicação mestre-escravo, áreas de fragmentação base de dados para começar. Também tentar reduzir o acesso ao banco de dados, o banco de dados pode ser usado como um cache memcache, Redis.

4, o espelho
minimizar a transferência, o pedido pode ser distribuído a uma pluralidade de lado imagem diferente.

5. Load Balancing:
máximo Apache conexões simultâneas 1500, só pode aumentar o servidor, você pode começar a partir do hardware, tais como servidor F5. Naturalmente, o custo do hardware é relativamente alto, que tendem a começar do lado do software.

 

Balanceamento de carga (Load Balancing) baseia-se na arquitetura de rede existente, ele fornece uma barata e eficaz para estender a largura de banda dos dispositivos de rede transparentes e servidores de aumentar a produção, melhorar os dados de rede de processamento de capacidade pode ser melhorada enquanto a flexibilidade da rede e disponibilidade. Atualmente, o balanceamento de carga de software mais utilizado é Nginx, LVS, HAProxy. Estou falando sob três são vantagens e desvantagens:

** vantagens Nginx são: **

Trabalho sobre as sete camadas da rede, você pode fazer uma série de pedidos de http estratégias de desvio, como o nome de domínio, estrutura de diretórios, as suas regras regulares mais poderosos e flexíveis do que HAProxy, que é uma das principais razões que agora é muito popular, isso por si só Nginx na ocasião podem utilizar muito mais do que os LVS.

dependência Nginx na estabilidade da rede é muito pequena, em teoria, ser capaz de ping você será capaz de carregar funções, este é um dos seus pontos fortes; LVS contrárias relativamente grande dependência da estabilidade da rede, compreendi totalmente este ponto;

Nginx é relativamente simples de instalar e configurar, teste mais conveniente, ele pode basicamente errado com o log impresso. configuração LVS, testando levaria um longo tempo, LVS relativamente grande dependência na rede.

 

Pode assumir um alto e pressão de carga estável, a diferença no hardware não suporta um caso geralmente dezenas de milhares de vezes a quantidade de carga simultânea é relativamente menor do que aqueles LVS.

Nginx pode ser detectado através do porto para o interior de falhas de servidor, como servidor web processamento de acordo com o código de status retornado, o limite de tempo, e retornará um erro para reenviar o pedido para outro nó, mas não que suporta desvantagem url é detectado. Por exemplo, o usuário é o upload de um arquivo e fazer upload de apenas a falha nó de processamento durante o processo de upload, Nginx irá cortar carregado para outra re-processamento do servidor, e LVS cortar diretamente fora, se é para fazer upload de um arquivo grande ou documentos importantes, os usuários podem, portanto, insatisfeito.

Nginx não é apenas um balanceador / software proxy reverso boa carga, é também um servidor de aplicação Web poderoso. LNMP também é muito popular nos últimos anos, arquitetura web, na estabilidade ambiente de alto tráfego também é muito bom.

Nginx agora como um cache de Web reversa para acelerar mais e mais maduro, e velocidade mais rápida do servidor Squid tradicional, considere usá-lo como um acelerador de proxy reverso.

Nginx como um proxy reverso usando o meio, este nível Nginx essencialmente sem oposição, a comparação só é possível apenas lighttpd Nginx, mas ainda não lighttpd ser completamente Nginx funcional, a configuração não é tão clara e de fácil leitura, informação da comunidade nginx também está longe de ativo.

Nginx também está disponível como uma página estática web e servidor de imagem, o desempenho nesta área e há oponentes. Há comunidade Nginx é muito ativo, há muitas módulos de terceiros.

 

 

** desvantagem Nginx é: **

Nginx só pode suportar protocolos de e-mail http, https e, por isso, quanto menor o âmbito do acima, isto é os seus inconvenientes.

exames de saúde para os suportes servidor back-end só pode ser detectada através da porta não suporta detectado pelo url. Não suporta a Sessão realizada directamente, mas através da ip_hash Para resolver.

LVS: cluster usando o kernel Linux para alcançar um servidor de alto desempenho, carga de alta disponibilidade equilíbrio, tem muito boa escalabilidade (escalabilidade), confiabilidade (Reliability) e Gerenciamento (Gerenciamento).

 

** vantagens LVS são: * *

capacidade anti-load, está trabalhando no 4º andar da rede de distribuição para uso somente, sem tráfego, este recurso também determina seus recursos de desempenho mais forte, memória e CPU consumidos no software de balanceamento de carga é relativamente baixo.

 

A configuração é relativamente baixa, o que é uma desvantagem também é uma vantagem, porque não há realmente nada muito a configure, não é preciso muito mais em contato, reduzindo a possibilidade de erro humano.

 

Estável, devido à sua própria capacidade anti-carga forte, em si um programa completo dupla hot standby como LVS + keepalived, mas temos implementado mais utilizado ou LVS / DR + keepalived no projeto.

 

Sem tráfego, LVS distribuir único pedido, mas não flui para fora de si mesmo, isso é para garantir que o desempenho do equalizador IO não é afetada pelo grande fluxo.

 

Ampla gama de aplicações, porque LVS trabalho em quatro camadas, para que ele possa fazer o balanceamento de carga para quase todas as aplicações, incluindo HTTP, bancos de dados, salas de chat online e assim por diante.

 

** LVS desvantagem é: **

 

software em si não suporta processamento de expressões regulares, não pode fazer estática e separação dinâmica, e agora muitos sites nesta área têm uma forte demanda, esta é a vantagem de mentiras Nginx / HAProxy + keepalived.

 

Se a aplicação local relativamente grande, então, LVS / DR + keepalived implementar mais complicado, existem máquinas Windows Server particulares por trás das palavras, se a implementação e configuração, bem como o processo de manutenção é mais complicado, relativamente falando, Nginx / HAProxy + keepalived muito mais fácil.

 

** HAProxy é caracterizado por: **

 

HAProxy também suporta hosts virtuais.

 

Ele pode complementar as vantagens HAProxy Nginx alguns inconvenientes, como a realização suporte Session, guiando o Biscoito; estado do servidor suporte back-end detectado através da obtenção de um URL especificado.

 

HAProxy semelhante com LVS,-se apenas de um software de balanceamento de carga; simples HAProxy terá melhor balanceamento de carga em termos de velocidade a partir do índice de eficiência Nginx, no processamento simultâneo é superior ao Nginx.

 

HAProxy suporta carga protocolo TCP equilibrar o encaminhamento, balanceamento de carga pode ser lido no MySQL, nós MySQL no back-end para detectar e balanceamento de carga, você pode usar LVS + keepalived fazer balanceamento de carga MySQL mestre-escravo.

 

carga HAProxy equilibrar estratégia muito, HAProxy algoritmo de balanceamento de carga agora é específica Há oito tipos:

 

① roundrobin, representa uma pesquisa simples, este muito disse, este é basicamente tem balanceamento de carga;

 

② estática-rr, expressos de acordo com o peso, a atenção proposto;

 

③ leastconn, representa o processo de conexão mínima, em primeiro lugar, propõe um foco;

 

④ fonte, mostra um IP solicitação de origem, com IP_hash este mecanismo é semelhante ao Nginx, podemos usá-lo como uma forma de resolver o problema da sessão, a atenção proposto;

 

⑤ ri, representada de acordo com um pedido de URI;

 

⑥ rl_param, mostra uma solicitação parâmetro de URL 'equilíbrio url_param' requer um nome de parâmetro URL;

 

⑦ HDR (nome), uma cabeça de bloqueio mostra uma solicitação HTTP para cada pedido HTTP;

 

⑧ RDP-biscoito (nome), representa, de acordo com biscoito (nome) para fixar, de acordo com o TCP e de hash cada pedido.

 

** Nginx e LVS resumo comparação: **

 

Nginx trabalho em sete camadas de rede, para que ele possa fazer por http própria aplicação de estratégias de desvio, como o nome de domínio, estrutura de diretórios, em comparação LVS não tem esse recurso, então Nginx Isso por si só pode fazer uso da ocasião é muito mais do que os LVS, mas Nginx estas características torná-lo útil para ajustar o grau mais elevado do que o LVS, eu muitas vezes ir ao toque toque, multi-touch, a chance de problemas humanos também será maior.

 

dependência Nginx na estabilidade da rede é pequena, em teoria, enquanto o ping foi completamente, o acesso à web normal, Nginx será capaz de até mesmo passar, Nginx que é uma grande vantagem! Nginx distinção entre redes internas e externas e, ao mesmo tempo possuir nó se ele está fora da rede, você tem o equivalente a uma única linha de backup; LVS é mais dependente do ambiente de rede, agora e servidor LVS no mesmo segmento de rede usando divisão maneira direta, efeito que pode ser garantida. Também nota, LVS necessidade de aplicar ao custodiante para fazer mais pelo menos um ip Visual IP, IP-se aparentemente não pode ser usado para fazer o VIP. administrador do LVS para fazer, realmente tem que acompanhar aprendendo um monte de conhecimento sobre as comunicações de rede, não é mais um HTTP é tão simples.

 

Nginx é relativamente simples de instalar e configurar, teste também é muito conveniente porque pode basicamente errado com o log impresso. instalação e configuração LVS, testes levaria um longo tempo; LVS relativamente grande dependência na rede, muitas vezes não podem ter sucesso por causa de um problema de configuração de rede e não um problema de configuração, um problema a ser resolvido é correspondentemente será muito problema .

 

Nginx também capaz de suportar cargas muito elevadas e estáveis, mas o grau de carga e estabilidade, bem como LVS pobres vários níveis: Nginx lidar com todo o tráfego de modo limitado pela IO e configuração da máquina; si erro ainda é difícil de evitar.

 

Nginx pode detectar falhas de servidor interno, tais como processamento de servidor web de acordo com o código de status retornado, o limite de tempo, e retornará um erro para reenviar o pedido para outro nó. LVS está atualmente em ldirectd também suporte para o servidor interno para monitor, mas o princípio LVS que não pode reenviar pedido. Por exemplo, o usuário é o upload de um arquivo e fazer upload de apenas a falha nó de processamento durante o processo de upload, Nginx irá cortar carregado para outra re-processamento do servidor, e LVS cortar diretamente fora, se é para fazer upload de um arquivo grande ou documentos importantes, os usuários podem, portanto, irritado.

 

Nginx para processamento assíncrono do servidor pedido pode ajudar nó para reduzir a carga, se você usar apache serviço estrangeiro direto, então um monte de servidor de banda estreita ligação apache vai pegar um monte de memória e não pode ser liberado, use um mais Nginx fazer apache procuração, estas ligações de banda estreita nginx será bloqueado, apache não vão amontoar em muitas solicitações, reduzindo, assim, uma quantidade considerável de consumo de recursos. Este usar o Squid também têm o mesmo efeito, mesmo que a lula em si é configurado para não cache no apache ainda de grande ajuda.

 

Nginx suporta http, https e e-mail (e-mail funcionalidade é raramente usado), aplicações LVS apoiada neste ponto será mais do que Nginx. Em uso, a estratégia geral adotada pela maioria dos front-end deve ser LVS, isto é, DNS devem ser direcionadas equalizador LVS, vantagens do LVS tornam ideal para fazer esta tarefa. endereço ip importante, melhores LVS esquerda hospedagem, tais como ip banco de dados, servidor ip webservice e assim por diante, esses endereços IP com o passar do tempo, o uso de superfície vai crescer, se a falha para substituir o ip vai seguir. Então, essas ip importante LVS hospedagem é o mais seguro, o único inconveniente disso é que o número de VIP necessária será mais. Nginx LVS pode ser utilizado como um nó de máquina, pode-se utilizar a função Nginx, e em segundo lugar, pode ser utilizado o desempenho Nginx. Claro, este nível também pode ser utilizado como função de lula, lula em um muito mais fraco do que o Nginx, o desempenho é um pouco inferior ao Nginx. Nginx também ser usado como um proxy para usar no meio, este nível Nginx essencialmente sem oposição, a única maneira de agitar o único lighttpd Nginx, mas ainda não lighttpd totalmente funcional Nginx pode fazer, a configuração não é tão clara e fácil de ler. Além disso, procurador de nível médio IP também é importante, para que o agente do meio também tem um VIP e LVS são a solução perfeita. aplicações específicas têm análise específica, se o site é relativamente pequena (menos de 10 milhões PV por dia), com Nginx é perfeitamente possível, se a máquina muito, você pode usar polling DNS, máquinas LVS-consuming, ou mais ; grandes sites ou serviços importantes, a máquina não se preocupar quando considerar o uso de um monte de LVS.

 

Saiba mais informações, visite:

Tencent T3-T4 boutique padrão Daquan PHP diretório Architect tutorial, enquanto você lê o pagamento garantia eleva-se a um nível superior (continuamente atualizado)

Acima de esperança para ajudar a todos, muitos Phper sempre encontrar alguns problemas e gargalos no tempo avançada, escrever mais código de negócios nenhum senso de direção, eu não sei por onde começar a subir, o que eu compilei algumas informações, incluindo mas não limitados a: uma arquitetura distribuída, altamente escalável e de alto desempenho, de alta concorrência, ajuste de desempenho do servidor, TP6, laravel, YII2, Redis , Swoole, Swoft, Kafka, Mysql otimização, shell scripts, Estivador, micro-serviços, Nginx, etc. conhecimento mais avançado necessário para produtos avançados secos pode ser livre para que todos possam compartilhar , necessidade de ser adicionado ao meu grupo oficial aqui .

Publicado 265 artigos originais · ganhou elogios 36 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/weixin_43814458/article/details/105253584
Recomendado
Clasificación