UNIX中两个进程之间通信的最佳方式:一个运行ruby服务器,另一个运行C++客户端

Best way to communicate between 2 processes in UNIX: One running a ruby server and other C++ client

本文关键字:运行 ruby 一个 服务器 另一个 客户端 C++ 最佳 两个 进程 之间      更新时间:2023-10-16

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

我计划使用一个UNIX套接字,客户端C++使用Boost-asio进行通信。但是,编写所有的异步连接处理程序让我想知道,如果发生连接故障或其他什么情况会怎样?我无法为每一种可能的情况都配备一个错误处理程序(我只是一个凡人)。

那么,你认为让这些流程安全地相互沟通的最佳方式是什么?

最终,无论发生什么,您都必须处理连接问题:您正在构建一个分布式系统,因此分布式计算的所有谬论都属于您。

不过,您可以通过使用一些为您封装了大量问题的东西来消除许多麻烦。当消息传输工具包在连接的两端使用时,它可以为您解决健壮通信方面的许多难题。

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

你可能还会发现,像Redis这样的外部队列解决方案或共享SQL数据库提供了好处——虽然你仍然必须面对连接问题,但你已经减少了需要解决的额外问题的数量。

不过,归根结底,你无法避免连接问题。任何事情都可能失败,无论多么强大。毕竟,Ruby服务器可能会因为Ruby中的错误或其他原因而崩溃,或者随时被管理性地停止-除了在同一过程中运行C++和Ruby代码之外,没有什么可以阻止这一点,所以你只需要处理它