kafka笔记:
kafka是分布式的消息队列,,数据读写的服务
名词有:
broker:节点
topic:主题,数据的标记(可以理解为一个队列)
partition:分区,将同一个标记的数据平均打散成n块
repartition:副本,备份数据的
leader:用来提供读写服务的
follower:同步数据
controller:选举leader
failover:故障转移机制
offset:偏移量,和主题分区有关系
group:消费者组
::::::kafka消费过程分析:
1) 高级API:
优点:系统通过zookeeper自行管理offset,不需要自己管理;系统自动管理分区,副本等情况
消费者断线会自动根据上一次记录在zookeeper中的offset去接着获取数据(默认设置1分钟更新一下zookeeper中存的offset)
可以使用group来区分对同一个topic 的不同程序访问分离开来(不同的group记录不同的offset,这样不同程序读取同一个topic才不会因为offset互相影响)
缺点:
不能自行控制offset(对于某些特殊需求来说)
不能细化控制如分区、副本、zk等
2) 低级API
优点:
能够让开发者自己控制offset,想从哪里读取就从哪里读取。
自行控制连接分区,对分区自定义进行负载均衡
对zookeeper的依赖性降低(如:offset不一定非要靠zk存储,自行存储offset即可,比如存在文件或者内存中)
缺点:
太过复杂,需要自行控制offset,连接哪个分区,找到分区leader 等