TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

ZeroMQ: Modern & Fast Networking Stack

128 pointsby igrigorikover 14 years ago

7 comments

ekiddover 14 years ago
I've played with ZeroMQ on some small projects, and I've been quite impressed by it. Basically, ZeroMQ was designed to send millions of small, mostly-asynchronous messages at extremely high speeds. If you feed it messages very rapidly, it sends the first message immediately, and queues the rest in userspace until (IIRC) the network card is ready to transmit another packet. Then it sends all the queued messages as a batch. So you get both high throughput and low latency.<p>There's some built-in support for common topologies (client/server, publish/subscribe, pipeline), and if you're willing to use the undocumented XREQ/XREP socket types, you can build more exotic topologies.<p>Most of the value in ZeroMQ is the actual C++ implementation, so other languages generally just wrap the C++ code. The zeromq API is tiny.<p>I haven't used it on a big production project yet, but I hope to do that soon.
评论 #1662986 未加载
评论 #1661592 未加载
mleonhardover 14 years ago
It looks like there's still no way for applications to detect when ZeroMQ encounters common networking problems. If my application can't differentiate between "no response received" and "network error", I'll end up re-implementing timeouts and error detection logic in the application protocol. In most situations that's a waste of time and adds extra weight to the system. No thanks.
评论 #1664897 未加载
评论 #1664080 未加载
mahmudover 14 years ago
ZeroMQ is quickly becoming an even bigger hammer in the premature optimization planet of Newbo-Thumbia.<p>Edit:<p>1) It's a networking <i>library</i>; no admin tools or other soft handle-bars, like user-space utilities.<p>2) It uses a binary protocol. Good luck debugging that with syslog.<p>It's a very powerful tool in the hands of a capable systems architect, who actually needs it. For the rest, it's pretty much like an adult male tiger; excellent to watch in its natural habitat from a safe distance, terrible pet idea for you and your fiancee (and not because you live in a studio apartment.)
评论 #1662215 未加载
评论 #1660901 未加载
评论 #1662220 未加载
epsover 14 years ago
Yup. I'm sure every network programmer who's worth his salt has a version of stackable abstraction layers library that runs of epoll or a variation thereof, and supports various transports from plain IP through domain sockets and to exotics like TLS over ICMP. It's like a rite of passage into the circle of network programming enlightenment :)
评论 #1660935 未加载
评论 #1660659 未加载
j_bakerover 14 years ago
"Wouldn't it be nice if we could abstract some of the low-level details of different socket types, connection handling, framing, or even routing?"<p>Perhaps I'm missing something, but wouldn't this make ZeroMQ a Modern &#38; Fast <i>abstraction</i> of a Networking Stack?
评论 #1664924 未加载
aaronblohowiakover 14 years ago
This is yet another well-written post.. i think Ilya has that rare talent for accurate and engaging technical writing. I'm consistently pleased with his work. Thanks.
simplegeekover 14 years ago
Good article. Please consider changing the font-type and increasing the font-size.
评论 #1661352 未加载