¡Enciclopedia de tecnología back-end de Internet!

¡Enciclopedia de tecnología back-end de Internet!

1. Desarrollo del sistema

Alta cohesión/bajo acoplamiento

alta cohesión

Alta cohesión significa que un módulo de software está compuesto de códigos altamente relacionados y solo es responsable de una tarea, lo que a menudo se denomina principio de responsabilidad única. La cohesión del módulo refleja la estanqueidad de la conexión interna del módulo.

acoplamiento bajo

Cuanto más estrechos sean los vínculos entre los módulos, más fuerte será el acoplamiento y menos independientes serán los módulos. El nivel de acoplamiento entre módulos depende de la complejidad de la interfaz entre módulos, la forma de llamar y la información pasada. Un sistema completo, entre módulos, que exista de la forma más independiente posible.

Generalmente, cuanto mayor sea el grado de cohesión entre los módulos en la estructura del programa, menor será el grado de acoplamiento entre los módulos.

sobre diseño

El sobrediseño consiste en realizar demasiado diseño orientado al futuro o complicar cosas relativamente simples, búsqueda excesiva de modularidad, escalabilidad, patrones de diseño, etc., agregando complejidad innecesaria al sistema.

optimización prematura

Prematuro no significa temprano en el proceso de desarrollo, sino cuando no está claro hacia dónde irán los cambios futuros en los requisitos. Sus optimizaciones no solo pueden provocar que no pueda implementar bien los nuevos requisitos, sino que sus conjeturas sobre las expectativas de optimización pueden seguir siendo erróneas, lo que en realidad no le permitirá obtener nada más que complicar el código.

La forma correcta es primero cumplir con sus requisitos con calidad, escribir suficientes casos de prueba y luego crear un perfil para encontrar el cuello de botella del rendimiento, y solo entonces realizar la optimización.

Lectura adicional: ¿Por qué la optimización prematura es la raíz de todos los males?

Refactorización

La refactorización consiste en mejorar la calidad y el rendimiento del software ajustando el código del programa, hacer que el modo de diseño y la estructura del programa sean más razonables y mejorar la escalabilidad y la capacidad de mantenimiento del software.

Lectura adicional: Técnicas para refactorizar código

efecto ventana rota

También conocida como teoría de la ventana rota, el efecto de la ventana rota (Teoría de las ventanas rotas) es una teoría de la criminología. Esta teoría sostiene que si se permite que existan fenómenos negativos en el medio ambiente, inducirá a las personas a imitarlos o incluso intensificarlos . Tomemos como ejemplo un edificio con algunas ventanas rotas; si esas ventanas no se reparan, es posible que los vándalos dañen más ventanas. Con el tiempo, incluso irrumpirán en edificios y, si los encuentran desocupados, tal vez se instalarán allí o les prenderán fuego.

Cuando se aplica a la ingeniería de software, no se debe permitir que surjan los peligros ocultos del código del sistema o el diseño de la arquitectura; de lo contrario, los peligros ocultos se volverán cada vez más graves con el paso del tiempo. Por el contrario, un sistema de alta calidad en sí mismo hará que la gente escriba involuntariamente código de alta calidad.

principio de desconfianza mutua

Significa que en todo el enlace de la operación ascendente y descendente de la operación del programa, no se puede garantizar que cada punto sea absolutamente confiable, y cualquier punto puede fallar o comportarse de manera impredecible en cualquier momento , incluidas las redes de máquinas, los propios servicios, los entornos dependientes y las entradas. , y pide Etc., así que estad fortificados en todas partes.

Lectura adicional: El principio de desconfianza en el mundo de la programación.

Persistencia

La persistencia es el mecanismo para la transición de datos del programa entre estados temporales y persistentes . En términos sencillos, los datos temporales (como los datos en la memoria, que no se pueden almacenar permanentemente) se conservan en datos persistentes (como la persistencia en una base de datos o disco local, que se puede almacenar durante mucho tiempo).

sección crítica

Una sección crítica se usa para representar un recurso común o datos compartidos que pueden ser utilizados por múltiples subprocesos, pero cada vez, solo un subproceso puede usarlo. Una vez que el recurso de la sección crítica está ocupado, otros subprocesos quieren usar este recurso. esperar.

bloqueo/no bloqueo

El bloqueo y el no bloqueo generalmente describen la interacción entre múltiples subprocesos . Por ejemplo, si un subproceso ocupa un recurso de sección crítica, todos los demás subprocesos que necesitan este recurso deben esperar en esta sección crítica, y la espera hará que el subproceso se cuelgue. Esta situación se conoce como bloqueo . En este momento, si el subproceso que ocupa el recurso no ha querido liberarlo, todos los demás subprocesos bloqueados en esta sección crítica no pueden funcionar. El no bloqueo permite que varios subprocesos ingresen a una sección crítica al mismo tiempo .

Sincrónico Asíncrono

Por lo general, sincrónico y asincrónico se refieren a aspectos de llamada a función/método.

Sincronización significa que cuando se emite una llamada a una función, la llamada no regresa hasta que se obtiene el resultado. La llamada asincrónica regresará instantáneamente , pero el retorno instantáneo de la llamada asincrónica no significa que su tarea esté completa. Iniciará un hilo en segundo plano para continuar la tarea y notificará a la persona que llama mediante devolución de llamada u otros medios después de que se complete la tarea. terminado.

concurrente/paralelo

Paralelo

Significa que al mismo tiempo se ejecutan varias instrucciones en varios procesadores al mismo tiempo . Entonces, no importa desde el punto de vista micro o macro , los dos se ejecutan juntos .

concurrencia

Significa que solo se puede ejecutar una instrucción al mismo tiempo, pero se ejecutan rápidamente varias instrucciones de proceso en rotación , por lo que tiene el efecto de ejecutar múltiples procesos al mismo tiempo en el nivel macro , pero no se ejecuta en el nivel macro. Al mismo tiempo en el nivel micro puedan ejecutar múltiples procesos de forma rápida y alternativa . Lectura adicional: La diferencia entre concurrencia y paralelismo

2. Diseño de arquitectura

Alta concurrencia

Debido a la llegada de los sistemas distribuidos, la alta concurrencia generalmente se refiere al diseño para garantizar que el sistema pueda procesar muchas solicitudes en paralelo al mismo tiempo . En términos generales, una alta concurrencia significa que, en el mismo momento, muchos usuarios acceden a la misma interfaz API o dirección URL al mismo tiempo . A menudo ocurre en escenarios empresariales con una gran cantidad de usuarios activos y una alta concentración de usuarios.

Lectura ampliada: alta concurrencia (expansión horizontal, expansión vertical)

Alta disponibilidad

Alta Disponibilidad HA (Alta Disponibilidad) es uno de los factores que se deben considerar en el diseño de la arquitectura de un sistema distribuido, generalmente significa que un sistema está especialmente diseñado para reducir el tiempo de inactividad y mantener una alta disponibilidad de sus servicios.

Lectura adicional: ¿qué es la alta disponibilidad?

separación lectura-escritura

Para garantizar la estabilidad de los productos de bases de datos, muchas bases de datos tienen una función de copia de seguridad en caliente de dos máquinas. Es decir, el primer servidor de base de datos es un servidor de producción que proporciona servicios externos de adición, eliminación y modificación; el segundo servidor de base de datos realiza principalmente operaciones de lectura .

Espera en frío/espera en caliente

espera en frío

Dos servidores, uno en ejecución y otro no en ejecución como respaldo. De esta manera, una vez que el servidor en ejecución deja de funcionar, se ejecutará el servidor de respaldo. La solución de respaldo en frío es relativamente fácil de implementar, pero la desventaja del respaldo en frío es que la máquina de respaldo no se hará cargo automáticamente cuando el host falle y necesita cambiar activamente de servicio.

Modo de espera activo

Es el llamado modo activo/en espera , los datos del servidor, incluidos los datos de la base de datos, se escriben en dos o más servidores al mismo tiempo. Cuando el servidor activo falla, la máquina en espera se activa mediante un diagnóstico de software (generalmente mediante un diagnóstico de latidos) para garantizar que la aplicación pueda reanudar completamente su uso normal en poco tiempo. Cuando un servidor deja de funcionar, cambiará automáticamente a otra máquina en espera para su uso.
Lectura ampliada: Alta disponibilidad de plataforma integrada: espera en frío y espera en caliente de dos máquinas

Vive más en diferentes lugares

Multi-activo en diferentes lugares generalmente se refiere al establecimiento de centros de datos independientes en diferentes ciudades . "Activo" es relativo a la copia de seguridad en frío. La copia de seguridad en frío consiste en hacer una copia de seguridad de la cantidad total de datos y no satisface las necesidades comerciales en momentos normales. Solo se utilizará cuando falle la sala de computadoras principal. Cambiar a la sala de computadoras de respaldo y ser más activa significa que estas salas de computadoras también necesitan tráfico en el negocio diario para brindar soporte comercial.

Lectura adicional: Resumen del esquema de diseño de arquitectura remota multiactiva de alta disponibilidad de la industria

Equilibrio de carga

El equilibrio de carga es un servicio de equilibrio de carga que distribuye el tráfico a varios servidores . Puede distribuir automáticamente la capacidad de servicio externo de la aplicación entre múltiples instancias, mejorar la disponibilidad del sistema de la aplicación al eliminar puntos únicos de falla y permitirle alcanzar un mayor nivel de tolerancia a fallas de la aplicación, proporcionando así sin problemas la carga requerida para distribuir. Tráfico de aplicaciones Capacidad equilibrada para brindarle servicios eficientes, estables y seguros.

Lectura adicional: Todo sobre el equilibrio de carga: resumen y reflexión.

separación estática y dinámica

La separación dinámica y estática se refiere al método de diseño de arquitectura de separar páginas estáticas de páginas dinámicas o interfaces de contenido estático de interfaces de contenido dinámico en la arquitectura del servidor web para mejorar el rendimiento del acceso y la capacidad de mantenimiento de todo el servicio.

Lectura adicional: arquitectura de separación estática y dinámica

grupo

La capacidad de carga concurrente de un solo servidor siempre es limitada. Cuando la capacidad de procesamiento de un solo servidor alcanza el cuello de botella de rendimiento, se combinan varios servidores para proporcionar servicios. Esta combinación se denomina clúster, y cada servidor del clúster se denomina A. "nodo" del clúster, cada nodo puede proporcionar el mismo servicio, duplicando así la capacidad de procesamiento concurrente de todo el sistema.

repartido

Un sistema distribuido consiste en dividir un sistema completo en muchos subsistemas independientes según las funciones comerciales. Cada subsistema se denomina "servicio". El sistema distribuido clasifica y distribuye solicitudes a diferentes subsistemas, lo que permite que diferentes servicios manejen diferentes solicitudes. En un sistema distribuido, los subsistemas operan de forma independiente y están conectados a través de comunicación de red para realizar intercomunicación de datos y servicios compuestos.

Teoría de la PAC

La teoría CAP se refiere a que en un sistema distribuido, la Consistencia (consistencia), la Disponibilidad (disponibilidad) y la Tolerancia de partición (tolerancia de partición) no se pueden establecer al mismo tiempo.

  • Coherencia: requiere que, en el mismo momento, todas las copias de seguridad de datos en el sistema distribuido sean iguales o estén en el mismo estado.

  • Disponibilidad: después de que algunos nodos del clúster del sistema dejen de funcionar, el sistema aún puede responder correctamente a las solicitudes de los usuarios.

  • Tolerancia de partición: el sistema es capaz de tolerar fallas en la comunicación de red entre nodos.

En pocas palabras, en un sistema distribuido, se pueden admitir como máximo los dos atributos anteriores. Pero obviamente, dado que está distribuido, estamos obligados a particionar, y desde la partición, no podemos evitar al 100% los errores de partición. Por lo tanto, sólo podemos elegir entre coherencia y usabilidad.

En los sistemas distribuidos, a menudo perseguimos la disponibilidad, que es más importante que la coherencia. Entonces, cómo lograr una alta disponibilidad, hay otra teoría aquí, que es la teoría BASE, que amplía aún más la teoría CAP.

Teoría básica

La teoría BASE establece:

  • Básicamente disponible

  • Estado blando

  • Eventualmente consistente (consistencia final)

La teoría BASE es el resultado de una compensación entre coherencia y disponibilidad en CAP. La idea central de la teoría es: no podemos lograr una coherencia fuerte, pero cada aplicación puede utilizar un método apropiado de acuerdo con sus propias características comerciales para hacer el sistema logra una eventual consistencia.

Escalar horizontalmente/Escalar verticalmente

Expansión horizontal Escalar horizontalmente

Agregando más servidores o instancias de programas para distribuir la carga, a fin de mejorar la capacidad de almacenamiento y la potencia informática.

Expansión vertical Ampliar

Mejore las capacidades de procesamiento independiente. Hay dos formas de expandirse verticalmente :
mejorar el rendimiento del hardware independiente , por ejemplo: aumentar la cantidad de núcleos de CPU, como 32 núcleos, actualizar mejores tarjetas de red, como 10 Gigabit, actualizar mejores discos duros, como SSD, expandir el disco duro capacidad de unidad como 2T y ampliar la memoria del sistema como 128G;
mejorar el rendimiento del software o arquitectura independiente , por ejemplo: usar caché para reducir los tiempos de IO, usar asincronía para aumentar el rendimiento de un solo servicio y usar datos sin bloqueos estructuras para reducir el tiempo de respuesta;

Expansión paralela

Similar al escalado horizontal.

Los nodos en el servidor del clúster son todos nodos pares paralelos. Cuando se requiere expansión, se pueden agregar más nodos para mejorar la capacidad de servicio del clúster. En términos generales, las rutas clave en el servidor (como inicio de sesión, pago, lógica empresarial central, etc. en el servidor) deben admitir la expansión paralela dinámica en tiempo de ejecución.

Expansión elástica

Se refiere a la expansión dinámica en línea del clúster implementado.

El sistema de expansión elástica puede agregar automáticamente más nodos (incluidos nodos de almacenamiento, nodos informáticos y nodos de red) de acuerdo con una determinada estrategia de acuerdo con el entorno empresarial real para aumentar la capacidad del sistema, mejorar el rendimiento del sistema o mejorar la confiabilidad del sistema, o lograr estos tres. objetivos al mismo tiempo.

Sincronización de estado/sincronización de trama

sincronización de estado

La sincronización de estado significa que el servidor es responsable de calcular toda la lógica del juego y transmitir los resultados de estos cálculos, y el cliente solo es responsable de enviar las operaciones del jugador y mostrar los resultados del juego recibidos. La sincronización de estado tiene alta seguridad, las actualizaciones lógicas son convenientes y la desconexión y reconexión son rápidas, pero la eficiencia del desarrollo es baja. El tráfico de la red aumenta con la complejidad del juego y el servidor debe soportar una mayor presión.

sincronización de fotogramas

El servidor solo reenvía el mensaje sin ningún procesamiento lógico, el número de fotogramas por segundo de cada cliente es el mismo y se procesan los mismos datos de entrada en cada fotograma. La sincronización de cuadros debe garantizar que el sistema tenga la misma salida bajo la misma entrada. La eficiencia de desarrollo de la sincronización de cuadros es alta, el consumo de tráfico es bajo y estable y la presión sobre el servidor es muy pequeña. Sin embargo, los requisitos de la red son altos, el tiempo de desconexión y reconexión es largo y la presión informática del cliente es alta.
Lectura ampliada: la diferencia entre sincronización de cuadros y sincronización de estado

3. Comunicación en red

grupo de conexiones

Establezca un grupo de búfer de conexiones con anticipación y proporcione un conjunto de estrategias de uso, asignación y administración de conexiones, de modo que las conexiones en el grupo de conexiones se puedan reutilizar de manera eficiente y segura, evitando la sobrecarga del establecimiento y cierre frecuente de conexiones.

Desconectar y volver a conectar

Debido a las fluctuaciones de la red, el usuario se desconecta del servidor de forma intermitente. Una vez restaurada la red, el servidor intenta conectar al usuario al estado y los datos en el momento de la última desconexión.

retención de sesión

La persistencia de la sesión se refiere a un mecanismo en el equilibrador de carga que puede identificar la relevancia del proceso de interacción entre el cliente y el servidor y garantizar que una serie de solicitudes de acceso relacionadas se asignen a una máquina mientras se realiza el equilibrio de carga. En términos humanos, significa que varias solicitudes iniciadas durante una sesión recaerán en la misma máquina.

Lectura ampliada: mecanismo de retención de sesión (sesión)

conexión larga/conexión corta

Generalmente se refiere a conexiones largas y conexiones cortas de TCP.

Una conexión persistente significa que después de establecer una conexión TCP, la conexión se mantiene todo el tiempo. Generalmente, los latidos se envían entre sí para confirmar la existencia correspondiente. Se realizan múltiples transmisiones de datos comerciales en el medio y la conexión generalmente no se realiza. desconectado activamente.

Una conexión corta generalmente significa que una vez establecida la conexión, se ejecuta una transacción (como: solicitud http) y luego se cierra la conexión.

Lectura ampliada: ¿Qué son exactamente las conexiones HTTP largas y las conexiones cortas?

Control de flujo / Control de congestión

control de flujo

Evite que el remitente envíe demasiado rápido, agotando los recursos del receptor, de modo que el receptor no tenga tiempo para procesar.

control de congestión

Evite que el remitente envíe demasiado rápido, lo que hará que la red llegue demasiado tarde para lidiar con la congestión, lo que provocará una degradación del rendimiento de esta parte o incluso de toda la red, e incluso provocará que los servicios de comunicación de la red se detengan en casos graves.
Lectura ampliada: control de flujo TCP (ventana deslizante) y control de congestión (proceso de trabajo del control de congestión)

efecto de multitud impactante

El efecto de grupo impactante también se llama efecto de grupo atronador, pero ¿cómo se llama? En resumen, el fenómeno de grupo impactante es cuando múltiples procesos (multiprocesos) bloquean y esperan el mismo evento al mismo tiempo (estado de sueño), si ocurre el evento de espera, entonces despertará todos los procesos (o subprocesos) en espera, pero al final, solo un proceso (subproceso) puede obtener el "control" de este tiempo y procesar el evento, mientras que otros procesos (subprocesos) ) obtener "control" Si falla, solo puede volver a entrar en el estado inactivo. Este fenómeno y el desperdicio de rendimiento se denominan grupos de truenos.

Lectura adicional: Explicación detallada del efecto Thundering Herd de Linux

NAT

NAT (traducción de direcciones de red, traducción de direcciones de red) sirve para reemplazar la información de la dirección en el encabezado del paquete IP. NAT generalmente se implementa en la salida de la red de una organización y proporciona accesibilidad a la red pública y conectividad de protocolo de capa superior al reemplazar la dirección IP de la red interna con la dirección IP de salida.

Lectura adicional: NAT detallada

4. Fallo anormal

falta del tiempo

El tiempo de inactividad generalmente se refiere a una falla inesperada de la computadora host y un bloqueo. En segundo lugar, algunos servidores, como los bloqueos de bases de datos, también se pueden denominar tiempo de inactividad y algunos servicios de algunos servidores se cuelgan, por así decirlo.

volcado de memoria

Cuando un programa falla y se interrumpe de forma anormal, el sistema operativo almacenará el estado actual del programa como un archivo coredunmp. Por lo general, el archivo coredump contiene la memoria, el estado del registro, el puntero de la pila, la información de administración de la memoria, etc. cuando el programa se está ejecutando.

Lectura ampliada: Introducción al coredump y resumen de los motivos del coredump

Penetración/avería/avalancha de caché

penetración de caché

La penetración de caché se refiere a consultar datos que no deben existir. Dado que es necesario consultar el caché desde la base de datos cuando falla el caché, no se escribirá en el caché si no se pueden encontrar los datos. Esto provocará que los datos no existentes para ir a la base de datos cada vez que se solicitan consultas, lo que a su vez ejerce presión sobre la base de datos.

desglose del caché

El desglose de la caché se refiere a cuando una clave de punto de acceso caduca en un momento determinado y hay una gran cantidad de solicitudes simultáneas para esta clave en ese momento, por lo que una gran cantidad de solicitudes llegan a la base de datos.

avalancha de caché

La avalancha de caché significa que una gran cantidad de datos en el caché alcanza el tiempo de vencimiento y el volumen de datos de la consulta es enorme, lo que provoca una presión excesiva sobre la base de datos o incluso un tiempo de inactividad.
La diferencia con la avería de la caché es que: la avería de la caché es la falla de las teclas de acceso rápido; la avalancha de caché es la falla de una gran cantidad de claves al mismo tiempo.
Lectura ampliada: Domine a fondo el desglose, la penetración y la avalancha de caché en diez minutos

500/501/502/503/504/505

500

Error interno del servidor: Error interno del servicio, generalmente el servidor encuentra una situación inesperada y no puede completar la solicitud.
Posibles razones:
1. Error de programa, por ejemplo: error de sintaxis ASP o PHP
2. Debido a la alta concurrencia, no se pueden abrir demasiados archivos debido a limitaciones de recursos del sistema.

501

No implementado. El servidor no comprende ni admite la solicitud HTTP solicitada.

502

Bad Gateway. La falla del servidor WEB puede deberse a procesos de programa insuficientes. El php-fpm solicitado se ha ejecutado, pero no se ha ejecutado por algún motivo, lo que eventualmente conduce a la terminación del proceso php-fpm.
Posibles razones:
1. Servidor Nginx, la cantidad de procesos php-cgi no es suficiente 2.
El tiempo de ejecución de PHP es demasiado largo
3. El proceso php-cgi está muerto;

503

Servicio no disponible. El servidor no está disponible actualmente. El servidor de mantenimiento del sistema no puede procesar temporalmente la solicitud del cliente, que es solo un estado temporal. Puede ponerse en contacto con el proveedor del servidor.

504

Tiempo de espera de puerta de enlace: el error 504 del servidor indica un tiempo de espera, lo que significa que la solicitud enviada por el cliente no ha llegado a la puerta de enlace y la solicitud no ha llegado al ejecutable php-fpm, que generalmente está relacionado con la configuración de nginx.conf.

505

Versión HTTP no compatible. El servidor no admite la versión del protocolo HTTP utilizada en la solicitud. (La versión HTTP no es compatible)
Excepto el error 500 que puede ser un error del lenguaje de programación, el resto de errores probablemente puedan interpretarse como un problema con el servidor o la configuración del servidor.

Desbordamiento de memoria/pérdida de memoria

sin memoria

Desbordamiento de memoria (Memoria insuficiente) significa que cuando el programa solicita memoria, no hay suficiente memoria para que la use el solicitante o, en otras palabras, se le proporciona un espacio de almacenamiento para almacenar datos de tipo int, pero usted almacena datos de tipo largo. Entonces el resultado es memoria. Si no es suficiente, se informará un error OOM en este momento, que es el llamado desbordamiento de memoria.

pérdida de memoria

La pérdida de memoria se refiere a que la memoria del montón que se ha asignado dinámicamente en el programa no se libera o no se puede liberar por algún motivo, lo que resulta en un desperdicio de memoria del sistema, lo que tiene consecuencias graves, como una ralentización de la velocidad de ejecución del programa e incluso el sistema falla.
Lectura ampliada: ¿Qué es el desbordamiento de memoria, qué es la pérdida de memoria?

manejar fuga

Una pérdida de identificador se produce cuando un proceso no puede liberar un identificador de archivo abierto después de llamar a un archivo del sistema.

Generalmente, el fenómeno después de una pérdida de identificador es que la máquina se ralentiza, la CPU se dispara y aumenta el uso de CPU del cgi o servidor con la pérdida de identificador.

Lectura ampliada: http://km.oa.com/group/19143/articles/show/162768

punto muerto

El punto muerto se refiere a un fenómeno en el que dos o más subprocesos se bloquean debido a la competencia por los recursos o la comunicación entre sí durante la ejecución. Si no hay una fuerza externa, todos quedan inhibidos en un estado bloqueado y no pueden continuar. Se dice que el el sistema está en un estado de punto muerto o el sistema tiene un punto muerto.

Lectura adicional: Enciclopedia Deadlock Baidu

Interrupción suave/interrupción dura

interrupción fuerte

La interrupción a la que normalmente nos referimos se refiere a una interrupción dura (hardirq). Generado automáticamente por periféricos (como tarjetas de red y discos duros) conectados al sistema. Se utiliza principalmente para notificar al sistema operativo sobre cambios en el estado de los periféricos del sistema.

interrupción suave

1. Generalmente es la interrupción del kernel por el programa de servicio de interrupción dura
2. Para cumplir con los requisitos del sistema en tiempo real, el procesamiento de la interrupción debe ser lo más rápido posible. Para implementar esta característica de Linux, cuando ocurre una interrupción, la interrupción dura procesa el trabajo que se puede completar en poco tiempo, y el trabajo que procesa eventos durante mucho tiempo se completa después de la interrupción, es decir, la interrupción suave. interrumpir (softirq) para completar.
Lectura ampliada: https://www.cnblogs.com/widic/p/7392485.html

falla

En un momento breve, los indicadores de rendimiento del servidor (como tráfico, E/S de disco, uso de CPU, etc.) son mucho mayores que el período de tiempo anterior y posterior a este momento. La aparición de fallos significa que la utilización de recursos de este servidor es desigual e insuficiente, y es fácil que se produzcan otros problemas más graves.

ataque de repetición

El atacante envía un paquete que ha sido recibido por el host de destino para lograr el propósito de engañar al sistema, que se utiliza principalmente en el proceso de autenticación de identidad y destruye la exactitud de la autenticación. Es un tipo de ataque que repite repetidamente, de forma maliciosa o fraudulenta, una transmisión de datos válida, ya sea por parte del iniciador o de un adversario que intercepta y reenvía los datos. Los atacantes utilizan la supervisión de la red u otros medios para robar las credenciales de autenticación y luego reenviarlas al servidor de autenticación.

isla de red

Una isla de red se refiere a una situación en la que algunas máquinas pierden su conexión de red con todo el clúster en un entorno de clúster, se dividen en un clúster pequeño y tienen inconsistencias en los datos.

sesgo de datos

Para un sistema de clúster, el caché general está distribuido, es decir, diferentes nodos son responsables de un cierto rango de datos almacenados en caché. No dispersamos lo suficiente los datos almacenados en caché, lo que provocó que una gran cantidad de datos almacenados en caché se concentrara en uno o varios nodos de servicio, lo que se denomina sesgo de datos. En términos generales, la asimetría de datos se debe a una implementación deficiente del equilibrio de carga.

ruptura

El cerebro dividido se refiere a la división del sistema causada por la red inalcanzable entre algunos nodos en el sistema de clúster. Los clústeres pequeños con diferentes divisiones proporcionarán servicios de acuerdo con sus respectivos estados. Los clústeres originales tendrán respuestas inconsistentes al mismo tiempo, lo que provocará que los nodos interactúen. entre sí: competencia por recursos, caos en el sistema, corrupción de datos.

5. Monitoreo de alarma

monitoreo de servicio

El objetivo principal del seguimiento del servicio es descubrir con precisión y rapidez cuándo un servicio tiene un problema o está a punto de tenerlo, a fin de reducir el alcance del impacto.

Generalmente existen muchos medios de monitoreo del servicio, que se pueden dividir en los siguientes niveles:

Capa del sistema (CPU, estado de la red, IO, carga de la máquina, etc.)
Capa de aplicación (estado del proceso, registro de errores, rendimiento, etc.)
Capa empresarial (código de error de servicio/interfaz, tiempo de respuesta)
Capa de usuario (comportamiento del usuario, opinión pública monitoreo, punto enterrado frontal)

Monitoreo completo de enlaces

Marcación de servicio

La prueba de marcación de servicio es un método de monitoreo para detectar la disponibilidad del servicio (aplicación). El servicio de destino se detecta periódicamente a través del nodo de prueba de marcación, que se mide principalmente por la disponibilidad y el tiempo de respuesta. Generalmente hay múltiples nodos de prueba de marcación en diferentes lugares.

detección de nodos

La detección de nodos es un método de monitoreo utilizado para descubrir y rastrear la disponibilidad y la fluidez de la red entre nodos en diferentes salas de computadoras (centros de datos). Se mide principalmente por el tiempo de respuesta, la tasa de pérdida de paquetes y el conteo de saltos. El método de detección generalmente es ping, mtr u otro acuerdo de propiedad.

Filtrado de alarmas

Filtre algunas alarmas predecibles y no ingrese datos de estadísticas de alarmas, como errores de respuesta http 500 causados ​​por una pequeña cantidad de visitas del rastreador, información de excepción personalizada de los sistemas comerciales, etc.

Deduplicación de alarmas

Cuando se notifica una alarma al responsable, no se seguirá recibiendo la misma alarma hasta que se recupere la alarma.

Supresión de alarmas

Para reducir la interferencia causada por la fluctuación del sistema, también es necesario implementar la supresión. Por ejemplo, la alta carga instantánea del servidor puede ser normal, y solo se debe prestar atención a la alta carga que dura un período de tiempo. a.

Recuperación de alarma

El personal de desarrollo/operación y mantenimiento no solo necesita recibir notificaciones de alarma, sino que también necesita recibir notificaciones de que la falla se elimina y la alarma vuelve a la normalidad.

Fusión de alarmas

Fusionar varias alarmas idénticas generadas al mismo tiempo. Por ejemplo, si varias cargas de subservicios son demasiado altas en un clúster de microservicios al mismo tiempo, es necesario fusionarlas en una sola alarma.

Convergencia de alarmas

A veces, cuando se genera una alarma, suele ir acompañada de otras alarmas. En este momento, solo se puede generar una alarma para la causa raíz, y otras alarmas convergen en subalarmas y envían notificaciones juntas. Por ejemplo, cuando se produce una alarma de carga de CPU en un servidor en la nube, suele ir acompañada de una alarma de disponibilidad de todos los sistemas que lleva.

autosanación

Detección de alarmas en tiempo real, prediagnóstico y análisis, recuperación automática de fallos y apertura de sistemas periféricos para conseguir un bucle cerrado de todo el proceso.

6. Gobernanza del servicio

microservicio

La arquitectura de microservicio es un patrón arquitectónico que aboga por dividir una única aplicación en un grupo de pequeños servicios, y los servicios se coordinan y cooperan entre sí para proporcionar a los usuarios el máximo valor. Cada servicio se ejecuta en su propio proceso independiente y los servicios se comunican entre sí mediante un mecanismo de comunicación liviano (generalmente API Restful basado en HTTP). Cada servicio se construye en torno a un negocio específico y se puede implementar de forma independiente en un entorno de producción, un entorno similar a la producción. , etc.

Lectura ampliada: Dios te dice cómo entender el marco de microservicios

descubrimiento de servicios

El descubrimiento de servicios se refiere al uso de un centro de registro para registrar la información de todos los servicios en el sistema distribuido, de modo que otros servicios puedan encontrar rápidamente estos servicios registrados. El descubrimiento de servicios es el módulo central que respalda la arquitectura de microservicios y SOA a gran escala, y debe tener la mayor disponibilidad posible.

Lectura adicional: Gobernanza de servicios: descubrimiento de servicios

recorte de flujo

Si observa la curva de monitoreo de solicitudes del sistema de lotería o seckill, encontrará que este tipo de sistema tendrá un pico durante el período de tiempo en que el evento está abierto, pero cuando el evento no está abierto, el volumen de solicitudes del sistema y La carga de la máquina es generalmente relativamente estable. Para ahorrar recursos de la máquina, no siempre podemos proporcionar la capacidad máxima de recursos para soportar solicitudes pico a corto plazo. Por lo tanto, es necesario utilizar algunos medios técnicos para debilitar el pico de solicitud instantánea y mantener el rendimiento del sistema bajo control bajo el pico de solicitud.

El recorte de picos también se puede utilizar para eliminar fallos, haciendo que la utilización de los recursos del servidor sea más equilibrada y suficiente.

Las estrategias comunes para reducir los picos incluyen colas, limitación de frecuencia, filtrado jerárquico y almacenamiento en caché de varios niveles.

Lectura ampliada: Serie de arquitectura de alta concurrencia: ¿Qué es la reducción de picos de tráfico? Cómo resolver el escenario de reducción de picos del negocio Seckill

versión compatible

En el proceso de actualización de la versión, es necesario considerar si la nueva estructura de datos puede comprender y analizar los datos antiguos después de actualizar la versión, y si el protocolo recién modificado puede comprender el protocolo anterior y realizar el procesamiento apropiado como se esperaba. Esto requiere compatibilidad de versiones durante el proceso de diseño del servicio.

protección de sobrecarga

Sobrecarga significa que la carga actual ha excedido la capacidad máxima de procesamiento del sistema. La aparición de una sobrecarga hará que algunos servicios no estén disponibles. Si no se maneja adecuadamente, es muy probable que el servicio no esté disponible por completo, o incluso una avalancha. La protección contra sobrecarga es solo una medida para que esta situación anormal evite que el servicio no esté disponible por completo.

Disyuntor de servicio

La función del fusible de servicio es similar al fusible de nuestra casa: cuando un servicio no está disponible o el tiempo de respuesta se agota, para evitar una avalancha de todo el sistema, la llamada al servicio se detiene temporalmente.

degradación del servicio

La degradación del servicio significa que cuando la presión sobre el servidor aumenta drásticamente, algunos servicios y páginas se degradan estratégicamente de acuerdo con la situación comercial y el tráfico actuales, para liberar recursos del servidor y garantizar el funcionamiento normal de las tareas principales. La degradación a menudo especifica diferentes niveles y realiza un procesamiento diferente frente a diferentes niveles de excepción.

Según el método de servicio: el servicio puede rechazarse, el servicio puede retrasarse y, en ocasiones, el servicio puede ser aleatorio.

Según el alcance del servicio: se puede cortar una determinada función y también se pueden cortar algunos módulos.

En resumen, la degradación del servicio necesita adoptar diferentes estrategias de degradación según las diferentes necesidades comerciales. El objetivo principal es que aunque el servicio esté dañado, sea mejor que nada.

Fusible VS Degradación

Mismo punto

El objetivo es el mismo: todos parten de la usabilidad y la confiabilidad, para evitar que el sistema falle,
la experiencia del usuario es similar: al final lo que experimenta el usuario es que algunas funciones no están disponibles temporalmente;

diferencia

Las razones desencadenantes son diferentes: la fusión del servicio generalmente es causada por una falla del servicio (servicio descendente), y la degradación del servicio generalmente se considera a partir de la carga general;

Limitación del servicio

La limitación actual puede considerarse como una especie de degradación del servicio: la limitación actual consiste en limitar el tráfico de entrada y salida del sistema para lograr el propósito de proteger el sistema. En términos generales, se puede medir el rendimiento del sistema. Para garantizar el funcionamiento estable del sistema, una vez que se alcanza el umbral que debe limitarse, es necesario limitar el flujo y tomar algunas medidas para completar el propósito de limitando el flujo. Por ejemplo: procesamiento retrasado, procesamiento rechazado o procesamiento rechazado parcial, etc.

Lectura adicional: hable sobre la limitación actual en sistemas de alta concurrencia

blindaje de fallas

La máquina defectuosa se elimina del clúster para garantizar que no se distribuyan nuevas solicitudes a la máquina defectuosa.

7. Método de prueba

Pruebas de caja negra/caja blanca

prueba de caja negra

Las pruebas de caja negra no consideran la estructura interna ni la estructura lógica del programa y se utilizan principalmente para probar si las funciones del sistema cumplen con las especificaciones de requisitos. Generalmente, habrá un valor de entrada, un valor de entrada y un valor esperado para comparar.

prueba de caja blanca

La prueba de caja blanca se utiliza principalmente en la etapa de prueba unitaria, principalmente para pruebas a nivel de código. Para la estructura lógica interna del programa, los métodos de prueba incluyen: cobertura de declaraciones, cobertura de decisiones, cobertura de condiciones, cobertura de ruta y cobertura de combinación de condiciones.

Unidad/Integración/Sistema/Pruebas de Aceptación

Las pruebas de software generalmente se dividen en cuatro etapas: pruebas unitarias, pruebas de integración, pruebas del sistema y pruebas de aceptación.

prueba de unidad

Las pruebas unitarias consisten en verificar y verificar la unidad verificable más pequeña en el software, como un módulo, un proceso, un método, etc.
La prueba unitaria tiene la granularidad más pequeña y generalmente el equipo de desarrollo la prueba utilizando un método de caja blanca, principalmente para probar si la unidad se ajusta al "diseño".

Pruebas de integración

Las pruebas de integración también se denominan pruebas de ensamblaje. Por lo general, sobre la base de las pruebas unitarias, todos los módulos del programa se prueban de manera ordenada e incremental.
Las pruebas de integración se realizan entre las pruebas unitarias y las pruebas del sistema y actúan como un "puente". Generalmente, el equipo de desarrollo utiliza un método de caja blanca y caja negra para realizar las pruebas, que no solo verifican el "diseño" sino también los "requisitos".

prueba del sistema

Durante las pruebas del sistema, el software que ha pasado la prueba de integración, como parte del sistema informático, se combina con otras partes del sistema, y ​​se llevan a cabo una serie de pruebas estrictas y efectivas en el entorno operativo real para encontrar problemas potenciales. en el software y garantizar el funcionamiento normal del sistema.
Las pruebas del sistema tienen la mayor granularidad y generalmente las prueba un equipo de pruebas independiente utilizando un método de caja negra, principalmente para probar si el sistema cumple con la "especificación de requisitos".

Examen de ingreso

La prueba de aceptación, también conocida como prueba de entrega, es una prueba formal dirigida a los requisitos del usuario y los procesos comerciales para determinar si el sistema cumple con los criterios de aceptación, y los usuarios, clientes u otras organizaciones autorizadas deciden si aceptan el sistema.
Las pruebas de aceptación son similares a las pruebas del sistema, la principal diferencia es que los probadores son diferentes, mientras que las pruebas de aceptación las realizan los usuarios.
Lectura adicional: Introducción a las pruebas unitarias, pruebas de integración, pruebas de sistemas, pruebas de regresión y pruebas de aceptación del usuario.

Pruebas de regresión

Cuando se encuentran y corrigen defectos, o se agregan nuevas funciones al software, se realizan nuevas pruebas. Se utiliza para comprobar que los defectos encontrados han sido corregidos y que las modificaciones no han provocado nuevos problemas.

prueba de humo

Este término proviene de la industria del hardware. Encienda el dispositivo directamente después de realizar un cambio o reparación en una pieza de hardware o componente de hardware. Si no hay humo, el componente ha pasado la prueba. En software, el término "prueba de humo" describe el proceso de verificar los cambios de código antes de insertarlos en el árbol fuente del producto.

La prueba de humo es una estrategia rápida de verificación de funciones básicas para paquetes de versiones de software en el proceso de desarrollo de software. Es un medio para confirmar y verificar las funciones básicas del software, no una prueba en profundidad de los paquetes de versiones de software.

Por ejemplo: para una prueba de humo de un sistema de inicio de sesión, solo necesitamos probar la entrada del nombre de usuario y la contraseña correctos para verificar el punto de función principal del inicio de sesión. En cuanto al cuadro de entrada, caracteres especiales, etc., puede ser realizado después de la prueba de humo.

Pruebas de rendimiento

Las pruebas de rendimiento consisten en probar varios indicadores de rendimiento del sistema simulando varias condiciones de carga normales, máximas y anormales a través de herramientas de prueba automatizadas. Tanto las pruebas de carga como las pruebas de estrés son pruebas de rendimiento y se pueden combinar.

Mediante pruebas de carga, se determina el rendimiento del sistema bajo diversas cargas de trabajo. El objetivo es probar los cambios en varios indicadores de rendimiento del sistema cuando la carga aumenta gradualmente.

La prueba de estrés es una prueba para obtener el máximo nivel de servicio que el sistema puede proporcionar determinando el cuello de botella o el punto de rendimiento inaceptable de un sistema.

Puntos de referencia

Benchmark (Benchmark) también es un método de prueba de rendimiento, que se utiliza para medir el rendimiento operativo real máximo del hardware de la máquina, así como el efecto de mejora del rendimiento de la optimización del software, y también se puede utilizar para identificar problemas de eficiencia de CPU o memoria de un determinado fragmento de código. Muchos desarrolladores utilizan puntos de referencia para probar diferentes modos de concurrencia, o se utilizan puntos de referencia para ayudar a configurar el número de grupos de trabajadores para garantizar el máximo rendimiento del sistema.

Pruebas A/B

La prueba A / B consiste en utilizar dos o más muestras asignadas aleatoriamente de números similares para comparar. Si los resultados experimentales del grupo experimental y el grupo de comparación son estadísticamente significativos en los indicadores objetivo, se puede explicar que el grupo experimental Características que conducir al resultado que desea ayudarle a probar una hipótesis o tomar una decisión sobre un producto.

Lectura adicional: Cómo realizar correctamente las pruebas A/B

prueba de cobertura de código

La cobertura de código (cobertura de código) es una medida en las pruebas de software, que describe la proporción y el grado de código fuente en el programa que se está probando, y la proporción resultante se denomina cobertura de código.

Al realizar pruebas unitarias, la tasa de cobertura del código se usa a menudo como un indicador para medir la calidad de la prueba, e incluso la tasa de cobertura del código se usa para evaluar la finalización de la tarea de prueba, por ejemplo, la tasa de cobertura del código debe alcanzar 80 % o 90%. Desde entonces, los evaluadores han trabajado duro para diseñar el código de cobertura de casos.

Lectura ampliada: Hablando sobre la cobertura del código de prueba unitaria

8. Implementación de lanzamiento

DEV/PRO/FAT/UAT

DESARROLLO

Entorno de desarrollo
El entorno de desarrollo se utiliza para que los desarrolladores lo depuren y lo utilicen, y la versión cambia mucho.

GORDO

El entorno de prueba de aceptación de funciones
es un entorno de prueba de aceptación funcional para que lo prueben los probadores de software.

UAT

Entorno de prueba de aceptación del usuario
El entorno de prueba de aceptación del usuario se utiliza para la verificación funcional en el entorno de producción y se puede utilizar como entorno de prelanzamiento.

PRO

Entorno de producción
entorno de producción, entorno formal en línea.
Lectura adicional: https://www.cnblogs.com/chengkanghua/p/10607239.html

lanzamiento gris

La versión gris significa que durante el proceso de actualización de la versión, algunos usuarios se actualizan primero con las características del producto a través del control de partición, control de lista blanca, etc., mientras que el resto de los usuarios permanecen sin cambios. Cuando los usuarios que actualizan las características del producto no tienen comentarios después de un período de Con el tiempo, se ampliará gradualmente el alcance y finalmente se abrirán las funciones de la nueva versión a todos los usuarios. El lanzamiento en escala de grises puede garantizar la estabilidad del sistema en general. Los problemas se pueden encontrar y corregir en la escala de grises inicial para garantizar su impacto.

Retroceder

Se refiere al comportamiento de restaurar el programa o los datos al último estado correcto (o la última versión estable) cuando el programa o los datos se procesan incorrectamente.

Supongo que te gusta

Origin blog.csdn.net/heshihu2019/article/details/132632296
Recomendado
Clasificación