我有一个 EC2 实例,它有一个使用事件发射器来处理数据的数据流。例如
stream.on('new event', function doSomething(event){ do more stuff...})
这个数据流每秒可能有数万个事件,我想以有效的方式记录这些事件的处理。换句话说,我不愿意在每次有新事件出现时发送日志条目。
因此,我想我会批量发送日志。例如
let logArray = [];
function sendToLogs(logs) {\** send stuff *\}
stream.on('new event', function doSomething(event){
\\do some stuff
logArray.push({newLog: event})
if (logArray.length >= 500) {
sendToLogs(logArray)
logArray = [];
}
})
但是,我担心有这么多事件同时发生,上面的代码可能会导致不稳定的行为。我在本地日志记录中看到了这一点:这个数组的长度非常显着地跳跃,并且对于不同的事件可以同时具有相同的值。
此外,使用 cloudwatch 日志需要我在对日志记录函数的不同调用之间传递“sequenceTokens”。如果两个事件同时触发记录条件,事情可能会变得很奇怪。(即使我分别记录每个事件,这个问题也会存在。)
我应该如何处理这种数据流的日志记录?