kafka 强依赖 zookeeper。
应用在大数据场景,例如大数据的日志收集。
Borker -- 每台机器上可以运行一个或多个kafka的进程--Broker。
Topic -- 代表一个业务上的数据集合。相当于对数据进行业务上逻辑上的区分。但是对于大数据中把Tb的数据在一个机器的,一个日志文件肯定会有容量上的限制。可以在topic内部划分多个partition来分片存储数据。
Partition -- 同一个topic的不同的partition可以为于不同的机器上。Partition是一个有序的Message序列,这些message按顺序添加到一个叫做commit log的文件中,每个partition中的消息都有一个唯一的编号,称之为offset,用来唯一表示每个分区的message。paration 相当于一个日志文件,可以把一个topic的日志问题件分成多个。发消息时候,可以制定往哪个topic哪个partition里面去发,如果不指定,就好轮巡的方式往各个partition里面发。
Partition 好处:
1. 一个commit log 文件会受到机器在文件系统中的大小限制,分区之后,理论上一个topic可以处理任意数量的的数据。
2. 提高类并行度。
kafka集群在配置时间范围内,维护所有由producer生成的信息。不用去管这些消息有没有被消费,例如日志保留log retention时间被设置为2天,kafka会维护最近2天所生产的所有消息,2天前的会被丢弃。每个consumer基于自己在commit log中的消费进度(offset)来进行工作。在kafka中,cosumer的offset由自己来维