我正在寻找一个合适的谷歌数据/存储选项,用作将原始 JSON 事件流式传输到的位置。
这些事件是由用户响应非常大的电子邮件广播而生成的,因此吞吐量可能在某一时刻非常低,在短时间内高达每秒约 25,000 个事件。这些事件的 JSON 表示每个可能只有 1kb 左右
我想简单地将这些事件存储为原始和未处理的 JSON 字符串,仅追加,并为插入的每条记录使用单独的顺序数字标识符。我计划使用此标识符作为消费应用程序能够按顺序处理流的一种方式(以类似于 Kafka 消费者通过流跟踪其偏移量的方式) - 这将允许我重播事件流从我选择的角度来看。
我正在利用 Google Cloud Logging 来聚合来自 Compute Engine 节点的事件流,从这里我可以直接流式传输到 BigQuery 表或 Pub/Sub 主题。
BigQuery 似乎不仅能够处理流式插入,但它似乎没有自动递增 id 列的概念,并且还表明它的查询模型最适合聚合查询而不是窄结果集。我查询下一个最高行的要求显然与此背道而驰。
我目前最好的想法是推入 Pub/Sub 并将每个事件写入 Cloud SQL 数据库。这样,如果 Cloud SQL 无法跟上,Pub/Sub 可以缓冲事件。我对自动标识符和可能的日期戳列的渴望使这感觉像是一个“表格”用例,因此我觉得 NoSQL 选项也可能不合适
如果有人有更好的建议,我很想得到一些意见。