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