Kafka ApacheCN 官方报毒…
kafka 中文网 kafka研究
kafka 基础知识梳理 by cnblog-Go_小易
像MQ一样传递消息,支持消息的多订阅&多发布
像Hadoop一样处理流数据,只不过Kafka是实时的
像存储系统一样,支持批处理、备份日志以容错
kafka支持集群在一个或多个服务器上
kafka通过topic对流数据分类
每条record包含key、value、timestamp
Producer API 生产者 支持app发布流数据在topic上
Consumer API 消费者 支持app订阅topic上的流数据
Stream API 流处理器 支持app消费topic中的流数据,并将处理后的流数据输出到topic上
Connector API 支持topic连接到app或db中,捕获db中的变化
kafka的服务器与客户端之间使用Tcp协议
支持向下兼容
官方提供多种语言的客户端
topic,数据主题 kafka集群对每个topic,维护一份分区(partition)日志 分区就像是一个队列 队尾不断commit log记录(随时间线性的追加) 每条记录都有唯一的offset(log的位置) kafka集群保留所有offset,直至"保留期限"(一个可配参数) 保留期限内,记录允许被随时消费 消费者可以控制offset来读取所需的数据 分区允许kafka并行的处理数据,而不用担心会丢失记录的顺序 需要注意的是,消费者组内的实例不能超过分区个数4. 分布式
kafka集群共享分区日志,以容错
不同分区的kafka服务器可以互为leader、followers
生产者 发布到topic:分配到特定的topic、循环分配以均衡负载
所有消费者在同一消费者组中,消息记录会被自动均衡负载到每个消费者中(即每个消费者实例)
所有消费者在不同消费者组中,消息记录会被自动广播到所有消费者的进程中
在Kafka中实现消费的方式是将日志中的分区划分到每一个消费者实例上,以便在任何时间,每个实例都是分区唯一的消费者
如果新的实例加入组,他们将从组中其他成员处接管一些 partition 分区;如果一个实例消失,拥有的分区将被分发到剩余的实例。



