kafka如何保证数据是顺序写入的?请教,如果能轻易做到…

kafka如何保证数据是顺序写入的?请教,如果能轻易做到,那为什么别的消息队列不这样做?

京东员工:m

今日头条员工:单个生产者的有序是发送端做的,到服务端某个分区的话,多个生产者发来的数据也可能交错。读的话本身是磁盘索引保障顺序。

程序猿.风流唐伯虎:没听明白[冷汗] 还是不知道怎么保证顺序写。 因为有多个分区,那么写数据的时候,磁头一会到这个分区,一会到那个分区,不也成了随机吗

VIPKID员工:默认其实是不会保证严格按顺序写入的,如果保证严格有序,吞吐量会下降很多,kafka的优势也就没那么明显了,比如有一个参数可以设置,是客户端单个链接能够发送的未响应请求的个数,默认是5,如果retry大于0,当出现某些问题重试的时候,就有可能乱序,要保证严格有序可以设为1

今日头条员工:有序只保证你从某个分区读到的数据顺序与写入顺序一致

程序猿.风流唐伯虎:饶恕我愚钝,那既然这样的话,我写文件一行行的写,读的时候,再一行行的读,就也变成了顺序读写了? 明显不是吧,一个分区的数据出现在多个扇区,肯定顺序读不了

程序猿.我不是王重阳:无非就是FileChannel和mmap

程序猿.我不是王重阳:kafka充分利用了page cache,一般的话,用不到磁盘。。

程序猿.风流唐伯虎:pagecache跟顺序写有啥关系?

程序猿.福康安:轻易实现?kafka只保证单分局内有序,还得保证发送端是有序户串行发送,

程序猿.福康安:理解错了

fittime员工:m

蚂蚁金服员工:m

杭州大搜车汽车服务有限公司员工:m

字节跳动员工:M

程序猿.尼古拉斯赵四:只用一个partition

程序猿.小狮子特尔施特根:kafka单分区有序,发送的时候如果是多个分区没办法保证

程序猿.我不是王重阳:kafka写入的是page cache,也就是写内存,不直接写磁盘,然后由os来写磁盘,这就实现了顺序写。

猿辅导员工:一台机器上不是只有一个分区吗

360企业安全员工:M

阿里员工:Kafka支持单分区有序,想全部有序的话需要自己基于发送端改造,比如基于业务ID的hashcode取余映射到固定对应分区

程序猿.许褚:m

天眼查员工:m

产品汪.打假猴偶斯渣渣辉:一眼看成mmp[笑哭]

安道全:m

网易员工:因为顺序并不是所有场景的严格要求,所以不需要牺牲这么大,保证顺序

程序猿.袁伟:M

程序猿.蓝凤凰:m

北京传智播客教育科技股份有限公司员工:区内有序,全局无序

今日头条员工:单个生产者的有序是发送端做的,到服务端某个分区的话,多个生产者发来的数据也可能交错。读的话本身是磁盘索引保障顺序。