-1

我们正在开发基于 Kafka 的事件收集管道,该管道将通过 HTTP GET / POST 请求接受传入事件。它应该能够通过用户浏览器以及在 Nginx + PHP-FPM 上运行的 Web 服务器接收事件。根据需求的本质,该管道必须具有弹性,因此我们将在新加坡 AWS 进行部署,而我们的客户端服务 Web 服务器位于印度孟买的物理数据中心。我们不想因此而引入任何延迟,因此 PHP 应用程序应该只触发一个请求并忘记它,开始时即使约 5% 的请求丢失也是可以的。孟买和新加坡之间的往返时间约为 70 毫秒。我们可以使用哪些选项:-

  • 超时时间约为 100 毫秒的 curl 或 fsockopen 请求——不可接受
  • 使用Guzzlecurl-easy之类的库——它们在内部仅使用 curl,因此会再次引入延迟
  • 将请求本地写入文件并使用像 Flume 或 Kafka 这样的总线进行传输——本质上我们将复制均匀的收集管道,增加硬件成本。
  • 使用像 gearman 这样的工作队列——不是这方面的专家,所以不知道利弊。
  • 阳光下的任何东西,都提供免费且低维护的服务。

请建议。

4

1 回答 1

0

我会使用作业队列系统,即使它引入了另一层复杂性。它是在 PHP 中异步处理事情的最简单方法之一,并且保证几乎不需要同步处理器时间。

您可以使用 Gearman 或ZeroMQ。它们在 PHP 中都得到了很好的支持。

于 2013-02-19T14:52:45.740 回答