c++ - UNIX : One running a ruby server and other C++ client 中 2 个进程之间通信的最佳方式

标签 c++ ruby ipc

我需要我的 C++ 客户端代码与运行在同一个盒子上的 ruby​​ 服务器代码进行通信。我想有多种方法可以做到这一点,我正在寻找的可能是最安全和最简单的方法。

我计划将 UNIX 套接字与使用 Boost asio 的客户端 C++ 进行通信。但是编写所有异步连接处理程序让我想知道,如果出现连接失败或其他情况怎么办?为每一种可能的情况都有一个错误处理程序超出了我的范围(我只是凡人)。

那么,您认为让这些进程安全地相互通信的最佳方式是什么?

最佳答案

最终,无论如何你都将不得不处理连接问题:你正在构建一个分布式系统,所以所有Fallacies of Distributed Computing是你的享受。

但是,您可以通过使用为您封装大量问题的东西来消除很多麻烦。消息传输工具包在连接的两端使用时,可以为您解决与稳健通信相关的许多令人头疼的问题。

0mq是一个相当轻便的工具包,它在套接字上添加了一个强大的框架和传输机制,所以如果双方都可以使用这些工具,您将获得可观的 yield 。

您可能还会发现外部队列解决方案(如 Redis)或共享 SQL 数据库会带来好处 - 虽然您仍然需要面对连接问题,但您已经减少了需要解决的额外问题的数量。

不过,最终还是无法避免连接问题。一切都可能失败,无论多么稳健。毕竟,Ruby 服务器可能会由于 Ruby 中的错误或其他原因而崩溃,或者随时被管理性停止——如果不能在同一进程中运行 C++ 和 Ruby 代码,没有什么可以阻止这种情况,所以你只需要处理与它。

关于c++ - UNIX : One running a ruby server and other C++ client 中 2 个进程之间通信的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9548900/

相关文章:

c++ - 是否可以用 C++ 编写敏捷的 Pimpl?

使用 libxml2 解析 xml 文件时 UNIX 中的 C++

c++ - 如何将字符串中的整数保存到数组中的元素

python - 在 gunicorn 进程中共享一个 numpy 数组

c++ - Qt 5.9 中的 QML 崩溃 - 帮助读取堆栈跟踪

ruby-on-rails - Rails new 给出 "Could not find proper version of railties (4.2.5.1) in any of the sources"错误

ruby-on-rails - 您推荐哪个 RVM 和 Ruby 版本?

ruby - 如何对数组中最大的两个元素求和

c - 有没有一种方法可以在 POSIX 中自动增加一个信号量并减少另一个信号量?

javascript - Electron 渲染器中的IPC从缺少的函数__dirname引发错误