近期在生产环境发下日志入库延迟,导致很多准实时的监控图表获取不到信息,这问题以前没有出现过,可能跟最近业务量上升有关,毕竟日均小两亿的平台了。梳理系统架构发现,日志是缓存在kafka中,由一个后台进程task从kafka中消费,存放到数据库中的,日志入库延迟,跟task关系很大。由于之前对kafka了解很少,以此为契机进行下学习,并以此博客为记录,温故知新。
什么是Kafka呢?
官方说kafka是一个高吞吐量的分布式发布订阅消息系统。它有很多术语,比如producer,consumer,broker,如下简单解释下。
Producer:消息的生产者,向kafka发送消息的客户端
Consumer:消息的消费者,从kafka接取消息的客户端
Broker:kafka集群中的单个实例
Group:特指consumer group,多个consumer可以组成一个组,每个消息只能被组中的一个consumer消费,如果一个消息可以被多个consumer消费的话,那么这些consumer必须在不同的组,这个特性很重要
Topic:kafka主题,一个Topic可以认为是一类消息
Partition:分区,一个topic又可以分成多个分区,一个分区的消息只能被组内一个consumer消费
Offset:偏移量,offset为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息,我把他理解成游标卡尺的游标,标记消息的位置
接着我们来看一个简单的kafka系统结构: