API请求响应日志的数据存储

时间:2016-02-17 17:25:27

标签: mongodb storage

保留以下信息的最佳商店是什么

- Input HTTP Request Headers and JSON Payload received (before processing)
- Time of request
- Status (Authenticated, Validated, Processed etc)
- Response sent to caller (after processing)

总体而言,目标是在进行身份验证,验证和处理之前保留输入请求。它主要用于审计目的,但应允许从有效载荷中提取的某些字段的索引以及时间,状态等。另一种查询模式将是一些基于范围的时间查询,比如在过去10分钟内重放请求,因为它们不会被处理等

解决方案思考:由于输入有效负载可以持久化为blob或非结构化方式,因此我期待将其存储在MongoDB等文档存储中。考虑的另一个选择是存储在MySQL中,其中发送的整个有效负载和响应都存储为blob,除了需要搜索的几个字段。

参考:https://docs.mongodb.org/ecosystem/use-cases/storing-log-data/

PS:一些其他信息

  1. 有效载荷大小:每个请求响应应低于2KB
  2. 系统的QPS(非常低) - 高写低读系统
  3. 数据:它将是巨大的,因此可能需要分片商店

1 个答案:

答案 0 :(得分:-1)

我不建议使用Mongo或SQL这样的东西。对于时间序列数据,像Cassandra或ElasticSearch这样的东西将更容易设置集群,正确分片,保持一致的写入性能。