采集缓冲区
当各种各样的日志采集到了之后会进行最初步的处理之后发往我们的集中归一化处理区域,归一化处理的主要算法为字符串提取算法,故而主要为计算密集型的任务,需要我们堆大量的算力,为了减缓集中归一化处理区域的处理压力,我们可以在这个模块的前面增加一个用于削峰填谷的消息队列。
当日志EPS (Events Per Second) 过高时,引入一个消息队列作为缓冲区来处理峰值负载是一个常见的做法。这样可以平滑处理突发的高日志流量,避免过载和性能问题。如Kafka、RabbitMQ等。日志采集器发送数据到消息队列,而归一化处理模块从队列中获取数据进行处理。消息队列作为缓冲区,可以处理突发的高日志流量。
采用消息队列的好处
这种架构的好处包括:
- 削峰填谷:消息队列可以帮助平滑处理突发的高日志流量,避免对下游处理模块造成过载。
- 解耦:通过引入消息队列,各个模块之间可以解耦,使得系统更加灵活和可扩展。
- 缓冲和重试:消息队列可以作为缓冲区,确保即使下游处理模块出现故障或暂时不可用,数据也不会丢失,可以在后续进行重试。
当日志EPS过高时,消息队列将充当一个缓冲器,暂时存储日志数据,直到归一化处理模块有足够的处理能力来处理这些数据。这有助于保护系统免受过载的影响,并确保高效处理日志数据。
这里推荐使用kafka
,在我们前面提到的采集场景中,使用到了ELK生态中的几个开源采集器,采集文本日志的filebe