-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Designing Data-Intensive Applications: 5. Replication #8
Comments
Capítulo 5 - ReplicaciónReplicación quiere decir que podemos tener una copia de los datos en muchas máquinas y así poder obtener ventajas como: alta disponibilidad, baja latencia, escalabilidad; en este capitulo el autor nos habla de 3 algoritmos para replicación de cambios entre nodos: un solo líder, multi-líder y sin lider. Un solo líderCada vez que tenemos multiples replicas de nuestra base de datos debemos asegurar que toda la información sea consistente entre ellas, la solución que más usada es la replicación basada en un líder, en esta tenemos un líder y varios seguidores, cualquier cosa que el líder escriba en su estado local deberá ser transmitido a los nodos seguidores. Siempre podemos leer de cualquiera de los nodos, ya sea líder o seguidores, pero si queremos escribir solo podemos hacerlo en el líder. Replicación Síncrona vs AsíncronaLa replicación síncrona tiene la ventaja de todos los nodos seguidores van a estar siempre actualizados, si por algún motivo el líder falla la información siempre va a estar disponible en uno de sus seguidores, sin embargo replicar de forma asíncrona totalmente no es conveniente, lo que se debería tener es un nodo con replicación síncrona y los demás con replicación asíncrona y si el nodo síncrono se empieza a poner lento uno de los que son asíncronos se deberá empezar a comportar de forma síncrona. En la replicación asíncrona si el líder falla vamos a tener serios problemas con la lectura de los datos ya que la información no alcanza a ser replicada en los nodos seguidores. Manejo de fallas en un nodo
Implementación de logs replicados
Replication lagCuando una aplicación realiza lecturas a un "nodo seguidor" que funciona de forma asíncrona puede ver información desactualizada si el nodo está presentando alguna falla, por lo tanto tendremos información diferente entre el líder y ese "nodo seguidor" a esto se le conoce como consistencia eventual, sin embargo si se espera un tiempo determinado (no se sabe con certeza cuanto, pueden ser una fracción de segundo) los nodos estarán sincronizados nuevamente (si la falla no fue muy grave) Existen algunos métodos para solucionar el problema anterior:
NOTA: Algunos sistemas que funcionan con el modelo de un solo lider son Raft, Kafka, Paxos Una desventaja del modelo de un solo lider es que todas las escrituras pasan solamente por este, entonces si presenta una caida no se va a poder realizar la escritura hasta que se elija un nuevo lider. Replicación multi-liderEn este modelo varios nodos pueden ser lideres, por lo tanto varios nodos pueden aceptar escrituras, en este modelo cada lider también actua como seguidores a los otros lideres. Algunos casos de uso para la replicación multi-lider son:
Una desventaja de la replicación multi-lider es que los datos pueden ser modificados concurrentemente en dos diferentes datacenters.
Manejando conflictos en la escritura
Topologías en replicación multi-lider
En las topologías circular y en estrella si un nodo falla este fallo puede interrumpir el flujo de replicación de mensajes. Replicación sin liderEn la replicación sin lider no se fuerza a tener un order particular en las escrituras, estas se pueden enviar a varios nodos y también leer de varios nodos. Algunos motores de bases de datos como Riak, Cassandra y Voldemort usan la replicación sin lider, todos ellos inspirados en Dynamo
La replicación sin líder al igual que la replicación multi-lider también es adecuada para operaciones en multiples datacenters, ya que soporta escrituras concurrentes, interrupciones en la red, picos en la latencia, Cassandra implementa su soporte de multiples datacenters con este tipo de replicación. Detectando escrituras concurrentes
Cualquier otro complemento es bienvenido, muchas gracias. |
Esta semana a cargo @fmauricios
Siguiente semana @kuryaki
The text was updated successfully, but these errors were encountered: