摘要: 日志存储结构 Kafka存储结构图: kafka 中消息是以主题 topic 为基本单位进行归类的,这里的 topic 是逻辑上的概念,实际上在磁盘存储是根据分区存储的,每个主题可以分为多个分区、分区的数量可以在主题创建的时候进行指定。例如下面 kafka 命令创建了一个 topic 为 test 阅读全文
posted @ 2022-11-24 17:05 hongdada 阅读(2350) 评论(0) 推荐(0)
摘要: Producer: block.on.buffer.full = true 尽管该参数在0.9.0.0已经被标记为“deprecated”,但鉴于它的含义非常直观,所以这里还是显式设置它为true,使得producer将一直等待缓冲区直至其变为可用。否则如果producer生产速度过快耗尽了缓冲区, 阅读全文
posted @ 2022-11-24 16:21 hongdada 阅读(140) 评论(0) 推荐(0)
摘要: 延时队列 在发送延时消息的时候并不是先投递到要发送的真实主题(real_topic)中,而是先投递到一些 Kafka 内部的主题(delay_topic)中,这些内部主题对用户不可见, 然后通过一个自定义的服务拉取这些内部主题中的消息,并将满足条件的消息再投递到要发送的真实的主题中,消费者所订阅的还 阅读全文
posted @ 2022-11-24 15:44 hongdada 阅读(3682) 评论(0) 推荐(0)
摘要: Kafka 分区分配策略 生产者发送消息分区分配策略 kafka 里的 partitioner (分区器)来负责客户端生产层面的负载均衡。 如果指定分区,就直接使用该分区。 未指定分区但存在key,则根据序列化key使用murmur2哈希算法对分区数取模 如果不存在分区或key,则会使用粘性分区策略 阅读全文
posted @ 2022-11-24 11:05 hongdada 阅读(2265) 评论(0) 推荐(0)
摘要: Kafka 相关配置参数 生产者配置参数: acks:指定了必须有多少个分区副本收到消息,生产者才会认为消息写入是成功的。默认为acks=1 acks=0 如果设置为 0,则 Producer 不会等待服务器的反馈。该消息会被立刻添加到 socket buffer 中并认为已经发送完成。在这种情况下 阅读全文
posted @ 2022-11-24 09:52 hongdada 阅读(5154) 评论(0) 推荐(1)