Descargue PDFBINDER de este sitio en la oficina de Qingban, haga doble clic en el programa después de la descompresión para iniciar Shengyang Mutual

La concurrencia significa que se pueden realizar múltiples tareas al mismo tiempo. La programación concurrente tiene un significado amplio, incluida la programación multiproceso, la programación multiproceso y los programas distribuidos. El significado de concurrencia explicado en este capítulo pertenece a la programación multiproceso.

Goroutine está programado por el tiempo de ejecución de Go, mientras que los hilos están programados por el sistema operativo.

El usuario asigna suficientes tareas, el sistema puede ayudar automáticamente al usuario a asignar tareas a la CPU, para que estas tareas funcionen de la manera más simultánea posible. Este mecanismo se llama goroutine en lenguaje Go.

El programa Go comienza desde la función main () en el paquete principal. Cuando se inicia el programa, el programa Go crea una rutina rutinaria predeterminada para la función main ().

Ajustar el rendimiento de ejecución concurrente (DOMAXPROCS)

En la lógica tradicional, los desarrolladores necesitan mantener la correspondencia entre los subprocesos en el grupo de subprocesos y la cantidad de núcleos de CPU. Del mismo modo, Go también se puede hacer a través de la función runtime.GOMAXPROCS (), el formato es:

En los sistemas distribuidos comunes, situaciones tales como el tiempo de inactividad de la máquina o las anomalías de la red (incluido el retraso, la pérdida, la duplicación, los mensajes fuera de secuencia y las particiones de la red) (es decir, los sistemas distribuidos donde ocurren anomalías) siempre ocurrirán. El problema que el algoritmo de Paxos debe resolver es cómo llegar a un acuerdo rápido y correcto sobre el valor de ciertos datos dentro del clúster en un sistema distribuido donde pueden ocurrir las excepciones anteriores. También puede entenderse como la consistencia de los estados logrados en un sistema distribuido.

La idea central de la teoría de la Base es la consistencia final. Incluso si no se puede lograr una consistencia fuerte (Consistencia fuerte), cada aplicación puede usar métodos apropiados para lograr una consistencia eventual (Consistencia eventual) de acuerdo con sus propias características comerciales.

Mecanismo de quórum

Antes de comprender Paxos, primero comprendamos el "algoritmo de elección de quórum". Cuando ve el algoritmo de elección, ¿piensa en la elección de líder en zookeeper? Tu intuición está bien.

El mecanismo del quórum se puede ver en varios algoritmos de consistencia. La idea matemática principal proviene del principio del cajón. En una oración, se explica que en N copias, si hay W actualizaciones exitosas al mismo tiempo, entonces estoy leyendo Al recuperar datos, es necesario leer más de copias N-W, para que al menos se puedan leer datos actualizados.

En correspondencia con el mecanismo de quórum, WARO, que es WriteAllReadone, es un protocolo simple de control de copia. Cuando el Cliente solicita escribir datos en una copia determinada (actualizar los datos), esta operación de escritura es solo después de que todas las copias se hayan actualizado con éxito. Se considera un éxito, de lo contrario se considera un fracaso.

WARO da prioridad a garantizar el servicio de lectura, ya que todas las copias se actualizan con éxito, puede considerarse como una actualización exitosa, lo que garantiza que todas las copias sean consistentes, en este caso, solo es necesario leer los datos en cualquier copia. La disponibilidad del servicio de escritura es baja, porque mientras una copia no se actualice, se considera que la operación de escritura ha fallado. Supongamos que hay N copias y N-1 están todas inactivas. La copia restante aún puede proporcionar servicio de lectura, pero mientras una copia esté inactiva, el servicio de escritura no tendrá éxito.

WARO sacrifica la disponibilidad de servicios de actualización y maximiza la disponibilidad de servicios de lectura, y Quorum es un compromiso entre los servicios de actualización y los servicios de lectura.

Definición de quórum

La definición de Quórum es la siguiente: suponga que hay N copias, y la operación de actualización wi se actualiza con éxito en copias W, la operación de actualización wi se considera exitosa y los datos correspondientes a la operación de actualización enviada con éxito se denominan: "Datos enviados con éxito ". Para las operaciones de lectura, se requieren al menos R copias para leer los datos actualizados, entre ellos, W + R> N, es decir, W y R se superponen, generalmente, W + R = N + 1.

N = número de copias de datos almacenados

W = se requiere copia para una actualización exitosa

R = número de copias a las que se debe acceder en un objeto de datos leído

El quórum se limita a la necesidad de leer al menos N + 1-w copias de datos, lo que suena abstracto.

Por ejemplo, mantenemos 10 copias y actualizamos con éxito tres a la vez, luego se deben leer al menos ocho copias de datos, lo que puede garantizar que hayamos leído los últimos datos.

Solicitud de quórum

El mecanismo de quórum no puede garantizar una coherencia sólida, lo que significa que cualquier usuario o nodo puede leer los datos de copia enviados más recientemente con éxito en cualquier momento.

El uso del mecanismo de quórum debe cooperar con un servicio de metadatos que obtenga el último número de versión enviado con éxito, de modo que se pueda determinar el último número de versión que se haya enviado con éxito, y luego se puedan confirmar los últimos datos escritos a partir de los datos que se han leído.

Quorum es un mecanismo comúnmente utilizado en sistemas distribuidos. Es un algoritmo de votación utilizado para garantizar la redundancia de datos y la coherencia eventual. La aplicación del mecanismo de Quorum se puede ver en algoritmos como Paxos, Raft y ZooKeeper's Zab.

Conceptos relacionados del algoritmo de Paxos

En el protocolo de Paxos, hay tres tipos de roles de nodo, a saber, el proponente, el aceptador y el alumno, y también hay un cliente como emisor. Cuadros técnicos

Los tres tipos de roles anteriores solo se dividen lógicamente. En la práctica laboral, un nodo puede cumplir estos tres tipos de roles al mismo tiempo.

Proponente

Puede haber múltiples proponentes. Al comienzo del proceso, el proponente propone una moción, que es el valor. El llamado valor puede ser cualquier operación en el proyecto, como "modificar el valor de una variable a un nuevo valor". Estas operaciones se abstraen como valor.

Diferentes proponentes pueden proponer valores diferentes o incluso contradictorios. Por ejemplo, un Proponente propone "establecer la variable X en 1" y otro Proponente propone "establecer la variable X en 2", pero para la misma ronda del proceso de Paxos, solo hay un valor como máximo Fue aprobado

Aceptor

En el clúster, hay N Aceptores, y los Aceptores son completamente iguales e independientes. El valor propuesto por el Proponente debe ser aprobado por más de la mitad (N / 2 + 1) Aceptador antes de que pueda ser aprobado.

Aprendiz

El alumno no participa en la elección, pero aprende el valor aprobado. En Paxos, el alumno participa principalmente en el proceso de sincronización de máquina de estado relacionado.

Aquí el proceso de Leaner se refiere al mecanismo del consejo del Quórum. Un valor debe ser aprobado por el aceptador con W = N / 2 + 1. El alumno debe leer al menos N / 2 + 1 Accpetors y después de leer los resultados de N Acceptor como máximo. Para aprender un valor pasado. Por ejemplo:

Tengo 10 Accpetors, leo al menos 6 valores idénticos y como máximo 10 valores idénticos. Es decir, se selecciona el resultado con más votos.

Emisor de cliente

El rol del Cliente, como emisor, en realidad no participa en el proceso de elección, como la fuente de la solicitud de modificación. Interacción entre proponente y aceptador

Interacción entre proponente y aceptador

En Paxos, la propuesta se envía al Aceptador, y el Aceptador acepta seleccionar el valor final, y luego le dice al Estudiante el valor final.

La interacción entre el proponente y el aceptador tiene principalmente 4 tipos de comunicación de mensajes, como se muestra a continuación:

Supongo que te gusta

Origin www.cnblogs.com/360514875/p/12735364.html
Recomendado
Clasificación