-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Basics: Abstract the transport layer so that TCP could be replaced with RDMA or something else #5
Comments
I'm thinking of dumping zmq because I can't seem to make a pattern that works correctly for what we're trying to achieve. Basically what needs to happen is something like:
We could play around with who takes the brunt of the operation penalty ( the client or the server ) but the problem still remains. ZeroMQ just doesn't have a way to create that kind of scatter/gather pattern. It also seems relatively expensive to start up sockets in zmq. I investigated nanomsg. While it looks better in some ways it also suffers from some scaling problems. Nanomsg-ng was created to fix some of those shortcomings but I'm reading bad error reports about latency and slowness . |
@cholcombe973 I've no experience with 0MQ, but it seems like it should be able to support the behaviour you are describing. For instance, if each client (ZMQ_CLIENT) connects to the various servers (ZMQ_SERVERS) won't that give you exactly the behaviour you describe? If you are concerned about performance (and that's a legitimate concern) we need to dig into that. What do you mean by "start up" sockets? Are you talking about the time to bind/connect? If so, that shouldn't be a concern as it will only be a rare occurrence in terms of the overall lifetime of the sockets. If you mean, it takes some time before data is transmitted after zmq_send(), then that is more of a concern and would require some investigation. Let's try and catch up in IRC sometime soon and we can go into this in more detail. |
I thought the same thing but ZMQ has different behavior when you connect it to multiple servers. It starts a round robin for the packets. While that's nice for load balancing it's not exactly the behavior we're after. |
The current transport layer uses ZeroMQ to shuttle data back and forth. It's currently hard coded to use tcp but it could be swapped out for udp or in_proc. It's not abstract enough however to be useful for RDMA or iscsi.
The text was updated successfully, but these errors were encountered: