En 2020 preguntas de la entrevista PHP (c)

Yaezakura: 2020 PHP preguntas de la entrevista (a)

Yaezakura: 2020 PHP preguntas de la entrevista (II)

 

A. Base de datos tres paradigmas

El primer paradigma: 1NF limitaciones en las propiedades atómicas, atributo necesario es atómica, la descomposición ya no;

El segundo paradigma: 2NF es los registros única restricción requieren se registra la identificación única, es decir, la singularidad de la entidad;

El tercer paradigma: 3NF redundancia campo está obligado a, que cualquier campo no se puede derivar de los otros campos, no requiere ningún campo redundante.

Paradigma ventajas y desventajas de diseño:

ventajas:

Se puede tratar de conseguir reducir la redundancia de datos, de tal forma que se actualicen rápidamente, pequeña

Contras: Para consultas requieren varias tablas para asociar, para reducir el aumento de eficiencia de lectura escritura eficiencia, optimizar el índice más difícil

Antinormalización:

Ventajas: reducido de mesa pueden tener asociados índice pueden ser mejor optimizados para dar

Desventajas: la redundancia de datos y datos anomalías, los datos deben ser modificados más costoso

Hay dos .Mysql qué tipo de cerraduras

- bloqueos de tabla MyISAM soportes, mesa de soporte para InnoDB y fila cerraduras, cerraduras fila por defecto
- bloqueo de tabla: pequeña sobrecarga, bloqueo rápido, no va a un punto muerto. Bloqueo de gran tamaño de partícula, la más alta probabilidad de conflictos de bloqueo, la cantidad más baja de concurrencia
- el bloqueo de fila: gran sobrecarga, el bloqueo lento, habrá un punto muerto. los esfuerzos de bloqueo, pequeña probabilidad de conflictos de bloqueo, la máxima concurrencia

 

III. ¿Qué es un procedimiento almacenado

Hemos utilizado para operar las sentencias SQL de lenguaje de base de datos requieren primera compilados en el curso de la implementación y ejecución, y se almacenan procedimientos (procedimiento almacenado) es un conjunto de funciones específicas con el fin de completar el conjunto de sentencias SQL, después de compilado almacenado en la base de datos, especificando el usuario el nombre del procedimiento almacenado y los parámetros dados (si el procedimiento almacenado con parámetros) para llamar a ejecutarlo.

Un procedimiento almacenado es una función programable que crea y se guarda en la base de datos. Puede tener algo de sentencias SQL y estructuras de control especial. Cuando se desea llevar a cabo la misma función en diferentes aplicaciones o internet, o un paquete con una función particular, el proceso de almacenamiento es muy útil. Base de datos de procedimiento almacenado puede ser visto como una programación orientada a objetos en el método de simulación. Permite el acceso controlado a los datos.

Ventajas:

(1) un procedimiento almacenado mejora la funcionalidad y la flexibilidad del lenguaje SQL. proceso de control de flujo se puede almacenar declaraciones preparadas, una gran flexibilidad, y se puede realizar la operación compleja juicio más complejo.

(2) El componente de almacenamiento está programado para permitir el procedimiento estándar. Una vez creado el procedimiento almacenado, se le puede llamar varias veces en el programa sin tener que volver a escribir las sentencias SQL procedimiento almacenado. Y los profesionales de bases de datos pueden ser modificados en cualquier momento del procedimiento almacenado, no hay impacto en el código fuente de la aplicación.

(3) El procedimiento de almacenamiento permite una velocidad de ejecución más rápido. Si una operación contiene un gran número de Código de transacción-SQL o se ejecuta varias veces, entonces la velocidad de ejecución del procedimiento almacenado mucho más rápido que el lote. Debido a que los procedimientos almacenados están precompilados. La primera vez que ejecuta una consulta procedimiento almacenado optimizador analizar la optimización, y le da el plan de ejecución final se almacena en las tablas del sistema. Las declaraciones de transacciones en SQL por lotes deben ser compilados y optimizados para cada ejecución, la velocidad es relativamente lenta.

(4) sobre el procedimiento almacenado puede reducir el tráfico de red. Para el funcionamiento con un objeto de base de datos (tales como consulta, modificar), si el procedimiento de declaraciones de transacciones en SQL involucradas operación se almacena proceso organizado, a continuación, cuando se llama al procedimiento almacenado en el equipo cliente, la red de entrega acaba la llamada declaración, lo que aumenta en gran medida el tráfico de la red y reduce la carga de la red.

 

(5) El proceso de almacenamiento se puede utilizar como un mecanismo de seguridad para aprovechar. El administrador del sistema para restringir permisos mediante la ejecución de un procedimiento almacenado que puede lograrse restricciones de acceso a los datos correspondientes, evitar el acceso de usuarios no autorizados a los datos, garantizar la seguridad de datos.

IV. Cómo manejar la carga, alta concurrencia

1, HTML estático
De hecho, todos sabemos, la más alta eficiencia, el consumo es el más pequeño de la página HTML puro estática, por lo que tratamos de hacer que las páginas de nuestro sitio usando páginas estáticas a darse cuenta de que la forma más fácil es en realidad el más eficaz método.

2, la separación servidor de imágenes de
las imágenes almacenadas por separado, para minimizar el gran flujo de imágenes y otros gastos generales, se puede colocar en un número de plataformas relacionados, tales como el ganado siete.

3, mesas de agrupación de bases de datos y base de datos de hash y la memoria caché

100 conexiones simultáneas a la base de datos, una base de datos no es suficiente, se puede separar desde el lector, la replicación maestro-esclavo, áreas de racimo base de datos para comenzar. Además, trate de reducir el acceso a la base de datos, la base de datos se puede utilizar como una memoria caché Memcache, Redis.

4, el espejo
minimizar descarga, la solicitud se puede distribuir a una pluralidad de diferentes lado de la imagen.

5. Equilibrio de carga:
máximo de conexiones simultáneas Apache 1500, sólo puede aumentar el servidor, se puede iniciar desde el hardware, tales como servidor de F5. Por supuesto, el costo de hardware es relativamente alta, que tienden a empezar desde el lado del software.

 

El equilibrio de carga (equilibrio de carga) se basa en la arquitectura de red existente, se proporciona un barato y manera eficaz ampliar el ancho de banda de los dispositivos de red transparentes y servidores de aumentar el rendimiento, mejorar datos de la red de procesamiento de la capacidad puede ser mejorada mientras que la flexibilidad de la red de y la disponibilidad. Actualmente, el equilibrio de la carga de software más utilizado es Nginx, LVS, HAProxy. Estoy hablando menores de tres años son ventajas y desventajas:

** ventajas Nginx son: **

El trabajo en las siete capas de la red, se puede hacer un número de solicitudes de HTTP estrategias de desviación, tales como el nombre de dominio, la estructura de directorios, sus normas regulares más potente y flexible que HAProxy, que es una de las principales razones por las que ahora es ampliamente popular, esto en sí mismo Nginx en ocasiones puede utilizar mucho más que los LVS.

Nginx dependencia de la estabilidad de la red es muy pequeña, en teoría, ser capaz de hacer ping usted será capaz de cargar funciones, este es uno de sus puntos fuertes; LVS contrarias relativamente grande la dependencia de la estabilidad de la red, que entiende plenamente este punto;

Nginx es relativamente fácil de instalar y configurar, probar más conveniente, puede básicamente mal con el registro impreso. configuración de LVS, poniendo a prueba tomaría mucho tiempo, LVS relativamente grande la dependencia de la red.

 

Puede asumir una alta y presión de carga estable, la diferencia en el hardware no admite un caso general, decenas de miles de veces la cantidad de carga concurrente es relativamente más pequeño que aquellos LVS.

Nginx se puede detectar a través del puerto al interior de fallas en el servidor, tal como el servidor web procesamiento de acuerdo con el código de estado devuelto, el tiempo de espera, y devolverá un error para volver a enviar la solicitud a otro nodo, pero que no se detecta apoyo inconveniente url. Por ejemplo, el usuario suba un archivo, y subir sólo el fallo de un nodo de procesamiento durante el proceso de carga, Nginx cortará subido a otro servidor de reprocesamiento, y LVS cortar justo a la salida, si se va a cargar un archivo grande o documentos importantes, los usuarios pueden, por tanto, no está satisfecho.

Nginx no es sólo un equilibrador / software de proxy inverso de carga buena, también es un potente servidor de aplicaciones Web. PNMB es también muy popular en los últimos años, la arquitectura web, en la estabilidad entorno de alto tráfico también es muy bueno.

Nginx ahora como un almacenamiento en caché Web inversa para acelerar más y más maduro y más rápido que la velocidad del servidor Squid tradicional, considere la posibilidad de usarlo como un acelerador de proxy inverso.

Nginx como proxy inverso utilizando el medio, este nivel Nginx esencialmente sin oposición, la única comparación posible es solamente lighttpd Nginx, pero aún no LightTPD ser completamente funcional Nginx, la configuración no es tan clara y fácil de leer, información de la comunidad Nginx también está lejos de ser activo.

Nginx también está disponible como una página estática web y servidor de imágenes, el rendimiento en esta área y no hay oponentes. Hay Nginx comunidad es muy activa, hay muchos módulos de terceros.

 

 

** inconveniente Nginx es: **

Nginx sólo se admite HTTP, HTTPS y protocolos de correo electrónico, por lo que cuanto menor sea el alcance de lo anterior, se trata de sus inconvenientes.

controles de salud para los soporte el servidor back-end sólo se pueden detectar a través del puerto no es compatible con detectada por url. No es compatible con la Sesión directamente, sino a través de la ip_hash Para resolver.

LVS: clúster mediante el núcleo de Linux para lograr un servidor de alto rendimiento, equilibrio de carga de alta disponibilidad, que tiene muy buena escalabilidad (escalabilidad), confiabilidad (fiabilidad) y Manejabilidad (Capacidad de administración).

 

** ventajas LVS son: * *

capacidad anti-carga, está trabajando en la 4ª planta de la red de distribución para su uso exclusivo, no hay tráfico, esta característica también determina sus recursos de rendimiento más fuerte, memoria y CPU que se consumen en software de equilibrio de carga es relativamente baja.

 

La configuración es relativamente baja, lo cual es una desventaja también es una ventaja, ya que no hay realmente nada más que configure, no se necesita mucho en contacto, lo que reduce la posibilidad de error humano.

 

Estable, debido a su propia capacidad anti-carga fuerte, en sí mismo un programa completo de doble modo de espera caliente como LVS + Keepalived, pero hemos puesto en marcha los más frecuentemente utilizados o LVS / DR + Keepalived en el proyecto.

 

No hay tráfico, LVS distribuir única petición, pero no sale de sí mismo, esto es para asegurar que el rendimiento del ecualizador IO no se ve afectada por el gran flujo.

 

Amplia gama de aplicaciones, ya que el trabajo de LVS en cuatro capas, por lo que puede hacer balanceo de carga para casi todas las aplicaciones, incluyendo HTTP, bases de datos, salas de chat en línea y así sucesivamente.

 

** inconveniente LVS es: **

 

Software en sí no es compatible con el procesamiento de expresiones regulares, no puede hacer estático y dinámico de la separación, y ahora muchos sitios de esta zona tienen una fuerte demanda, esto es la ventaja de mentiras Nginx / HAProxy + Keepalived.

 

Si la aplicación de sitio relativamente grande, a continuación, LVS / DR + Keepalived implementar más complicado, hay máquinas Windows Server particulares detrás de las palabras, si la implementación y configuración, así como el proceso de mantenimiento es más complicada, en términos relativos, Nginx / HAProxy + keepalived mucho más fácil.

 

** HAProxy se caracteriza por: **

 

HAProxy también soporta máquinas virtuales.

 

Se puede complementar las ventajas HAProxy Nginx algunos inconvenientes, tales como la celebración de una sesión de soporte, guiando la cookie, el estado del servidor de soporte de back-end detecta mediante la obtención de una URL especificada.

 

HAProxy similar con LVS, en sí sólo un software de equilibrio de carga; HAProxy sencilla tendrá un mejor equilibrio de carga en términos de velocidad de la ratio de eficiencia Nginx, el procesamiento concurrente es superior a la Nginx.

 

HAProxy soporta la carga de protocolos TCP equilibrio de reenvío, balanceo de carga se puede leer en MySQL, nodos de MySQL en la parte trasera para detectar y balanceo de carga, puede utilizar LVS + Keepalived hacer balanceo de carga de MySQL maestro-esclavo.

 

carga HAProxy equilibrio estrategia mucho, HAProxy carga algoritmo de equilibrio es ahora específico Hay ocho tipos:

 

① roundrobin, representa una encuesta sencilla, este mucho, dijo, esto es, básicamente, tiene equilibrio de carga;

 

② estática-rr, expresada de acuerdo con el peso, la atención propuesto;

 

③ leastconn, representa el proceso de conexión mínima, en primer lugar, propone un enfoque;

 

④ fuente, muestra una IP de origen de solicitud, con IP_hash este mecanismo es similar a Nginx, que lo utilizan como una forma de resolver el problema de la sesión, la atención propuesto;

 

⑤ ri, representada de acuerdo con una petición URI;

 

⑥ rl_param, muestra una petición parámetro URL 'equilibrio url_param' requiere un nombre de parámetro de URL;

 

⑦ HDR (nombre), una cabeza de bloqueo se muestra una solicitud HTTP para cada petición HTTP;

 

⑧ RDP-cookie (nombre), representa, según cookie (nombre) para bloquear, de acuerdo con el TCP y el hash cada petición.

 

** Nginx y LVS Resumen comparación: **

 

Nginx trabajo en siete capas de la red, por lo que puede hacer por http propia aplicación estrategias de desviación, tales como el nombre de dominio, la estructura de directorios, en comparación LVS no tiene esta característica, por lo que Nginx Esto en sí mismo puede hacer uso de la ocasión es mucho más que los LVS, pero Nginx estas características hacen que sea útil para ajustar el grado más alto que el LVS, que suelen ir a toque toque, multi-touch, la posibilidad de problemas humanos también será mayor.

 

Nginx dependencia de la estabilidad de la red es pequeña, en teoría, siempre y cuando el ping fue a través de, el acceso a la web normal, Nginx será capaz de llegar incluso a través, Nginx que es una gran ventaja! distinción Nginx entre las redes internas y externas, mientras que, al mismo tiempo, ser dueño de nodo si es fuera de la red, usted tiene el equivalente a una sola línea de copia de seguridad; LVS es más dependiente del entorno de red, ahora y servidor LVS en el mismo segmento de red usando manera dividida directa, efecto que puede ser garantizada. También nota, LVS necesidad de aplicar al custodio que hacer al menos uno más ip Visual IP, IP en sí aparentemente no se puede utilizar para hacer el VIP. administrador LVS hacer, realmente tiene que seguir aprendiendo mucho de conocimiento acerca de las comunicaciones de red, ya que un HTTP no es tan simple.

 

Nginx es relativamente sencillo de instalar y configurar, prueba también es muy conveniente porque puede básicamente mal con el registro impreso. LVS de instalación y configuración, pruebas llevaría mucho tiempo; LVS relativamente grande la dependencia de la red, a menudo no puede tener éxito debido a un problema de configuración de red y no un problema de configuración, un problema que hay que resolver es, en consecuencia será mucho problema .

 

Nginx también capaz de soportar cargas muy elevadas y estables, pero el grado de carga y la estabilidad, así como LVS pobres diversos niveles: Nginx manejar todo el tráfico de manera limitada por la IO y configuración de la máquina; en sí error es todavía difícil de evitar.

 

Nginx puede detectar fallos servidor interno, tales como procesamiento de servidor web de acuerdo con el código de estado devuelto, el tiempo de espera, y devolverá un error para volver a enviar la solicitud al otro nodo. LVS se encuentra actualmente en ldirectd también el apoyo para el servidor interno al monitor, pero LVS principio que no puede volver a enviar la solicitud. Por ejemplo, el usuario suba un archivo, y subir sólo el fallo de un nodo de procesamiento durante el proceso de carga, Nginx cortará subido a otro servidor de reprocesamiento, y LVS cortar justo a la salida, si se va a cargar un archivo grande o documentos importantes, los usuarios pueden, por lo tanto molesto.

 

Nginx para el procesamiento asíncrono del servidor petición puede ayudar nodo para reducir la carga, si se utiliza Apache servicio exterior directa, por lo que una gran cantidad de servidores de banda estrecha enlace Apache se llevará una gran cantidad de memoria y no puede ser liberado, utilice uno más Nginx hacer apache de proxy, estos enlaces de banda estrecha Nginx será bloqueada, Apache no se acumulan demasiadas peticiones, lo que reduce una cantidad considerable de consumo de recursos. Este uso del calamar también tienen el mismo efecto, incluso si el calamar en sí está configurado para no caché en Apache sigue siendo de gran ayuda.

 

Nginx soporta HTTP, HTTPS y correo electrónico (e-mail funcionalidad se utiliza muy poco), aplicaciones LVS apoyados en este punto serán más que Nginx. En uso, la estrategia general adoptada por la mayoría de front-end debe ser LVS, es decir, DNS debe ser dirigida ecualizador LVS, las ventajas de LVS hacen que sea ideal para hacer esta tarea. dirección IP importante, mejores LVS izquierda de alojamiento, tales como ip base de datos, IP del servidor de servicio web y así sucesivamente, estas direcciones IP con el paso del tiempo, el uso de la superficie crecerán, si la falta de sustitución del IP seguirá. Así que estos ip importante LVS de alojamiento es el más seguro, el único inconveniente de esto es que el número de VIP requerido será más. Nginx LVS se puede usar como una máquina de nodo, se puede utilizar la función de Nginx, y segundo, se puede utilizar el rendimiento Nginx. Por supuesto, este nivel también se puede utilizar como calamares función, calamares en un terreno más débil que Nginx, el rendimiento es algo inferior a Nginx. Nginx también ser utilizado como un proxy para utilizar el medio, este nivel Nginx esencialmente sin oposición, la única manera de sacudir la única lighttpd Nginx, pero aún no completamente funcional LightTPD Nginx puede hacer, la configuración no es tan clara y fácil de leer. Además, de nivel medio IP del proxy también es importante, por lo que el agente media también tiene un VIP y LVS son la solución perfecta. Las aplicaciones específicas tienen análisis específico, si el sitio es relativamente pequeño (menos de 10 millones de dólares al día PV), con Nginx es totalmente posible, si la máquina mucho, usted puede utilizar el sondeo de DNS, máquinas de LVS que consume, o más ; los sitios grandes o servicios importantes, la máquina no se preocupe acerca de cuándo considerar el uso de una gran cantidad de LVS.

 

Obtenga más información, visite:

Tencent T3-T4 Boutique estándar directorio Arquitecto tutorial Daquan PHP, siempre y cuando se lee el pago de garantía se eleva a un nivel superior (actualizado continuamente)

Por encima de la esperanza de ayudar a todos, muchas Phper siempre encontrar algunos problemas y cuellos de botella en el momento avanzada, escribir más código de negocio sin sentido de dirección, no sé por dónde empezar a subir, lo que he recopilado algunos datos, incluyendo pero no limitado a: una arquitectura distribuida, altamente escalable, de alto rendimiento, de alta concurrencia, el ajuste del rendimiento del servidor, TP6, laravel, YII2, Redis , Swoole, Swoft, Kafka, Mysql optimización, secuencias de comandos shell, estibador, micro-servicios, Nginx, etc. más avanzados conocimientos requeridos para los productos avanzados secos puede ser libre para que todos puedan compartir , es necesario añadir a mi grupo oficial aquí .

Publicados 265 artículos originales · ganado elogios 36 · Vistas a 10000 +

Supongo que te gusta

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