首页 > 其他分享 >Kafka

Kafka

时间:2024-12-13 16:20:59浏览次数:3  
标签:存储 分区 Broker Kafka Topic 消息

Apache Kafka 是一个分布式的流处理平台,主要用于实时数据流的发布、订阅、存储和处理。它具有高吞吐量、低延迟和分布式架构的特点,广泛应用于日志处理、消息队列、事件流处理等场景。

核心概念

  1. Broker
Kafka的运行实例,负责存储和处理消息。一个Kafka集群由多个Broker组成,每个Broker用唯一的broker.id标识。
  1. Topic
消息的分类或逻辑通道,数据按Topic存储
  • Partition:每个Topic被分为多个分区,提供并行处理能力
  • Replica:分区的副本,用于实现容错
  1. Producer
发送消息的客户端,可以将数据发布到指定的Topic和分区。
  1. Consumer
订阅Topic并消费信息的客户端,通过消费组(Consumer Group)协调并行消费。
  1. Zookeeper(或KRaft)
Kafka使用Zookeeper存储元数据和协调集群操作

工作流程

  • 生产消息
Producer 将消息写入指定的 Topic,Kafka 会根据分区策略选择分区存储。
  • 消息存储
Kafka 按分区顺序存储消息,同时通过配置保留策略(时间或大小)来管理历史数据。
  • 消息消费
Consumer 从 Topic 的分区中拉取数据。消费组内的消费者分配分区以确保每个分区仅被一个消费者读取。

特性

  • 高吞吐量和低延时
采用顺序写磁盘和页面缓存技术,提供高性能。
  • 持久化和容错
数据持久化到磁盘,通过副本机制实现高可用
  • 可扩展性
增加Broker或分区可以扩展集群容量和性能。
  • 灵活的消息消费模式
支持点对点和发布订阅模式。
  • 分布式架构
数据分布在多个分区和Broker中,支持分布式处理。

典型应用场景

  1. 日志采集与处理:收集各系统的日志并统一存储和处理
  2. 实时流数据处理:用于事件流或传感器数据的实时处理
  3. 消息队列:替代传统的消息队列(如:RabbitMQ、ActiveMQ),用于异步通信和解耦系统
  4. 数据管道:在多个系统间传输和同步数据

配置和部署建议

  • Broker配置
    • 增加num.partitionslog.retention.hours来平衡性能和存储需求
    • 配置副本数量replication.factor保证容错能力
  • Producer配置
    • 优化批量发送数据的参数,如batch.sizelinger.ms
  • Consumer配置
    • 设置合适的max.poll.records和session.timeout.ms,以适应消费速率
  • 集群监控
    • 使用Kafka提供的JMX指标,结合工具如Prometheus和Grafana,监控Broker、Topic和Consumer状态

常用命令

https://cloud.tencent.com/developer/article/1844234  

标签:存储,分区,Broker,Kafka,Topic,消息
From: https://www.cnblogs.com/wjwjs/p/18605220

相关文章

  • 四大主流消息队列 场景化选型指导:kafka、rocketmq、rabbitmq、pulsar
    探讨消息队列在软件开发中的应用与选择在日常的软件开发过程中,我们常常会遇到系统间的异步通信、流量削峰填谷、日志收集等需求。这时,消息队列就成为了解决这类问题的有效工具之一。比如,在电商平台中,当用户下单时,订单信息不仅需要立即保存到数据库中,还需要同步更新库存、生成物流......
  • 【python脚本】python读取csv文件发送数据到kafka,然后再从kafka消费到mysql中
    前置条件pipinstallpandasconfluent-kafkamysql-connector-pythonpymysql读取csv文件到kafkaimportpandasaspdfromconfluent_kafkaimportProducerimportjsonimportcsv#配置Kafka生产者#topic名称csv_topickafka_topic='csv_topic'kafka_broker=......
  • solon 集成 kafka-clientsP9
    使用kafka-clients原本是比较简单的事情。但有些同学习惯了spring-kafka后,对原始java接口会陌生些。会希望有个集成的示例。<dependency><groupId>org.apache.kafkagroupId><artifactId>kafka-clientsartifactId><version>${kafka.version}version>depende......
  • solon 集成 kafka-clients
    使用kafka-clients原本是比较简单的事情。但有些同学习惯了spring-kafka后,对原始java接口会陌生些。会希望有个集成的示例。<dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>${kafka.version}</version&g......
  • kafka的至少一次和精确一次
    Kafka的“至少一次”(AtLeastOnce)和“精确一次”(ExactlyOnce)是两种不同的消息传递语义,它们在确保消息传递的可靠性和准确性方面有不同的特点和实现方式。一、至少一次(AtLeastOnce)定义:“至少一次”传递语义意味着生产者发送到Kafka的消息会至少被传递一次到消费者。即使出......
  • Kafka的同步发送到broker
    Kafka的同步发送是Kafka消息传递机制中的一种重要方式,它确保了消息在发送过程中的可靠性和一致性。以下是对Kafka同步发送的详细解释:一、同步发送的定义在同步发送模式下,Kafka生产者发送完消息后会阻塞等待Kafka服务器的响应。生产者只有在收到Kafka服务器的响应后,才会进行下一......
  • Kafka的异步发送到broker
    Kafka的异步发送是Kafka消息传递机制中的另一种重要方式,与同步发送相比,它在保证一定消息可靠性的基础上,提供了更高的发送性能。以下是对Kafka异步发送的详细解释:一、异步发送的定义在异步发送模式下,Kafka生产者发送消息后不会立即等待服务器的确认响应,而是继续发送下一条消息或......
  • 请解释一下什么是Kafka的acks策略
    Kafka的acks(acknowledgements)策略是生产者(Producer)在发送消息到Kafka集群时,用于控制消息持久化和确认机制的重要配置。这个策略决定了生产者何时认为一条消息已经被成功发送。Kafka提供了三种acks策略,它们分别对应不同的可靠性和性能权衡:acks=0:在这种模式下,生产者不会等待任......
  • kafka的acks=1策略数据丢失的风险场景
    在Kafka中,当使用acks=1策略时,确实存在数据丢失的风险,尽管这种风险相对较低。以下是对acks=1策略下数据丢失情况的详细解释:一、acks=1策略概述acks=1(或acks=leader)表示生产者会等待Kafka集群中的主副本(Leader)确认消息已经被成功写入日志后,才认为这条消息已经被成功发送。这种策略......
  • 通过flinkSql将kafka和mysql连接
    kafkaToKafka{"user_id":"1","page_id":"1","status":"success"}{"user_id":"1","page_id":"1","status":"success"}{"user_id&q......