The Scalar Select Anti-Pattern
a year ago
- #batch-processing
- #event-loop
- #optimization
- 文章讨论了带有事件循环的有状态服务中的'标量选择反模式'。
- 由于处理多个事件时的低效性,事件循环经常需要重构。
- LSP服务器中的三个主要事件源:文件修改、客户端请求和编译输出。
- '标量选择'方法会任意选取一个事件,当多个事件就绪时会导致额外开销。
- 优化手段包括优先级排序、选择性背压、事件消除和事件合并。
- 优先级排序建议按写入>读取>接受的顺序处理。
- 选择性背压允许在处理某些请求时忽略其他请求。
- 事件消除指根据后续事件丢弃冗余请求。
- 事件合并将多个相似事件整合为单次批处理。
- 解决方案是采用批处理方法,一次性处理所有可用事件以提高负载下的效率。
- 引入'batch_stream'函数来等待并处理所有可用事件,而非仅单个事件。