我们正在开发基于 Kafka 的事件收集管道,该管道将通过 HTTP GET / POST 请求接受传入事件。它应该能够通过用户浏览器以及在 Nginx + PHP-FPM 上运行的 Web 服务器接收事件。根据需求的本质,该管道必须具有弹性,因此我们将在新加坡 AWS 进行部署,而我们的客户端服务 Web 服务器位于印度孟买的物理数据中心。我们不想因此而引入任何延迟,因此 PHP 应用程序应该只触发一个请求并忘记它,开始时即使约 5% 的请求丢失也是可以的。孟买和新加坡之间的往返时间约为 70 毫秒。我们可以使用哪些选项:-
- 超时时间约为 100 毫秒的 curl 或 fsockopen 请求——不可接受
- 使用Guzzle或curl-easy之类的库——它们在内部仅使用 curl,因此会再次引入延迟
- 将请求本地写入文件并使用像 Flume 或 Kafka 这样的总线进行传输——本质上我们将复制均匀的收集管道,增加硬件成本。
- 使用像 gearman 这样的工作队列——不是这方面的专家,所以不知道利弊。
- 阳光下的任何东西,都提供免费且低维护的服务。
请建议。