7

ZeroC ICE 与 0MQ 相比如何?我知道 0MQ/Crossroads 和 DDS 非常相似,但似乎无法弄清楚 ICE 的来源。

作为我项目的第一阶段,我需要快速实现一个将实时市场数据从 C++ 卸载到 C# 的系统。下一阶段将是使用底层 Pub/Sub 设计实现基于事件的架构。

我愿意使用 TCP .. 但系统当前在单个 24 核服务器上运行.. 所以 IPC 选项会很好。据我了解,ICE 只是 TCP,而 DDS 和 0mq 有 IPC 选项。

目前,我倾向于将 Protobuf 与 ICE 或 Crossroads IO 一起使用。从 OpenSplice DDS 网站关闭。我对各种选项进行了大量研究,最初是考虑 OpenMPI + boost:mpi,但似乎没有用于 .NET 的 MPI。

我的问题是:

ICE 与 0MQ 相比如何?我无法解决这个问题。无法在网上找到任何可以比较两者的东西。

提前致谢。

...........更多关于我的项目:

目前在 Windows 上使用 CMAKE C++,但计划在某个时候迁移到 CentOS。另一个需要的功能是将 tic 数据和所有消息存储在“NoSql”数据库中,例如 Hbase/Hadoop 或 HDF5。这些中间件/消息传递/发布-订阅库中是否有任何数据库集成?

4

4 回答 4

8

关于 ZeroC 的一些想法: 非常快;能够有多个端点;能够在端点上进行负载平衡;能够在其中一个节点出现故障时重新连接到不同的端点。这对最终用户是透明的;拥有良好的工具链(IceGrid、IceStorm、IceBox 等);分布式、高可用、多故障转移等

除此之外,我将它用于热交换代码模块(类似于 Erlang),让客户端创建具有多个端点的代理,然后关闭每个端点以逐个快速升级。通过对不同端点的透明重试,我可以在我进行升级的整个过程中启动并运行系统。不确定这是广告功能还是未广告的副作用:)

总的来说,如果需要使用 ZeroC Ice,可以很容易地扩展您的服务器。

我知道 ZeroMQ 提供了一套很棒的工具和消息传递模式,我会继续在我的宠物项目中使用它。但是,我看到的问题是,很容易过火而忘记所有分布式组件。这是分布式环境中必须具备的。当您需要升级时,您如何知道您的客户端/服务器在哪里?如果下游的组件之一没有收到消息,如何确定问题出在哪里?出版商?客户端?还是介于两者之间的任何一座桥(REP/REQ、XREP/XREQ 等)?

总体而言,ZeroC 为企业解决方案提供了更好的工具集和生态系统。

它是开源的:)

于 2013-01-30T11:04:32.090 回答
7

杰布尼,

ZMQ:如果您想要真正的良好性能,并且您工作第一阶段的唯一工作是将数据从 C++ 移动到 C#,那么 Zmq 是最佳选择。Zmq 可以通过其内置的消息传递模式为您提供事件驱动架构的发布/订阅模型。在这种情况下,Zmq 还支持您的 IPC 要求。例如:您可以拥有一个应用程序实例,该实例通过多线程和 IPC 通信消耗 24 个内核。

ZeroC Ice:Ice 是一个非常类似于 CORBA 的 RPC 框架。

例如。Socket/ZMQ - 你通过网络发送消息。在另一端阅读它,解析消息,执行一些操作等。 ZeroC Ice - 在客户端和服务器之间创建一个合同。契约只不过是一个类的模板。现在客户端调用该类的代理方法,服务器实现/操作它并返回值。因此, int result = mathClass.Add(10,20) 是客户端调用的。方法、参数等被编组并发送给服务器,服务器实现Add方法,返回结果,客户端得到30作为结果。因此,在客户端,api 只不过是运行在远程主机上的服务的代理。

结论:ZeroC ICE 有一些非常好的企业特性。但是,对于您的项目要求,ZMQ 是正确的工具。

希望这可以帮助。

于 2012-08-30T06:55:47.190 回答
1

对我来说.. 正确答案是 Crossroads I/O 。它可以满足我的一切需求……但在使用 protobufs 时仍然无法发布/订阅……我确信 ZeroC ICE 非常适合分布式 IPC,但 0MQ/Crossroads 为您提供了使用线程间通信的额外灵活性。

注意:在 windows 上,0mq 没有 IPC。

所以,总而言之,0mq的十字路口叉子是最好的。但是您必须推出自己的 windows/ipc(或使用 tcp::127..),以及 pub/sub 的发布方主题过滤功能。

于 2012-10-23T21:54:36.243 回答
1

nanomsg,来自编写 crossroads 和 0mq 的人(我认为)。

http://nanomsg.org/

于 2014-04-16T07:08:40.907 回答