C++ 从C到Erlang的高性能消息传递
我有一个C服务器(一个数据提要处理程序),它有可能在几千个长寿命的Erlang进程中每秒发送数百万条小消息。在一天之内,其中一些进程将收到几千条消息,而另一些进程将收到数千万条消息。我的兴趣有三方面:C++ 从C到Erlang的高性能消息传递,c++,c,erlang,C++,C,Erlang,我有一个C服务器(一个数据提要处理程序),它有可能在几千个长寿命的Erlang进程中每秒发送数百万条小消息。在一天之内,其中一些进程将收到几千条消息,而另一些进程将收到数千万条消息。我的兴趣有三方面: 最小化延迟—缩短从C服务器发送消息到Erlang进程接收消息的时间长度。在发送消息之前或接收消息之后发生的事情上可以做很多工作,但是这个问题是关于C和Erlang之间的链接 最大化吞吐量-越快越好;如果C服务器能够在所有Erlang进程中每秒多发送10%的消息,那将是一个巨大的胜利 为了最大限度地
您可能需要一个更轻量级的解决方案,但由于有一个消息中间件组件已经用Erlang编写并实现,所以应该可以很容易地试用并查看它的运行情况…我建议您反转您的系统,将您的C代码作为驱动程序中的链接嵌入Erlang VM。我想这是如何以可管理的方式实现最快的解决方案。Erlang进程和C服务器是否在同一台机器上运行?
@caf:
C服务器不一定与任何Erlang节点在同一台机器上,而且它肯定不像它们那样分布。它是外部数据提供者和Erlang系统之间的中间人,就像这样:(外部数据源)->(C-server)->(Erlang系统)
。如果您想要最小化延迟和最大性能,RabbitMQ不是您的人。RabbitMQ是具有丰富路由、配置和持久性支持队列的通用消息系统。通过专门的优化解决方案,您可以在数量级上击败它,但您必须投入更多数量级的时间来实现和调试。它通常用于非持久性模式,我说过“您可能需要更轻的解决方案”。。。