【发布时间】:2012-05-28 23:40:43
【问题描述】:
我在后端有一个带有 C++ API 的 RESTful Web 服务。我正在使用 FastCGI 库来促进 REST 接口。我的 C++ API 有多个可以独立使用的函数。我正在寻找一种尽可能快的方法。以下是我得到的一些想法:
拥有一个 FastCGI 应用程序来获取要执行的函数,执行该函数并返回输出。这样,API 调用会一直等待,直到一个“函数”完成,即使下一次调用是针对不同的独立函数。
拥有多个 FastCGI 应用程序,每个应用程序只能从 API 访问一个函数,每个应用程序都获取该特定应用程序的输入并单独返回该特定应用程序的输出。
通过这种方式,我可以同时调用所有不同的函数,并为我拥有的每个函数创建单独的进程队列,而不是为 FastCGI 应用程序提供一个由对不同独立函数的调用组成的通用进程队列。
虽然这看起来会更好,但我不确定是否可以实现这样的系统 - 即在同一台服务器上并行运行许多 FastCGI 应用程序。如果可能的话,有人可以告诉我如何实现吗?
【问题讨论】:
-
与一个 FCGI 应用程序的方式相同...?我不确定你认为哪里有问题。
-
我担心环境变量。我不确定是否会因为多个应用程序并行运行而发生冲突,每个应用程序都有自己的环境变量。
-
CGI 和 FCGI 截然不同。 FCGI 不通过环境变量进行通信。对于 CGI,每个进程都有自己的环境。
-
另外,即使 API 中的“函数”相互独立,它们都共享公共头文件并从公共数据库中读取。我也担心这是否会成为问题。
-
不,不是问题。共享头文件是完全无害的;如果您使用的是半生不熟的本土数据库,那么访问同一个数据库可能会出现问题;但是所有常用的数据库引擎都将具有多个连接的设施作为主要目标之一。