0

我打算写一个 HTTP 服务器:

将有两个模块(L & P),都是可执行文件。

其中一个可执行文件 (L) 将侦听 HTTP 请求,并将其简单地转发给具有所有 HTTP 解析逻辑并执行进一步操作的其他可执行文件 (P)。可能有许多“P”,其连接信息/参数将为侦听器 L 所知。

想法是,如果其中一个 P 崩溃,其他可以使用等。此外,一个 P 可以运行以与 DB 的一个副本交互,而其他 P 与其他副本交互。

现在,我很困惑我是选择 L&Ps 组合还是只使用 L 来监听、recv、解析请求并做出响应。

In case I go for L&P combo there will be some overhead because of request forwarded from L to P and then response from P to L.

  • 对于每秒 100,000 次点击,是否可以忽略此开销?
4

1 回答 1

2

首先,所有现有的 Web 服务器有什么问题?为什么不为其中之一创建一个模块?

如果您想继续创建自己的(如果您想完全支持 HTTP 标准,这不是一项简单的任务):创建 HTTP 服务器和模块 (.so/.dll)。只需使用 try/catch 包装所有模块调用,以防止它们使您的服务器崩溃。

另一种方法是创建一个 http 解析器库,让所有 P 成为完整的 Web 服务器,并在它们前面放置一个代理/负载平衡器。通过这种方式,如果您的处理能力不足,您可以将任何 Ps 移动到新服务器。

于 2011-06-27T08:13:42.363 回答