Kafka能做到全局有序吗?
Kafka只能保证分区有序,
如果只有一个分区,
那也是变向的全局有序
Kafka如何保证分区有序
通过配置
max.in.flight.requests.per.connection = 1
这个配置是 生产者 往 服务度 发送数据的请求数,
配置为1,则一次只能发送1个请求,
如果失败继续重试,知道成功,
才会进行下一个请求的发送,
这样就保证了消息的有序性,
但是相对性能就大大降低了。通过生产者幂等特性
幂等的保证是需要给每条消息加一个 Seqnum的,
也就是每个消息都有自己的序号,
服务端对于比当前最新的Seqnum大于1的消息,
是会拒绝的,
所以也可以保证消息的顺序性