COMUNICACIÓN EN GRUPO
Un Grupo es una colección de procesos que actúan juntos en cierto sistema o alguna forma determinada por el usuario. La propiedad fundamental de todos los grupos es que cuando un mensaje se envía al propio grupo, todos los miembros de este lo reciben. Es una comunicación de uno a muchos a diferencia de la comunicación puntual.
Los grupos son dinámicos, se pueden crear nuevos y destruir a los antiguos. Un proceso se puede unir a un grupo o dejar a otro. Un proceso puede ser miembro de varios grupos a la vez. Debido a esto es necesario un mecanismo para manejar los grupos y la membresía de los mismos.
Se reconocen fácilmente tres tipos de transmisiones, la multitransmisión, en la cual se puede establecer una dirección especial la cual es escuchada por otros procesos o grupos de procesos, cuando se envía un mensaje a esa dirección, el mensaje es enviado a todos los procesos que escuchaban esa dirección automáticamente. También existe la transmisión simple, en la cual los mensajes que tienen cierta dirección se entregan automáticamente a todos los procesos, sin importar que el mensaje haya sido enviado solo a un proceso en especial, esto resulta ser menos eficiente, ya que cada proceso tiene que verificar si el mensaje es para el. Y por ultimo, la unitransmisión, en el cual un emisor envía un mensaje a un único receptor.
ASPECTOS DE DISEÑO
GRUPOS CERRADOS VS.
GRUPOS ABIERTOS
Los sistemas que soportan la comunicación en grupo se pueden dividir en dos categorías, según quien pueda enviar los mensajes a quien. Algunos sistemas soportan los grupos cerrados, donde solo los miembros del grupo pueden enviar hacia el grupo. Los extraños no pueden enviar mensajes al grupo como un todo, pero le pueden enviar un mensaje individual a uno o algunos de los procesos del grupo. En contraste, otros sistemas soportan los grupos abiertos, donde cualquier proceso puede enviar mensajes a grupo, aun cuando no se es miembro de el.
GRUPOS DE COMPAÑEROS VS. GRUPOS JERARQUICOS
Ya dentro del grupo, su estructura puede variar. En algunos grupos todos los procesos son iguales, nadie es el jefe y todas las decisiones se toman en forma colectiva. Sin embargo en otros grupos, existe cierto tipo de jerarquía, en el cual uno de ellos es el coordinador, y el resto son los trabajadores. En este modelo, cuando llega una petición desde afuera del grupo a cualquiera de los procesos, esta petición es enviada al coordinador, este toma la decisión y actúa.
Cada una de las organizaciones tiene sus ventajas y sus desventajas. El grupo de compañeros es simétrico y no tiene punto de falla. Si uno de los procesos fallara, el grupo se haría mas chico, pero seguiría trabajando. Sin embargo a la hora de tomar decisiones se tiene que pedir voto a cada miembro, lo que ocasiona cierto retraso y costo
En el grupo jerárquico es todo lo contrario, debido a que es centralizado, si el coordinador fallara, el grupo tendría un retraso realmente alto.
MEMBRESÍA DEL GRUPO
Para el manejo de grupos se requiere de ciertos mecanismos que nos permitan crear o destruir o crear grupos, además de poder permitir a los miembros de los grupos el poder entrar y salir de ellos. Uno de ellos es el Servidor de Grupos, al cual se le puedan enviar todas estas peticiones. El servidor podría entonces tener una base de datos en la cual tendría registrada toda la información de cada miembro y de cada grupo y sus privilegios. Este método es directo, eficiente y fácil de aplicar.
El método opuesto es el manejar la membresía del grupo en forma distribuida. En un grupo abierto un extraño puede anunciar su presencia. En un grupo cerrado debe de colocarse un sistema parecido (de hecho el grupo cerrado siempre debe estar disponible para este tipo de peticiones). Para salir del grupo, basta con que el miembro anuncie su despedida del grupo.
Existen varios problemas con estos métodos, por ejemplo ¿que ocurría si de pronto uno de los miembros fallara, y no pudiera avisar al grupo?, los miembros del grupo tendrían que probar varias veces y al ver que el proceso no responde se le podría dar de baja. Otro problema seria el relacionado con la cantidad de procesos con los cuales el grupo puede estar trabajando si la cantidad es muy poca, el grupo tendría que reorganizarse de nuevo. Para esto, uno de los procesos tiene que tomar la iniciativa… pero, ¿que pasaría si dos procesos lo hacen al mismo tiempo?
DIRECCIONAMIENTO AL GRUPO
Para enviar un mensaje a un grupo, es necesario que el proceso tenga una forma de representar al grupo. En otras palabras, los grupos deben de poder ser direccionables. Una manera de hacerlo es darle una dirección especifica a cada grupo, parecida a una dirección de proceso.
Si la red soporta la transmisión múltiple, la dirección del grupo puede ser asociada con una dirección de multitransmisión de forma que cada mensaje enviado a la dirección de grupo se pueda multitransmitir. De esta forma, el mensaje será enviado a todas las maquinas que lo necesiten y nadie mas.
Si la red no soporta esta modalidad, pero si soporta la transmisión simple, el mensaje aun se puede transmitir. Así cada núcleo lo recibirá y extraerá la dirección del grupo. Si ninguno de los procesos de la maquina son miembros de la maquina, el mensaje se descarta. En caso contrario, el mensaje es enviado a todos los miembros.
Ya que si no se soporta ninguna de estas dos modalidades, cada núcleo deberá de tener una lista de las computadoras que tienen procesos pertenecientes al grupo, para entonces mandar a cada una un mensaje puntual.
Otros métodos de envíos de mensajes permiten por ejemplo, enviar un mensaje a todos aquellos miembros que tienen ciertas características, por ejemplo, un mensaje a todas aquellas computadoras que tienen 4M o menos. Esto se hace mediante un enunciado (expresión booleana) el cual se ejecuta y dependiendo del resultado se acepta o se rechaza el mensaje, a este método se le conoce como “Direccionamiento de predicados”.
ATOMICIDAD
Una característica de la transmisión en grupo es la Atomicidad, o la transmisión Atómica, la cual se asegura que los mensajes sean enviados a todos los miembros o a ninguno de ellos. No se permiten situaciones en las cuales algunos miembros del grupo si lo reciben y otros no.
Sin embargo, la implantación de este método no es tan sencilla, hasta ahora la única manera de asegurar que un miembro ha recibido el mensaje es pidiendo un mensaje de comprobación. Mientras las maquinas no fallen este método funciona.
Sin embargo al buscar la tolerancia a fallas, se intenta cumplir la atomicidad incluso con la presencia de fallas. Si el emisor llegara a fallar en cierto momento y solo se enviara a algunos de los miembros, estos miembros ni se darían cuenta de que algo les esta faltando. Sin embargo se tiene la esperanza de que algunos algoritmos nos ayuden a combatir este problema.
Para que la comunicación en grupo
sea fácil de comprender y de utilizar, se necesitan dos propiedades, la Atómica
vista anteriormente, y la ordenada, que se refiere al envió y recepción de
mensajes de manera ordenada.
Habrá ocasiones en las que una computadora recibirá bastantes peticiones, muchas de ellas querrán leyendo o actualizando la misma información casi al mismo tiempo. Ocasionando algunos problemas, uno de ellos, muy común puede ser el de leer información no actualizada, y mostrarla como actualizada.
Por ejemplo considerando un servidor de base de datos, en cuyas tablas se tiene el nivel de inventario del almacén, un cliente llega y pide 1 articulo, la base de datos revisa el inventario y se da cuenta que queda un articulo solamente y lo vende, la base de datos esta por actualizar los datos cuando justo en ese mismo instante otro cliente compra ese mismo articulo, la base de datos revisa y encuentra aun el articulo disponible y lo vende... en eso el proceso del primer cliente marca el articulo como vendido en la base de datos... dejando el inventario en cero. Dando como resultado, que el segundo cliente no Serra surtido.
Este tipo de problemas es muy común, esto se ha logrado combatir usando técnicas de bloqueo y de ordenamiento, en las cuales, si dos peticiones quieren cambiar el mismo registro, la tabla se bloquea para una de ellas mientras esta ocupada, y se habilita cuando ha sido desocupada.
APORTACION
Un ejemplo de cómo funciona un grupo es el siguiente, un proceso se tendrá que comunicar con otros mas. Por ejemplo, al considerar un grupo de servidores de base de datos que cooperan para ofrecer un servicio a prueba de fallos. En este sistema es recomendable que el cliente envíe el mensaje a cada uno de los servidores, de esta manera si uno falla, los demás están disponibles para responder.
Los grupos en el mundo de la computación se pueden encontrar en una gran variedad de niveles, por ejemplo, una persona que es miembro de una lista correos, puede entrar cuando quiera y la puede dejar cuando quiera, además puede ser miembro de muchas otras listas mas de correo electrónico. Cuando una persona manda un mensaje a la lista de correos los demás miembros reciben el mensaje.
CONCLUSION
La
comunicación en grupo tiene que permitir la definición de grupos, así como
características propias de los grupos, como la distinción entre grupos abiertos
o que permiten el acceso y cerrados que lo limitan, o como la distinción del
tipo de jerarquía dentro del grupo. Igualmente, los grupos han de tener
operaciones relacionadas con su manejo, como la creación o modificación.
La
comunicación en grupo nos permite tener una comunicación con múltiples procesos
a lo cual nos da ventajas en cuanto a desarrollo de nuevas aplicaciones que exploten
estas características. Como lo mencionamos en la sección de aportación.