Importancia y características relevantes de los vectores de versión y su fácil entendimiento.


Las representaciones optimizadas en los sistemas distribuidos para detectar imprevistos en el tiempo no son muy intuitivas y no deberían ser ignoradas. los dos mecanismos que se analizan son vectores de versión y vectores de reloj, dos tipos de mecanismos muy útiles y muy complejos a la hora de poder ser manejado con la correcta certeza que podrán ser métodos detectores de eventualidades funcionales.

Los vectores de versión creado en el año 1983 (Parker, 1986) antes de los vectores de reloj, han visto su funcionalidad a la hora de manejar y rastrear eventualidades dentro de los sistemas distribuidos. Los errores que se pretende mejorar es la capacidad de concurrencia que maneja los vectores, es decir, los vectores con una entrada por cliente no escalan bien cuando millones de clientes acceden al servicio. Estas limitaciones son fácilmente resueltas cuando se habla de algoritmos optimizados que para este tipo concreto de problema pueda asignar un único identificador localmente o inmediatamente. En sistemas donde los clientes y servidores son divididos en nodos, es posible tal creación de un único identificador, pero esto retrasaría la comunicación con los servidores ante la creación de identificadores generados en el servidor. Con esta condición los clientes comunican solo con servidores y una nueva actualización sobrescribe todas las versiones anteriormente. La mayoría de ocurrencias de estos eventos los podemos encontrar en sistemas de almacenamiento compartido, por ejemplos sistemas de administradores de código, ya que cada usuario del proyecto une sus cambios y el servidor asigna una identificación dentro del proceso para correlacionar de manera satisfactoria los eventos.

Para ilustrar de mejor manera esta afirmación, explicare de manera detallada y con un lenguaje no muy técnico lo que se detalla en el párrafo anterior.
Eventualidades dentro de un sistema distribuido de alamcenamiento
Dentro de lo mencionado anteriormente, la ilustración 1 permite observar que en el escenario existe 4 nodos cada uno con su función definida para un sistema distribuido de almacenamiento. Cuando el cliente A y el cliente B actualizarán concurrentemente al servidor S, para el primer paso vemos como el cliente B procede a escribir una versión con un único nombre en este caso s1, y entrando al proceso de servidor S como representación {s1}, enseguida y de manera prolija el cliente A escribe una nueva versión a la cual el servidor S dará como {s2} tal cual como una nueva asignación. Como se puede ver el servidor ha tenido sus propios clientes t1, t2, t3 como recibe la actualización del servidor S, la próxima vez que reciba datos esta será reemplazada por la nueva información.

Entendiendo que la generación de nombres únicos para la asignación de interacciones en el tiempo en los sistemas distribuidos, permite la compactación de la representación de los vectores. Dado que los sistemas mantienen sus procesos y el reto es mantenerlos vivos la unión y actualización de sus nodos a través de los vectores de unión hacen que sea más un mecanismo óptimo para la ordenación de eventos en sistemas distribuidos.

Bibliografía
• Baquero, C. and Preguiça, N. (2016) ‘Why logical clocks are easy’, Communications of the ACM, 59(4), pp. 43–47. doi: 10.1145/2890782.
• Parker, D.S., Popek, G. J., Rudisin, G., Stoughton, A., Walker, B. J., Walton, E., Chow, J. M., Edwards, D., Kiser, S., Kline, C. 1983. Detection of mutual inconsistency in distributed systems. IEEE Transactions on Software Engineering 9(3): 240–247.

Publicar un comentario

Encantado de escucharte!

 

Copyright © Java Programming | Powered by Blogger | Template by 54BLOGGER | Fixed by Free Blogger Templates