设置
我设置了一个简单的 Nginx 服务器,它以 JSON 格式记录日志,然后使用 Apache Flume 将其传输到 S3 存储桶。Nginx 服务器所做的就是使用网络信标跟踪像素进行响应并写入日志文件。到目前为止一切都很顺利。
问题
但是,如果能在管道的这个级别处理其他几个处理步骤就更好了:
- 将查询字符串参数转换为事件记录中的实际 JSON
- 设置 UUID cookie 以进行跟踪
- 增加本地数据库中的某些计数器(最终所有数据都将通过 Map/Reduce 进行处理)
看来我需要一个自定义 Flume 接收器来转换查询字符串参数,以及一个后端到 nginx 来设置 cookie 和更新数据库。在这里使用多个系统似乎非常低效,尤其是在优化每秒数百个请求的吞吐量时。
可能的解决方案
我的第一个想法是使用 NodeJS,它可以处理所有这些任务(甚至可以替代 nginx?),但我不喜欢它是单线程的(也许会产生子工作者?)。
然后我想也许处理应该发生在 Flume 代理级别,并且 Java 程序可以处理一切(由于 Flume 是用 Java 编写的,所以这里有任何性能优势吗?)
问题
- 我是否以正确的方式处理此事,或者我是否想得太多了?
- 您建议如何将所有内容整合为一个或两个流程?