Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

AjFabriq en NodeJs (Parte 1) Introducción

Siguiente Post

Hace unos años ya descubrí el proyecto Fabriq (gracias @asehmi!):

Remember Fabriq
Recordando Fabriq
FABRIQ has gone public!
Arvindra Shemi Fabriq Articles
Clemens Vasters Fabriq Articles

Los puntos principales:

FABRIQ is an infrastructure for constructing networks of nodes processing and relaying messages. These nodes are hosted in machines running into a serviced application.

You can have multiple machines running the same or different applications. The “network” is the application, “node” is a collection of “actions”, and each action process a message. More doc:

These nodes can be hosted in any distribution on several machines according to a defined configuration, so there may be machines running a single node or several nodes, this association are made by specifying the host-name or machine identification associated with each node in the network.

Each of these machines is running a serviced application responsible for starting and stopping its Host and Nodes which are the application main components. The host is responsible for handling the configuration, loading and unloading nodes and receives the messages and delivers them to the appropriate Node.

El pasado fin de semana (algo el domingo, algo el lunes, que fue feriado por aquí en mi país, Argentina) comencé a escribir un proyecto Javascript (para seguir practicando) que corre sobre NodeJs, basado en las ideas de Fabriq:

A Distributed Application Framework for NodeJs https://github.com/ajlopez/AjFabriqJs

La implementación es simple y ocupa un solo archivo de código, con cuatro “clases” Javascript.

Quiero ejecutar varios servidores NodeJs que alberguen aplicaciones AjFabriq, enviando mensajes a través de la red:

El Fabriq original tenía aplicación, nodos, configuración de cómo se distribuía esas aplicaciones y nodos de proceso en la read. Simplifiqué para quedarme con lo esencial y ahora tengo un Processor simple que acepta mensajes. Puede producir 0, 1 o más mensajes:

Los mensajes no tienen un esquema fijo y son objetos JSON que contienen su propia información de ruteo (cual aplicación va a recibir este mensaje, etc..):

Un Processor podría manejar todos los mensajes que contegan nome/valor application: “webcrawler” en su objeto JSON. Otros Processors son compuestos (composites de Processors): tienen otros procesos. Entonce, el Processor de web crawler podría tener un Processor especializado en atender los mensajes que contenga clave valor node:”downloader” en su objeto JSON. ¿Se ve la idea? Lo nuevo con respecto al Fabriq original es que las claves/valor y la profundidad del árbol de Processors LO DECIDE el programador. Pueden tener “applications”, “nodes”, o lo que quiera.

Un servidor host (que ejecuta NodeJs) puede tener varios Processors definidos. Cuando un mensaje es recibido un método simple local examina el árbol de Processors albergados y lo envía al adecuado. Podría ser procesado localmente o podría ser enviado a un servidor remoto. La red de servidores es dinámica: un nuevo servidor puede ser levantado y se puede unir a la red y comenzar ahí mismo a colaborar en el proceso de mensajes.

Hay temas pendientes para futuros posts: detalles de implementación, mostrar la más simple aplicación (corriendo local y distribuida), cómo uso net sockets (sockets planos), y mi fracaso al intentar usar Socket.IO (que maneja solito la serialización JSON y el protocolo de comunicación). Trabajo en progreso: hacer que AjFabriq esté más alineado con NodeJs usando EventEmitter en algunos puntos del proceso; un mejor reparto de la información de qué aplicaciones están en cada servidor; una implementación más robusta; renombrar lo que llamé Socket a Channel, una palabra que describe mejor la intención.

My previous work on distributed application samples:

AjMessages (en inglés)
AjMessages (en español)
AjAgents (en inglés)
AjAgents (en español)

Nos leemos!

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

Published Fri, Aug 26 2011 11:24 by lopez

Comments

# AjFabriq en NodeJs (Parte 2) Una aplicación local simple@ Wednesday, September 14, 2011 12:34 AM

Anterior Post   Veamos de explorar cómo usar AjFabriq en NodeJs. Hay una simple aplicación: https

Angel "Java" Lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: