Kafka深度分析架构kafka是显式分布式架构,producer、broker(Kafka)和consumer都可以有多个
Kafka的运行依赖于ZooKeeper,Producer推送消息给kafka,Consumer从kafka拉消息
kafka关键技术点(1)zero-copy在Kafka上,有两个原因可能导致低效:1)太多的网络请求2)过多的字节拷贝
为了提高效率,Kafka把message分成一组一组的,每次请求会把一组message发给相应的consumer
此外,为了减少字节拷贝,采用了sendfile系统调用
为了理解sendfile原理,先说一下传统的利用socket发送文件要进行拷贝:Sendfile系统调用:(2)Exactlyoncemessagetransfer怎样记录每个consumer处理的信息的状态
在Kafka中仅保存了每个consumer已经处理数据的offset
这样有两个好处:1)保存的数据量少2)当consumer出错时,重新启动consumer处理数据时,只需从最近的offset开始处理数据即可
(3)Push/pullProducer向Kafka(push)推数据,consumer从kafka拉(pull)数据
(4)负载均衡和容错Producer和broker之间没有负载均衡机制
broker和consumer之间利用zookeeper进行负载均衡
所有broker和consumer都会在zookeeper中进行注册,且zookeeper会保存他们的一些元数据信息
如果某个broker和consumer发生了变化,所有其他的broker和consumer都会得到通知
kafka术语TopicTopic,是KAFKA对消息分类的依据;一条消息,必须有一个与之对应的Topic;比如现在又两个Topic,分别是TopicA和Top