redes
Este capítulo detalla como desarrollar protocolos en JavaGroups y está destinado a programadores que quieran escribir sus propios protocolos o modificar los existentes. Para ello, se describe la arquitectura de la pila de protocolos de JChannel (creación, disposición y flujo de eventos) y se explican los diversos protocolos que pueden incluirse.
El atractivo de una pilaconstruida apilando capas de protocolos es que son independientes unas de otras, por lo tanto, pueden fácilmente ser reemplazadas o actualizadas por otras versiones. Normalmente suelen contener poco código, enfocándose sólo hacía una funcionalidad concreta que las hace fáciles de entender. Si un protocolo se vuelve demasiado complejo, incorporando multiples funcionalidades, puede ser descompuestoen un número más pequeño de protocolos simples. Las capas de protocolos pueden ser añadidas sin modificación del resto de código de JavaGroups. Notar, sin embargo, que el código asociado a los protocolos será incluido y ejecutado con el resto de código de JavaGroups en la máquina virtual de Java (JVM, Java Virtual Machine), por lo tanto, puede afectar al comportamiento final de JChannel.
Así,las excepciones producidas en la pila de protocolos de JChannel, causadas por un mal funcionamiento del protocolo, son tratadas en el nivel de JChannel, y puede, por tanto, causar estragos en el funcionamiento del canal. El mal funcionamiento de los protocolos pueden afectar a los mensajes (añadiendo cabeceras erróneas, modificando los contenidos de los mensajes u omitiendo los mensajes), por lotanto, la fiabilidad de una pila de protocolos es la suma de la robustez y fiabilidad de todas sus capas.
Como cada protocolo tiene el mismo interfaz y es completamente independiente de cualquier otro protocolo, puede ser apilado junto a todos los demás protocolos. Sin embargo, esto podría no ser viable en muchos casos ya que es necesario respetar un cierto orden: aunque el orden para apilar losprotocolos sea sintácticamente independiente, no lo es semánticamente. Por ejemplo, el protocolo GMS requiere que el protocolo PING (o alguno con su misma funcionalidad) esté presente en alguna capa inferior de manera que pueda averiguarse la membresía inicial del canal. Concretando más: el protocolo GMS, en algún momento, enviará hacia abajo de la pila el evento FIND_INITIAL_MBRS (ver sección 7.6)para ser manipulado por cualquier otro protocolo que lo reconozca. Este protocolo realizará la tarea de encontrar la membresía inicial y pasar un evento FIND_INITIAL_MBRS_OK hacia arriba en la pila, conteniéndola. La capa GMS esperará por la respuesta y, de ser nula, creará un grupo con un único miembro. Por lo tanto, aunque GMS no dependa sintácticamente de PING (no llama a ningún método dePING), tiene dependencia semántica con alguna capa inferior que le responda al evento FIND_INITIAL_MBRS. Este tipo de dependencia es menos vinculante que una llamada a un método ya que puede utilizarse cualquier capa capacitada para responder a la petición de la membresía inicial y, además, GMS no conoce de que capa se trata.
5.1 La pila de protocolos de JChannel
5.1.1 Eventos (Event) y mensajes(Message)
La diferencia entre los eventos y los mensajes es que los eventos son usados para comunicación dentro de la pila (intra-stack) mientras que los mensajes son usados para comunicación entre pilas (inter-stack). De este modo, en la pila de protocolos de JChannel, sólo los eventos son pasados entre capas mientras que los mensajes son intercambiados entre pilas, es decir, puestos en la red yrecibidos desde la red por la capa más baja de las entidades pares implicadas.
Los eventos son usados para pasar información relevante entre las capas de la misma pila. Los mensajes son incorporados en eventos por la capa más baja y pasados hacia arriba de la pila. Cuando JChannel.receive() es llamado por una aplicación, si el contenido del evento depositado en la cola del canal es un...
Regístrate para leer el documento completo.