Kafka是如何保证顺序写的

即心即佛 2019-07-11 04:37:44
如题。
只要是追加写就是顺序写嘛?数据在磁盘上是怎么保存的呢?
...全文
790 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
宣言就是siam 2022-02-16
  • 打赏
  • 举报
回复

Kafka不会始终按顺序访问磁盘,但它会做一些事情,使磁盘访问更可能经常顺序。所有Kafka消息都存储在较大的段文件中(默认为1GB),因为Kafka消息在使用时不会被删除(就像在其他消息代理中一样)Kafka不会通过不断创建和删除许多变量长度来创建碎片文件系统文件。相反,它会创建段文件,然后附加到该文件,直到达到1GB(可配置的限制)。只有当段中的所有消息都过期时,它才会删除整个1GB段。这意味着通常这些1GB的磁盘部分实际上是作为连续的块布局的。

weixin_45331911 2021-03-04
  • 打赏
  • 举报
回复
我觉得这点kafka确实没法保证自己在写磁盘的时候,别的进程不能同样来执行写磁盘的操作, 所以kafka的顺序读写的意思应该不是绝对意义上的顺序读写,而且在producer产生消息时,将消息先找到对应的broker, topic和partition之后,将数据一次性压缩发送给broker,由专门负责读写的线程找到对应的日志文件,一次性追加到该文件的末尾部. 即他只能保证在他的进程中,这个读写是顺序执行的.
Terry20130701 2019-08-11
  • 打赏
  • 举报
回复
我也一直在纠结这个问题,什么才算是KAFKA所说的顺序写?难道其它MQ就不能顺序写了? 顺序写对于多次读写我个人觉得本来就是伪命题,为什么这样说,kafka在读写数据期间(每次读写的间隔期间),其它进程如果也进行读写磁盘操作,那么这个时候磁头会移动到其它位置,等kafka再进行读写的时候,那必定也需要花费磁头的寻道时间,这就不是顺序了!有哪位大拿可以指点一二?
即心即佛 2019-07-16
  • 打赏
  • 举报
回复
自己顶起来!
海上的程序猿 2019-07-16
  • 打赏
  • 举报
回复
每条数据,都有对应的partition和offset
即心即佛 2019-07-12
  • 打赏
  • 举报
回复
我想知道我直接追加写,写在文件末尾,是不是就算是顺序写了呢?另外,追加写的文件在硬盘上是保存的?扇区也是连续的?
对梦想的牵挂 2019-07-11
  • 打赏
  • 举报
回复
保存的是文件,当文件足够大时,会产生下一个文件。每个文件中生产者只会对partition做数据的追加的操作

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧