学习kafka
一个存放消息的组件
生产者,? 消费者,? broker三部分
消息队列的两种模式
*生产者和消费者(消费者主动拉取信息,然后删除)
*发布订阅()
kafka基础架构*一个topic有多个partition(副本(信息非全量),有分leader和follower)
*消费者组(只消费leader的)(一个分区一个消费者处理)
*zookeeper()
安装
修改broker id
修改ZK地址
修改数据存放路径
生产者原理:
流程:数据——缓存——集群
? ? ? ? 数据量先写道缓存 到达指定批次数量(batch)(默认16K),或等待时间(linger)(默认0秒)就发送
????????*可以异步发送
? ? ? ? *可以异步发送回调
? ? ? ? *同步发送
????????分区
? ? ? ? *1有指定的-指定partution
? ? ? ? *2有key的-根据key和toipc的partition数取余,
? ? ? ? *3啥没有的-粘性分区(随机,批次满了或时间到在随机下一个)
?????????怎么提高吞吐量
? ? ? ? *加大批次(batch)(默认16K)
? ? ? ? *等待时间(linger)(默认0
? ? ? ? *压缩
? ? ? ? *修改缓冲区大小(默认32M)
????????幂等性:(无论发送多少次,都只保存一条)
????????去重性(最多一次)配置acks
????????可靠性(最少一次)
????????有序性(开启幂等性,或者设置单分区)
架构
????????消费者
????????broker
????????????????broker
????????????????topic
????????? ? ? ? partition分区
????????????????? ? ? ? 可靠性(副本(leader,folloer))
? ? ? ? ? ? ? ? ? ? ? ? 生产者和消费者只对leader操
? ? ? ? ? ? ? ? ? ? ? ? 一个分区只有一个消费者
????????消费者
????????zookeeper
????????????????broker.ids
? ? ? ? ? ? ? ? leader
? ? ? ? ? ? ? ? 辅助选举
生产者API
? ? ? ? *send()异步发送
? ? ? ? *可以回调可以实现同步
? ? ? ? *批量发送设置(batch)(默认16K),或等待时间(linger)默认0)
? ? ? ? *配置acks
????????????????(acks=0或者1)最多一次(去重)
?????????????????(acks=-1或者retries>0)最少一次(可靠)
? ? ? ??
消费者API
? ? ? ? 可以自动提交或者手动提交(单条或者批量提交)
?
支持事务y
? ? ? 隔离级别 读未提交,读提交
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!