VASmalltalk – Service Discovery using czmq, zeromq

From my previous postings you may know, that I played pretty much with an external library named ZeroMQ . The main goal was to move the work of the plain interprocess away from the Smalltalk engine to external threads. My hope is, that because of this I can get more multithreading power from my hardware.

In the current project I needed to implement a service discovery or service offering in a local network to support zero configuration support.

The first choice was to use 0MQ and their epgm network support. Actually it worked pretty stable – but only under Windows 7. Under Windows XP all system had problems over 24 hours of running. The behaviour was pretty the same: suddenly a thread was running at 100%. And this only happened under XP.

In the last time of this project I removed the epgm-based approach and used the high level c wrapper around 0MQ around 0MQ, which offers a UDP based service discovery system.

At first the system crashed, but with the help of the developer list of 0MQ a solution could be found within 24 hours. Amazing – consider the support of commercial companies and how long it takes to get good support from them.

Therefore I wrapped czmq and the system is working now pretty well, using only UDP (and therefore using less network resources than epgm) – both under XP and Windows 7.

The library itself is also a good candidate for UDP programming, though they limited the support of max. 255 bytes per udp message, but that is a constant within the source code.

This entry was posted in Smalltalk and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s