欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

最佳实践|从生产者到消费者,如何有效监控Kafka-什么是Kafka?

最编程 2024-03-06 11:24:12
...


Kafka 起源


Kafka 是由 Linkedin 公司开发,并捐赠给 Apache 软件基金会的分布式发布订阅消息系统,Kafka 的目的是通过 Hadoop 的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。


网络异常,图片无法展示
|

网络异常,图片无法展示
|

Kafka 的诞生是为了解决 Linkedin 的数据管道问题,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。起初 Linkedin 采用 ActiveMQ 进行数据交换,但当时的 ActiveMQ 无法满足 Linkedin 对数据传递系统的要求,经常出现消息阻塞或者服务无法正常访问等问题。Linkedin 决定研发自己的消息队列,Linkedin 时任首席架构师 Jay Kreps 便开始组建团队进行消息队列的研发。


Kafka 特性


相较于其他消息队列产品,Kafka 存在以下特性:


  • 持久性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
  • 高吞吐:Kafka 每秒可以处理百万条消息;
  • 可扩展:Kafka 集群支持热扩展;
  • 容错性:允许集群中节点失败(若副本数量为 n,则允许 n-1 个节点失败);
  • 高并发:支持数千个客户端同时读写。


与此同时,区别于其他消息队列产品,Kafka 不使用 AMQP 或任何其他预先存在的协议进行通信,使用基于 TCP 的自定义二进制协议。并具有强大的排序语义和持久性保证。


Kafka 应用场景


基于以上的特性,Kafka 通过实时的处理大量数据以满足各种需求场景:


  • 大数据领域:如网站行为分析、日志聚合、应用监控、流式数据处理、在线和离线数据分析等领域。
  • 数据集成:将消息导入 ODPS、OSS、RDS、Hadoop、HBase 等离线数据仓库。
  • 流计算集成:与 StreamComput e、E-MapReduce、Spark、Storm 等流计算引擎集成。


Kafka 技术架构


一个消息队列 Kafka 版集群包括 Producer、Kafka Broker、Consumer Group、Zookeeper。

网络异常,图片无法展示
|


网络异常,图片无法展示
|


  • Producer:消息发布者,也称为消息生产者, 通过 Push 模式向 Broker 发送消息。发送的消息可以是网站的页面访问、服务器日志,也可以是 CPU 和内存相关的系统资源信息。


  • Broker:用于存储消息的服务器。Broker 支持水平扩展。Broker 节点的数量越多,集群吞吐率越高。


  • Consumer Group:Consumer 被称为消息订阅者或消息消费者,负责向服务器读取消息并进行消费。Consumer Group 指一类 Consumer,这类 Consumer 通常接收并消费同一类消息,且消息消费逻辑一致。通过 Pull 模式从 Broker 订阅并消费消息。


  • Zookeeper:管理集群配置、选举 Leader 分区,并在 Consumer Group 发生变化时进行负载均衡。其中值得一提的是,如果没有 ZooKeeper 就无法完成 Kafka 部署。ZooKeeper 是将所有东西粘合在一起的粘合剂


  • 发布/订阅模型 :Kafka 采用发布/订阅模型,Consumer Group 和 Topic 的对应关系是 N : N,即一个 Consumer Group 可以同时订阅多个 Topic,一个 Topic 也可以被多个 Consumer Group 同时订阅。虽然一个Topic可以被多个 Consumer Group 同时订阅,但该 Topic 只能被同一个 Consumer Group 内的任意一个 Consumer 消费。