Aprendizaje de sistemas distribuidos con problemas

escrito en frente

He oído muchas verdades, pero todavía tengo una mala vida.

  He visto muchas habilidades y métodos sobre el aprendizaje, pero no los he aplicado a mi propio aprendizaje.

  A medida que envejezco, mi memoria empeora cada vez más y el tiempo total del bloque es cada vez menor, así que espero aprender de manera más eficiente. El aprendizaje es un hábito, así como un tipo de habilidad, este tipo de habilidad se desarrolla mejor durante la escuela, después de todo, la mayor parte del tiempo se dedica a estudiar en ese momento. Pero desafortunadamente, no desarrollé buenos hábitos de estudio que me convengan. Después del trabajo, además de los conocimientos y la tecnología utilizados en el trabajo diario, es difícil dominar nuevos conocimientos a través del autoaprendizaje (preferentemente al conocimiento profesional, es decir, la tecnología). Y hay tantas ramas y puntos de conocimiento en la industria de Internet, por lo que habrá tal situación. Cuando encuentro un nuevo conocimiento, me siento muy poderoso e interesado. Lo leí durante dos días, pero pronto lo olvidé. Además, para algunas tecnologías relativamente complejas, no hay forma de comenzar y es difícil persistir.

  El problema fundamental es que el aprendizaje no es sistemático, y los puntos de conocimiento no están conectados, originalmente, estos nuevos conocimientos rara vez se practican en el trabajo, si son islas aisladas de información, pronto se olvidarán. Otro problema es que no hay una buena planificación, si miras aquí hoy y hacia dónde mirarás mañana, te enredas en los detalles y te olvidas de captar la situación general.

  Afortunadamente, me di cuenta de este problema hace casi medio año, comencé a leer libros, leí los blogs de otras personas y comencé a pensar en cómo aprovechar el tiempo limitado. También practiqué algunas ideas, como escribir un blog e insistir en escribir un blog. También hay muchas fallas, como aprender y dominar una nueva tecnología. Con respecto a este punto, de hecho leí muchos artículos, y me impresionaron muchos de ellos, los cuales me parecieron muy razonables; también hay algunos buenos libros, como "estudiar más, aprender menos". Lo que se hace sobre el papel es superficial, y sé que este asunto debe practicarse. No importa cuán buenos sean los métodos de otras personas, debes practicarlos tú mismo para saber si son adecuados para ti.

  Hay muchas tecnologías que deben aprenderse, y no es fácil aprender nuevos conocimientos por sí mismo. Elegir una que le interese más será un mejor comienzo, por lo que planeo aprender sobre sistemas distribuidos.

  Con preguntas y un aprendizaje útil, primero comprenda la estructura general y luego profundice en los detalles de interés . Este es mi plan.

  En primer lugar, debe haber problemas, si repites el mismo trabajo todos los días y no tomas la iniciativa de aprender, será difícil descubrir nuevos problemas. No tengas miedo de ser ignorante, solo ten miedo de no saber que eres ignorante ¡Solo aprendiendo continuamente descubrirás más campos de conocimiento desconocidos!

empezar con preguntas

¿Qué problema tiene que resolver la distribución? Resuelva el problema de que los datos persistentes son demasiado grandes para almacenarlos en el disco duro de un solo nodo; resuelva el problema de que la cantidad de cálculo es demasiado grande para ser procesada por la memoria y la CPU de un solo nodo. Hay dos formas de resolver estos problemas: escalar verticalmente y escalar horizontalmente. El primero es mejorar la capacidad de un solo nodo, discos más grandes, CPU más rápidas y hardware y software personalizados.Sin embargo, esto significa precios más altos, y no importa cuán escalable sea, hay un límite superior. El último es compartir tareas de almacenamiento y computación en máquinas ordinarias y aumentar dinámicamente los nodos para hacer frente al crecimiento del volumen de datos, pero la desventaja es que la gestión de múltiples nodos y la programación de tareas son más problemáticas, que también es la investigación y la solución. de sistemas distribuidos pregunta. Los datos distribuidos solo se consideran cuando la cantidad de datos alcanza un punto en el que una sola máquina no puede almacenarse ni procesarse; de ​​lo contrario, todo está buscando problemas.

  El mantenimiento del estado es mucho más difícil que el cálculo, el llamado estado son los datos que deben persistir. Por lo tanto, se considera principalmente el almacenamiento distribuido, e incluso para la computación distribuida, para ahorrar ancho de banda, es necesario garantizar la ubicación de los datos tanto como sea posible, lo que también requiere almacenamiento distribuido.

  Ahora hay un montón de datos, que pueden ser estructurados o semiestructurados, es necesario segmentar los datos (segmento, fragmento, fragmento) para formar subconjuntos de datos uno por uno, almacenarlos en un grupo de nodos físicos y comunicarse. entre nodos físicos a través de la red. Entonces se deben considerar dos preguntas:

  Primero: cómo dividir los datos; 

  Segundo: problemas de confiabilidad y disponibilidad de datos

  

Fragmentación de datos

  La fragmentación de datos se refiere a dividir subconjuntos de datos en cada nodo físico de la manera más uniforme posible. Entonces, ¿cuáles son los desafíos?

  (1) Si un nodo físico deja de funcionar, cómo transferir los datos responsables del nodo físico a otros nodos físicos lo antes posible;

  (2) si se agrega un nuevo nodo físico, cómo migrar datos de otros nodos al nuevo nodo;

  (3) Para los datos modificables (es decir, los datos que solo se pueden agregar), como los datos de la base de datos, si el volumen de datos de un cierto nodo se vuelve grande, cómo migrar parte de los datos a otros nodos con cargas más pequeñas y lograr el efecto del equilibrio dinámico.

  (4) Problemas de gestión de metadatos: cuando los datos se distribuyen entre nodos, los usuarios necesitan saber en qué nodo se encuentran los datos específicos cuando los usan. Por lo tanto, el sistema necesita mantener los metadatos de los datos: es decir, información como la ubicación y el estado de cada dato . Cuando el usuario necesite datos específicos, primero consulte los metadatos y luego vaya al nodo específico para consultar. Cuando los datos se migran entre nodos, también es necesario actualizar los metadatos. El nodo de gestión de metadatos se denomina aquí metaservidor. La gestión de metadatos también trae nuevos desafíos:

    (4.1) Cómo extraer características de datos (las características son la base para la fragmentación y la clave para que los usuarios consulten datos), o admitir características de datos definidas por el usuario;

    (4.2) Cómo garantizar el alto rendimiento y la alta disponibilidad del metaservidor, ya sea un punto único o un conjunto de replicación

  (5) La granularidad de la fragmentación, es decir, el tamaño de un subconjunto de datos, también es la unidad básica de la migración de datos. Si la granularidad es demasiado gruesa, no es propicio para el balance de datos; si la granularidad es demasiado fina, el costo de administración y migración será relativamente alto.

redundancia de datos

  Como se mencionó anteriormente, los nodos en el sistema distribuido son todos nodos ordinarios, por lo que existe cierta probabilidad de que ocurran fallas físicas, como cortes de energía e indisponibilidad de la red, estas fallas hacen que los datos no estén disponibles temporalmente, otras fallas son más graves y Causará la pérdida de datos, como la corrupción del disco. Incluso si la falla de un solo nodo es una probabilidad pequeña, cuando la cantidad de nodos en el clúster es grande, la falla se convierte en un evento de alta probabilidad. Por lo tanto, garantizar una alta disponibilidad y confiabilidad de los datos es un problema que debe resolverse en los sistemas distribuidos.

  Para evitar un único punto de falla, una solución factible es la redundancia de datos (conjunto de replicación), es decir, los mismos datos se colocan en diferentes nodos físicos o incluso en diferentes centros de datos. Si los datos se escriben una vez y se leen varias veces, son fáciles de manejar y se pueden leer desde cualquier copia. Pero para muchos sistemas de almacenamiento distribuido, como las bases de datos, los datos cambian constantemente, con lecturas y escrituras. Entonces, ¿qué tipo de desafíos trae el conjunto de réplicas y cómo sopesarlo, asumiendo que hay tres réplicas?

  (1) El estado de las tres copias es igual, o hay un maestro (primario, maestro) y un secundario (secundario, esclavo). Si son iguales, entonces cada nodo puede recibir operaciones de escritura; si no son iguales, pueden Un nodo es responsable de todas las operaciones de escritura, todos los nodos proporcionan operaciones de lectura,

  (2) En caso de igualdad, cómo garantizar que la operación de escritura no entre en conflicto, garantizar que los datos de cada nodo sean coherentes y cómo garantizar que se puedan leer los datos más recientes

  (3) En caso de desigualdad

    (3.1) ¿Cómo sincroniza el nodo de escritura los datos modificados con otros nodos, de forma síncrona o asíncrona?

    (3.2) Si el nodo que no es de escritura puede proporcionar datos de lectura y, si está permitido, leerá datos obsoletos.

    (3.3) Cómo se genera el nodo maestro y cómo seleccionar un nuevo nodo maestro cuando el nodo maestro está inactivo. ¿Hay un centro de administración de conjunto de réplicas unificado (que registre quién es el principal y quién es secundario, y su estado respectivo), o el conjunto de réplicas elige un nodo principal por sí mismo?

  (4) Independientemente de si los nodos en el conjunto de réplicas son iguales o tienen nodos centralizados, siempre que haya múltiples copias de datos, se debe considerar la consistencia y disponibilidad de los datos. De acuerdo con la teoría CAP, solo se pueden satisfacer al mismo tiempo la coherencia, la disponibilidad y la tolerancia a errores de partición, y es necesario sopesar los diferentes sistemas distribuidos.

otro

  Los sistemas distribuidos tienen sus propios términos o conceptos. En este momento, tengo conocimiento de algunos de ellos, o los he usado; otros solo han oído hablar de ellos, pero no sé mucho sobre ellos; por supuesto, hay más que no sé, y Necesito aprender más Descubierto y dominado.

  Shard copy hash consistente idempotente CAP paxos raft NWR lease Protocolo de compromiso de dos fases Protocolo de compromiso de tres fases Problema bizantino

Supongo que te gusta

Origin blog.csdn.net/weixin_45925028/article/details/132234730
Recomendado
Clasificación