我目前正参与使用分布式计算来检测不同事件的软件开发。
当前的方法是:在不同(物理)计算机上同时运行十几个线程。每个事件都分配一个号码;并且每个线程将其检测到的事件广播到另一个线程,并从传入流中过滤相关事件。
我觉得非常糟糕,因为它看起来很糟糕,难以维护,并且在升级系统时可能会导致性能问题。
所以我正在寻找一种灵活而优雅的方式来处理这个IPC,我认为Boost :: Signals似乎是一个很好的候选者;但我从未使用它,我想知道是否有可能为网络通信提供封装。
答案 0 :(得分:1)
由于我不知道任何可以做到这一点的解决方案,除了Open MPI之外,如果我必须这样做,我会首先使用Google's Protocol Buffer作为我的消息容器。有了它,我可以创建一个抽象的基本消息,其中包含source,dest,type,id等等。然后,我会使用Boost ASIO在网络上分发这些消息,或者通过命名PIPE / loopback分发本地消息消息。也许,在每台物理计算机中,专用流程可以仅用于分发。每个线程都向它注册它感兴趣的消息类型,以及它的命名管道。这个过程将知道所有其他服务的IP。
答案 1 :(得分:0)
如果您需要通过网络进行IPC,那么boost :: signals将无法帮助您,至少不是完全靠自己。
您可以尝试使用Open MPI。