CCR usado en mensajes asincrónicos

Leo en el blog de Arvindra Sehmi que la gente de Tyco Software House implementó un sistema donde usando CCR (Concurrent and Coordination Runtime), la librería que viene dentro de Microsoft Robotics. En su artículo ARCast.TV – Nice Example of CCR Adoption in the Enterprise muestra el video donde la gente de Tyco explica cómo consiguieron procesar gran cantidad de mensajes, basándose en envío asincrónico.


ARCast.TV – Stephen Tarmey of Tyco on adopting Robotics Studio CCR for High Performance Async IO
 

Me gustaría que mostraran algo más gráfico del sistema que armaron, pero igual es interesante escuchar a alquien que usa a Microsoft Robotics aplicado a la empresa.

Ya Arvindra había comentado usos de DSS/CCR más allá de Robotics en

DSS Use Cases in the Enterprise

Todavía algunos de esos usos no están publicados, pero espero que aparezcan más casos de éxito con el tiempo.

El año pasado escribí y publiqué un ejemplo AjMessages, con intercambio de mensajes asincrónicos, usando WCF como comunicación entre nodos de una grilla:

AjMessages- hacia un procesador de mensajes

También el año pasado escribí una versión para usar CCR internamente, y DSS como comunicación entre los nodos, pero no la publiqué. El núcleo del sistema se puede implantar en un host WCF o en un host DSS. Me gustaría en estos días, pulir un poco el código, y publicar el ejemplo, para ver que uno puede usar CCR internamente para encolar mensajes en memoria, y repartirlos en un pool de threads que maneja internamente CCR, mientras al mismo tiempo, repartimos mensajes en otros nodos de la grilla, si los hubiera, sin mayor problema, para conseguir escalabilidad usando más máquinas de forma transparente. Como ejemplo de uso, podría reescribir el Web Crawler o el programa de Fractal, que escribí directamente para DSS/CCR/VPL:

Agentes Distribuidos y Fractales usando DSS/VPL

Agentes Distribuidos usando DSS/VPL

Pero imaginen que pueden repartir una tarea entre varias máquinas, incluso remotas. Imaginen que pueden enviar una tarea a realizar (como recolectar información para un informe de Business Intelligence) a una sucursal, y otra tarea a máquinas de otra sucursal dentro de su empresa. Pueden recibir los resultados como mensajes, usando un patrón del tipo request-response. Podemos codificar “agentes” que se envíen mensajes entre sí, para colaborar en un objetivo.

Creo que el modelo de mensaje asincrónico junto con la implementación de grilla, puede ser explotado de muchas maneras. Mi idea es aprovechar mi semana sabática (que comienza mañana) para codificar algunos proyectos, y uno de ellos es una versión más terminada de AjMessages.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/

This entry was posted in 6148, 7337, 7747, 8846. Bookmark the permalink.

4 Responses to CCR usado en mensajes asincrónicos

  1. juanl says:

    maestro, leyendo este post y leyendo cada vez sobre robotics me viene a la cabeza hadoop (http://hadoop.apache.org/core) es permitido este tipo de comparación?
    abrazo

  2. lopez says:

    Hola Juanl!

    Si, se permite! :-) Hadoop es super interesante, yo estoy leyendo sobre hbase… Lo que no vi todavia es cuan ligado a MapReduce esta ligado todo Hadoop….

    Hbase es interesante, se podria programar en .NET algo similar, para entrenar en ese tipo de desarrollo. Tenia una idea de reproducir bigtable en .NET, pero es solo una idea por ahora…

  3. juanl says:

    maestro, cual cree ud que serían las ventajas de robotics por sobre hadoop? en otro orden de cosas hbase es SUPER interesante, hace unas semanas leí sobre esto, no recuerdo cómo llegué ahí pero me encantó el planteo que hicieron.

  4. lopez says:

    No se si llamarlo ventaja, pero asi como son parecidos, son diferentes. Robotics esta basado en un modelo REST, que se puede usar o no usar en aplicaciones distribuidas. No esta orientado a MapReduce (tengo que ver cuan ligado a MapReduce esta Hadoop en el fondo), podria programarlo orientado a lo que quiera, desde MPI hasta grilla hasta lo que se me ocurra. Lo que permite CCR es muy interesante, el manejo de delegados para atender respuestas abre a nuevas ideas. Las ports, los arbitrers, los distintos tipos de arbitrers que soporta, hacen que CCR se merezca el nombre de Concurrent AND COORDINATION Runtime.

    Luego, DSS, con autodescubrimiento de nodos andando (en el ultimo CTP), el envio y recepcion de SOAP, el soporte de protocolo DSSP que abre a comunicacion desde otros sistemas, y todos los service components ya armados para interactuar con un entorno de simulacion, robots fisicos o simulados, y la posibilidad de extenderlo a lo que uno quiera. Un panel de control via web, una exposicion del estado via REST, etc…

    Y finalmente, el VPL, que permite armar sobre bloques ya construidos, programas locales o distribuidos (le falta un diagrama distribuido donde la cantidad de nodos NO SE CONOZCAN de antemano)

    Es digamos, CCR/DSS/VPL divertido de explorar. Como hay menos hecho, es mas interesante.

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com/

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>