[IRC-DEV] Sobre UDB.
Trocotronic
trocotronic at rallados.net
Thu Mar 31 15:48:59 CEST 2005
No es así. Más bien al revés. Cuando los TS no coinciden, el que tiene menor
borra su bloque y lo solicita de nuevo. Si coinciden pero el md5 no,
solicita los registros que le faltan.
- Dos nodos en split no se actualizan a la vez. Siempre se actualiza uno. El
otro queda pendiente. Cuando hay el netjoin, se pone todo al día.
- La actualización es comuna cuando se envía un OPT. Es decir, cuando se
recibe un OPT todos los servidores optimizan sus bloques. En este punto toda
la red está optimizada. Como ves, en este proceso poco importa el TS que se
mande. Ahora bien, cuando se recibe este OPT se guarda el TS que se mande
(aunque sea de hace 2 años). Todos los nodos tienen ese TS guardado y es el
que se intercambia en el netjoin. El único riesgo es que, como bien dices,
el reloj de la BIOS estuviera borrado o algún contratiempo fuera de lo
común. Doy por sentado que el sistema en el que se ejecuta está correcto, no
tiene troyanos ni virus ni nada. Porque puestos a decir, también podría ser
que hubiera una barra de uranio que alterara el contenido del disco y
modificara los bloques :) Sencillamente, quizás es presuntuoso, parto de la
base que el sistema es estable. Si tu pregunta es "está a prueba de bombas?"
No, te diré que no lo está.
Saludos, Trocotronic.
----- Original Message -----
From: "MrIRC" <internet.relay.chat at gmail.com>
To: "Desarrollo de/en IRC" <irc-dev at argo.es>
Sent: Thursday, March 31, 2005 12:59 PM
Subject: Re: [IRC-DEV] Sobre UDB.
Hace unos cuantos días que intento escribir esto pero no lo acabo haciendo.
He estado estudiando el protocolo de las UDB (Unreal Data Base) de
Trocotronic, y encuentro un fallo en el protocolo de sincronización.
Por lo que yo entiendo, el sistema se basa en que uno de los nodos va a
estar siempre al día. De este modo, cuando las horas no coinciden, se
agregan las lineas faltantes y si los hash fallan, se elimina la base
antigua y se recupera de la nueva.
Problemas:
- Si se actualizan dos nodos durante un split, se perderán los datos del
penúltimo en actualizarse. Desaparecen el el limbo, debido a que se eliminan
las bases de datos. Debería poderse actualizar por bloques, de manera que se
combinasen los datos. Las zonas distintas deberían agregarse, escogiendo la
del último en actualizarse. Al respecto sería útil que al final de cada
campo se situara un valor del momento de la última modificación. Como
recurso "basto" estaría copiar toda la base de datos del servidor remoto y
enviar seguidamente un OPT (aumentando sus funcionalidades) que eliminase
los registros duplicados (según la prioridad, la fecha de cada servidor).
Problemas de esto: los registros borrados durante un split volverían a
crearse.
- La actuación de los servidores depende de la fecha GMT en que se informa
se realizó la última OPTimización. Un servidor mal implementado o con la
fecha mal (borrado de la BIOS, etc.) desde el que se envíe OPT, establecería
esa fecha de modificación en todos los servidores. Si algún servidor estaba
caído/en split, etc. Sustituirá todos los datos de la red por los suyos
propios (anticuados). Solución: Ningún servidor debería aceptar un OPT con
una hora menor que la que tiene actualmente.
Enviado por: Trocotronic.
> Bueno pues ya que me das cuerda, voy a exponer un proyecto que hace
> bastantes meses llevo manteniendo.
> Es para UnrealIRCd y se nombra UDB (Unreal Data Base).
(...)
> Otro tema muy dispar es el protocolo o método de propagación. No me
> extenderé mucho pero consta de varios comandos todos emitidos por el
> comando irc DB:
>
> - INF: información de un bloque.
> - RES: resumen de un bloque.
> - INS: inserción de un bloque.
> - DEL: eliminación de un bloque.
> - OPT: optimización de un bloque.
> - ERR: error en el último comando recibido.
>
> No me voy a extender mucho más pero, por si alguien le interesa, puede
> encontrar todo esto en http://www.rallados.net/trabajos.php?item=udb , con
> los fuentes y el esquema del protocolo.
_______________________________________________
IRC-Dev mailing list Canal Oficial: #irc-dev en IRC-Hispano
IRC-Dev at argo.es http://www.argo.es/~jcea/wikis/irc-dev/
http://mailman.argo.es/listinfo/irc-dev http://www.irc-dev.net/
http://www.sindominio.net/ayuda/preguntas-inteligentes.html
More information about the IRC-Dev
mailing list