最佳实践|从生产者到消费者,如何有效监控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 消费。