kafka原理和实践(一)原理:10分钟入门
系列目录
kafka原理和实践(三)spring-kafka生产者源码
kafka原理和实践(四)spring-kafka消费者源码
=========正文分割线===============
关于kafka原理网上文章很多,但能真正快速入门的几乎没有(要不就是原文翻译官网...实在枯燥无味之极),本章尽量采用图文的方式,提纲挈领的阐述原理。
一、kafka拓扑图
大家都知道kafka是依赖zookeeper集群的,一般最少也要三台服务器来实现HA。拓扑图如下,分三层:
1.Producers:消息生产者,push消息给Brokers.发送时根据不同topic选择不同分区(在Broker上)。
2.Brokers:注册在zookeeper节点上。
3.Consumers:消息消费者,从brokers上根据订阅的topic选择不同分区,poll数据,执行消费。
二、名词解释
1.producer:消息生产者,发布消息到 kafka 集群的终端或服务。
2.broker:kafka 集群中包含的服务器。
3.topic:每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
4.partition:partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。
5.consumer:从 kafka 集群中消费消息的终端或服务。
6.Consumer group:high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
7.replica:partition 的副本,保障 partition 的高可用。
8.leader:replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
9.follower:replica 中的一个角色,从 leader 中复制数据。
10.controller:kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
11.zookeeper:kafka 通过 zookeeper 来存储集群的 meta 信息。
三、生产模型
kafka生产者多线程异步发送模型如下图,主要包含2个流程:1)数据批量存储,批量发送2)Netty NIO 发送数据
大概看一下流程,理解个大概即可,具体见后续源码分析章节。
四、消费模型
根据xml配置的不同启动不同的容器(ConcurrentMessageListenerContainer/MessageListenerContainer),下图为并发消息监听器容器启动流程,主要包含2个主流程:
1.从cluster拉取消息
2.消费消息
相关文章
- Python 操作 Kafka --- kafka-python
- 报错:java.lang.AbstractMethodError: nl.techop.kafka.KafkaHttpMetricsReporter.logger()Lcom/typesafe/scalalogging/Logger;
- 淘东电商项目(51) -全局异常日志采集(ELK+Kafka)
- 大白话 kafka 架构原理
- 玩转Kafka—Spring&Go整合Kafka
- Kafka 的这些原理你知道吗
- kafka--producer 发布消息
- 【kafka原理】Kafka生产者 (分区策略和ACK应答机制)
- Linkedin官方kafka性能压测-kafkaBenchmarking Apache Kafka: 2 Million Writes Per Second (On Three Cheap Machines)
- Introducing KSQL: Streaming SQL for Apache Kafka
- Kafka重启出错:Corrupt index found
- Kafka integration with Ganglia
- kafka-rest:A Comprehensive, Open Source REST Proxy for Kafka
- kafka原理和实践(四)spring-kafka消费者源码
- Kafka报错——log问题导致ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.
- apache kafka监控系列-KafkaOffsetMonitor(转)
- (三)storm-kafka源代码走读之怎样构建一个KafkaSpout
- tomcat,zookeeper,activeMQ,Kafka设置jvm参数
- kafka 集群--3个broker 3个zookeeper创建实战
- Kafka的架构原理,你真的理解吗?
- 深入理解 Linux 零拷贝以及 Linux 中 I/O 的底层原理,在kafka、nginx、golang等等各种文件传输场景中不同的优化手段和实际应用
- Linux安装gssapi、kafka-python实现Kerberos认证连接Kafka等中间件集群服务(最新版)