Kafka能做到全局有序嗎伟骨?
Kafka只能保證分區(qū)有序炬守,
如果只有一個(gè)分區(qū),
那也是變向的全局有序
Kafka如何保證分區(qū)有序
通過配置
max.in.flight.requests.per.connection = 1
這個(gè)配置是 生產(chǎn)者 往 服務(wù)度 發(fā)送數(shù)據(jù)的請(qǐng)求數(shù)肩钠,
配置為1榆俺,則一次只能發(fā)送1個(gè)請(qǐng)求,
如果失敗繼續(xù)重試预烙,知道成功墨微,
才會(huì)進(jìn)行下一個(gè)請(qǐng)求的發(fā)送,
這樣就保證了消息的有序性扁掸,
但是相對(duì)性能就大大降低了翘县。通過生產(chǎn)者冪等特性
冪等的保證是需要給每條消息加一個(gè) Seqnum的,
也就是每個(gè)消息都有自己的序號(hào)谴分,
服務(wù)端對(duì)于比當(dāng)前最新的Seqnum大于1的消息锈麸,
是會(huì)拒絕的,
所以也可以保證消息的順序性