[zeromq-dev] Set up a broker as NameServer service
sentenac at ego-gw.it
Thu Nov 26 11:42:27 CET 2009
First of all thanks for your web site and articles like "broker vs
brokerless" that is very helpful to understand
messaging service architectures.
I am working for a big experiment involving a lot of control command
among about 500 processes dispatch on more than 100 cpu machines.
We currently use a simple messaging service called Cm that is working as
a "broker as NameServer service".
It was developped 15 years ago and actually does very well its job. It
makes simple and system independent the task-to-task communication
problem, by hiding every detail of the use of TCP-IP on which it is
based. It is peer-to-peer type of communication with a NameServer broker
daemon that only holds all the connection points associated with a name
for each process, and allow to monitor the list of processes running,
and show inter connections, kill them etc.... All processes can
communicate with any other declared in the same Cm Domain (an
environment variable), by simply declaring itself with a name to the
daemon using the CmMessageOpenServer function. To receive messages,
handler functions are be commonly defined with associated type that
determine the type of messages to be treated. Very importantly, a
timeout function CmMessageWaitWithTimeout. can be set not to block the
running processes waiting for a message Messages can be sent using the
appropriated type, and a arbitrary serie of strings, double, int, arrays
data, and the sender can wait to receive the corresponding answer using
the appropriated handler type response. Message handling is
asynchronous. Cm is light socket based, but monothreaded, and works only
on Linux, the Windows platform not being up-to-date. We have also a
very handy command line executable that allows to send and receive
answer to any process in the appropriated Cm Domain. So I wonder,
looking for a new maybe more powerful messaging service, if zeromq could
be the right one.
What I like is that zeromq is light, multithreaded, multi-platform, and
seems to be very robust after the tests shown. I think it is a good base
to develop the type of architecture "broker as a NameServer service"
But we would need to :
1) Write the daemon "broker as a NameServer service" by hiding all the
2) Provide the handler function layer, with a simple message writing
protocol (serie of strings, int, double, arrays)
3) Provide a command line executable to send/receive messages
I think it would be a very attractive product, for control-command
Looking in the web, I could not find easily any simple product like Cm.
Have anyone already thought about this type of application in the zeromq
More information about the zeromq-dev