ApacheKafka—基于事件/流的系统中的tcp交付和处理保证和精确一次保证

ltqd579y  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(437)

据我所知,tcp提供了至少一次传递(在收到ack之前重新传输),并且在接收器上只提供了一次处理(重复的数据包将被忽略,只有一个副本将被传递到应用程序),如果这是真的,为什么应用层消息传递系统(如kafka)和流媒体系统(如spark)需要它们自己的应用层协议来提供精确的一次处理保证,为什么不仅仅依靠tcp进行一次传递和/或处理呢?

nszi6y05

nszi6y051#

tcp的可靠性保证只包括系统间的数据传输,而不包括应用程序间的数据传输。如果操作系统接收到数据并将其放入套接字的接收缓冲区中,则接收方系统会发回一个ack。这意味着ack可能在应用程序读取和处理数据之前发送。为了保证由应用程序读取和处理数据,因此在应用程序协议中需要某种类型的ack。

相关问题