ZeroMQ的可扩展性如何?我特别感兴趣的是了解它在大量(10,000 - 15,000)内核上运行的潜力。
答案 0 :(得分:10)
您没有提到您的10k或15k核心是否在同一个盒子上。
我们假设他们是。每两年,一个盒子上的核心数量理论上可以翻倍。因此,如果我们今天拥有16核盒子,它将在20年内成为16K核心。
所以现在,你的问题可能是,“ZeroMQ能否帮助我的应用程序扩展到如此庞大的内核数量,以便它能在未来20多年内扩展?”答案是“是的,但只有你正确使用它”。这意味着使用inproc套接字和模式来设计应用程序,这些套接字和模式可以正确划分工作和数据流。您需要随着时间的推移调整架构。
如果您的问题是“我可以在多个应用程序之间使用那么多内核”,那么答案就在于您的O / S超过ZeroMQ。您的I / O层可以处理负载吗?可能,是的。
如果您的问题是“我可以在10K-16K盒子的云中使用ZeroMQ”,那么答案是“是的,这已经在实践中证明了。”
答案 1 :(得分:9)
我们试图尽可能地扩展它,但我个人只测试了多达16个核心盒。在达到极限时,我们已经看到几乎线性缩放。
答案 2 :(得分:5)
请注意,尽管ZeroMQ在内部是多线程的,但仅依靠它来将其扩展到大量内核可能并不明智。但是,由于ZeroMQ使用相同的API进行机器间,进程间和线程间通信,因此使用ZeroMQ编写应用程序很容易,可以无缝地移动到每个进程的单进程场景或者进入网格结构很多很多机器。
ZeroMQ已经因其成为最快的结构化消息传递协议而享有盛誉,因此,如果你要做基准选择技术,ZeroMQ绝对应该是其中之一。
使用ZeroMQ的两个主要原因是其易于使用的跨语言API(参见ZeroMQ指南网站上的所有示例)及其在线路上的字节数和延迟方面的低开销。例如,ZeroMQ可以利用UDP多播比任何TCP协议运行得更快,但应用程序员不需要学习新的API。它都包括在内。