程序笔记   发布时间:2022-07-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了kafka的用法问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

学习任务问题反馈

1.kafka消息数据如何存储? 2.kafka如何保证有序,生产者有序,消费者有序 3.kafka主从同步,如何进行选主 4.consumer如何管理offset,如何保证数据不丢,如何保证数据不重复消费 5.tars如何进行服务发现,如何做负载均衡 6.tars线程模型 7.tars服务接口是被调用的流程,从TCP收到数据流开始到调用接口

  1. kafka如何存储消息数据:partition相当于一个文件夹,里面分为大小相等的segment数据文件来存储一部分的message,一个segment主要包括一个index文件和一个log文件,index文件里是一个map,key是当前segment的offset的偏移量,value是log文件中对应消息的实际物理地址偏移量。log文件里也是一个map,key是当前partition的offset的偏移量,value是当前消息的实际物理地址偏移量。index文件采用的是稀疏索引,当索引文件没有命中,会二分查找到最近的消息,然后根据消息长度找到offset相等的那条消息。

  2. kafka如何保证有序

    ​ 2.1 全局有序

    ​ (1)生产者有序:

    ​ i. 采用双端队列

    ii. topic只设置一个partition分区

    ​ iii. 将 max.in.flight.requests.per.connection设置为1,生产者在服务器响应之前可以发送1条消息,保证消息按照发送顺序写入服务器

    ​ (2)消费者有序:

    ​ i. 使用单线程

    ​ ii. 采用保证消费顺序的线程模型

    ​ iii. 在消费端增加失败标记的记录,然后用定时任务轮询去重试失败的消息并做好监控报警。

    ​ 2.2 局部有序

    ​ (1)生产者有序:

    ​ i. 采用双端队列

    ii. 将需要保证有序的消息发送到同一个partition

    ​ (2)消费者有序:

    ​ i. 将需要保证有序的消息发送到同一个消费线程

  3. kafka如何实现主从同步:使用ISR机制,ISR中的follower从leader拉取数据进行追加复制,ISR同步leader后有一个Leo,将ISR中最小的Leo作为HW高水位,consumer只能消费到HW的数据。ISR中的节点必须与zookeeper保持回话(心跳机制),不能落后 leader的写操作太多,否则被淘汰到OSR。

    如何进行选主:动态的ISR集合中的所有follower都可以选举为leader。

大佬总结

以上是大佬教程为你收集整理的kafka的用法问题全部内容,希望文章能够帮你解决kafka的用法问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。