miércoles, 25 de agosto de 2010

Utilización de Tópicos (Topics)

¿Que es un Tópico (Topic)?

Un Tópico es una herramienta de publicación de mensajes a subscriptores, esto quiere decir que cada vez que yo ponga un mensaje en un Tópico todos los subscriptores lo van a recibir.

En general se lo relaciona directamente con las Colas por ser un caso especial de las mismas, o viceversa (para evitar discusiones filosóficas).

Los Tópicos resuelven dos grandes problemas de las arquitectura:
  • Publicación
  • Replicación
  • Desacoplamiento
Publicación
En ambientes distribuidos muchas veces es necesario transmitir comandos a todos los nodos. Por ejemplo comandos para reinicializar caches y estadísticas, etc.

Replicación
Cuando uno necesita tener varios ambientes replicados. Esto quiere decir que pongo datos en el Tópico que necesito si inserte en varios ambientes. Es muy útil en entornos heterogéneos donde puedo tener una base de datos Oracle y otra DB2.

Desacoplamiento
Al igual que las Colas los Tópicos son un intermediario por definición, el desacoplamiento es totalmente natural y se pueden agregar y sacar suscriptores en cualquier momento.

lunes, 16 de agosto de 2010

Utilización de Colas (Queue) (Uso de Colas)

¿Qué es una Cola (Queue)?

En la actualidad las colas son la herramienta por excelencia para cumplir con tres conceptos fundamentales de arquitectura:
  • Distribución de carga
  • Desacoplamiento
  • Transaccionabilidad y Tolerancia
Distribución de carga
Las Colas tienen tres características básicas que favorecen su participación en la distribución de carga:
  • Múltiples clientes simultáneos, varios clientes (Agentes) pueden estar esperando mensajes que se depositen la cola al mismo tiempo. Estos Agentes pueden estar en el mismo servidor o en distintos servidores.

  • Exclusividad de mensajes, un mensaje que es tomado (decolado) por uno de los Agentes es bloqueado para que no sea decolado por otro Agente.

  • Centralización de la distribución, al poner la cola en un servidor central es muy fácil su administración así como también agregar agentes o quitarlos.
Desacoplamiento
Al ser la Cola un intermediario por definición, existe una separación entre el proveedor del mensaje y el consumidor del mismo. El único requisito es que se sepa manejar el mensaje.

Transaccionabilidad y Tolerancia
Una de las características transaccionales de las colas es que si uno de los agentes fracasa en su ejecución el mensaje es devuelto a la cola para ser procesado por otro agente que tal vez tenga éxito.

El rollback puede darse por dos razones:
  • Voluntaria, el programador lo genera porque ha detectado que hay un error que puede ser reintentado, casos como IO (Sin espacio en disco, conexión caída, etc.).

  • Involuntaria, se cayo el servidor, problema de hardware, etc.