UNIX中两个进程之间通信的最佳方式:一个运行ruby服务器,另一个运行C++客户端
Best way to communicate between 2 processes in UNIX: One running a ruby server and other C++ client
我需要我的C++客户端代码与运行在同一个盒子上的ruby服务器代码通信。我想有多种方法可以做到这一点,我正在寻找最安全、最简单的方法。
我计划使用一个UNIX套接字,客户端C++使用Boost-asio进行通信。但是,编写所有的异步连接处理程序让我想知道,如果发生连接故障或其他什么情况会怎样?我无法为每一种可能的情况都配备一个错误处理程序(我只是一个凡人)。
那么,你认为让这些流程安全地相互沟通的最佳方式是什么?
最终,无论发生什么,您都必须处理连接问题:您正在构建一个分布式系统,因此分布式计算的所有谬论都属于您。
不过,您可以通过使用一些为您封装了大量问题的东西来消除许多麻烦。当消息传输工具包在连接的两端使用时,它可以为您解决健壮通信方面的许多难题。
0mq是一个相当轻的工具包,它在套接字上添加了一个强大的框架和传输机制,因此如果双方都可以使用这些工具,您将获得巨大的好处。
你可能还会发现,像Redis这样的外部队列解决方案或共享SQL数据库提供了好处——虽然你仍然必须面对连接问题,但你已经减少了需要解决的额外问题的数量。
不过,归根结底,你无法避免连接问题。任何事情都可能失败,无论多么强大。毕竟,Ruby服务器可能会因为Ruby中的错误或其他原因而崩溃,或者随时被管理性地停止-除了在同一过程中运行C++和Ruby代码之外,没有什么可以阻止这一点,所以你只需要处理它
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 递归列出所有目录中的C++与Python与Ruby的性能
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 用 rice/ruby 包裹的纯虚拟 C++ 类在运行时引发 TypeError ( "is not a class (Module)" )
- 使用SWIG 2.0.4和Ruby 1.9.2来运行SWIG类示例
- UNIX中两个进程之间通信的最佳方式:一个运行ruby服务器,另一个运行C++客户端