[Haskell-cafe] [ANN] network-transport-zeromq-0.1.

Alexander V Vershilov alexander.vershilov at gmail.com
Thu Mar 27 23:03:29 UTC 2014


Hi,

I'm happy to announce a new network-transport backend based on the 0MQ
brokerless protocol [1]. This implementation makes it possible to the
wealth of ZeroMQ transports through a simple and shared API. In
particular, ZeroMQ supports authenticated communication channels,
encryption, efficient multicast and throughput enhancement techniques
such as message batching.

Wrapping a subset of the ZeroMQ API behind the network-transport API
makes it possible for a wealth of higher-level libraries such as
distributed-process and HdpH to communicate over ZeroMQ seamlessly,
with little to no modification necessary.

Network transport zeromq provides:
  * basic network transport API, ability to use channels and send
     messages over reliable connections between endpoints.
  * multicasting. Multicasting reliable and ordered in absence of a long
    network failures, i.e. if message A is send before message B, then
    message A will be delivered before message B to every subscriber in
    multicast group.
  * basic plain text authorization.
  * 0mq driven reliability. (automatic connection restart without message
    loose).
  * ability mark connections as broken, this may be required to stop
    automatic reconnect.

We currently have a few performance issues that cause a consistent 30%
slowdown in performance of network-transport-zmq over TCP, but we’re
working on it. ZeroMQ should in fact *improve* performance over raw TCP
in many use cases thanks to intelligent batching of queued messages.

Current approach is an early release of the library in order to gather
feedback. There is a large TODO list with a set of features that may be useful
for a big set of use cases like different authorization mechanisms including
certificate based, support of connection encryption, support for unreliable
connections, heartbeating and service discovery support. This features
will be implemented in short milestones.

While we believe network-transport-zmq to be useful in its own right,
it is only a stepping stone towards making the rich communication
patterns implemented in ZeroMQ available through distributed-process.
This will allow for writing ZeroMQ applications with all the power of the
Process monad, supervision hierarchies, powerful type based matching
abstractions and intuitive message sending primitives.

All feedback are appreciated. If you have a commercial interest around this
project then feel free to contact [2].

[1] http://zeromq.org/
[2] mailto:sales at tweag.io

--
Alexander Vershilov
  mail-to: alexander.vershilov at tweag.io


-- 
Alexander


More information about the Haskell-Cafe mailing list