博客
关于我
Kafka的那些事
阅读量:494 次
发布时间:2019-03-07

本文共 1432 字,大约阅读时间需要 4 分钟。

Kafka基础知识点梳理

什么是Kafka?

Kafka是一个开源的分布式流计算平台,主要作为一个高效的消息系统和持久化日志系统。其核心功能包括可靠的消息传递、数据持久化、流量削峰以及高吞吐量等。

Kafka的体系结构

Kafka的主要架构基于主题(Topic)和分区(Partition)的划分机制。一个主题可以拥有多个分区,每个分区又可以配置多个副本。分区是消息存储和读取的基本单位,副本用于提高系统的可用性和可靠性。

Kafka的主要特点

  • 高吞吐量低延迟:Kafka通过批量写入和零拷贝技术,实现了高效的数据传输。
  • 可靠性:通过设置合适的副本数量和容错机制,确保消息的高可用性。
  • 持久化:消息被写入磁盘,避免了消息丢失。
  • 扩展性:能够支持大规模的同时读写操作。
  • Kafka的核心功能

    消息系统

    Kafka支持两种消息传递模式:

  • 点对点(Point-to-Point):生产者发送消息到特定的主题队列,仅有一个消费者接收消息。
  • 发布-订阅(Publish-Subscribe):生产者发布消息至主题后,所有订阅该主题的消费者都能接收到消息副本, 具备广播功能。
  • 存储系统

    Kafka将消息持久化到磁盘,根据不同的保留策略,可以灵活管理数据存续时间。此外,通过多副本机制,确保数据的高可用性。

    流式处理平台

    Kafka为用户提供了完整的流处理功能,支持窗口操作、数据聚合等高级功能。

    Kafka的高吞吐量特性

    Kafka的高吞吐量得益于以下几个方面:

    • 快速磁盘写入:采用追加式写入,避免了随机读写操作。
    • 零拷贝技术:数据在传输过程中直接在内核空间完成预留。
    • 缓存机制:消息采用内存缓存,降低了数据读写的开销。

    Kafka的生产者

    生产者功能

  • 消息创建:生产者负责生成消息,并附加相关元数据。
  • 主题选择:消息会被写入特定的主题中。
  • 生产者的重要参数

    • acks:消息传输确认机制。
    • bootstrap.servers:Kafka集群地址配置。
    • key.serializer和value.serializer:消息键值的序列化器配置。
    • batch.size:批量发送的大小限制。
    • linger.ms:批量发送的延迟控制。
    • max.request.size:单次消息大小限制。

    Kafka的消费者

    消费位移管理

    • offset:消息消费后的位移存储在topic_consumer_offsets中。
    • enable.auto.commit:自动提交位移开关。
    • auto.commit.interval.ms:自动提交的间隔时间配置。
    • auto.offset.reset:消费起始位置的控制策略。

    消费线程

    • 消费模型:建议每个消费线程对应一个分区。
    • 分区重分配:消费者组内的消费者根据定期策略分配新的分区。

    Kafka的其他特性

    与传统消息系统的区别

    • 消息保留:支持消息长时间存储。
    • 高容错性:通过副本机制保障系统的高可用性。

    Kafka的优缺点总结

    优点

    • 高吞吐量:每分钟百万级的消息处理能力。
    • 低延迟:快速的消息生产和消费。
    • 可靠性:多副本机制保障数据可读性。
    • 扩展性:能够支持大规模的集群部署。

    缺点

    • 复杂度:分区、副本、消费组等概念带来一定的使用难度。
    • 弹性消费:需要合理配置消费线程和分区划分策略。

    Kafka实战中的注意事项

    • 消费位移管理:正确配置位移提交策略。
    • 性能调优:优化生产消费者组的配置参数。
    • 消息顺序性:基于分区保证内部消息顺序,不控制主题间消息顺序。

    转载地址:http://euacz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现字符串加解密(附完整源码)
    查看>>
    Objective-C实现字符串反转(附完整源码)
    查看>>
    Objective-C实现字符串复制功能(附完整源码)
    查看>>
    Objective-C实现字符串是否回文Palindrome算法 (附完整源码)
    查看>>
    Objective-C实现字符串查找子串(附完整源码)
    查看>>
    Objective-C实现完整的ComplexNumber复数类(附完整源码)
    查看>>
    Objective-C实现实现rabin karp算法(附完整源码)
    查看>>
    Objective-C实现对图像进行色调处理算法(附完整源码)
    查看>>
    Objective-C实现对称矩阵压缩存储(附完整源码)
    查看>>
    Objective-C实现寻找欧拉路径/回路(附完整源码)
    查看>>
    Objective-C实现导弹跟踪算法(附完整源码)
    查看>>
    Objective-C实现将 base64 字符串转换为字节数组算法(附完整源码)
    查看>>
    Objective-C实现将位转换为浮点数bitsToFloat算法(附完整源码)
    查看>>
    Objective-C实现将列表向右旋转 k 个位置算法(附完整源码)
    查看>>
    Objective-C实现将字符串中大写字母转换为小写字母(附完整源码)
    查看>>
    Objective-C实现将字符串从一个基转换为另一个基算法(附完整源码)
    查看>>
    Objective-C实现将字节数组转换为 base64 编码算法(附完整源码)
    查看>>
    Objective-C实现将彩色图像转换为负片算法(附完整源码)
    查看>>
    Objective-C实现将无符号整数n变成成d进制表示的字符串s(附完整源码)
    查看>>
    Objective-C实现将给定的 utf-8 字符串编码为 base-16算法(附完整源码)
    查看>>