官方网站面膜做微商,珠海网站制作设计,天空影院手机免费观看在线,最有效的网站推广方案生产者在生产过程中的消息丢失 broker在故障后的消息丢失 消费者在消费过程中的消息丢失ACK机制 ack有3个可选值#xff0c;分别是1#xff0c;0#xff0c;-1。 ack0#xff1a;生产者在生产过程中的消息丢失 简单来说就是#xff0c;producer发送一次就不再发送了#…生产者在生产过程中的消息丢失 broker在故障后的消息丢失 消费者在消费过程中的消息丢失
ACK机制 ack有3个可选值分别是10-1。 ack0生产者在生产过程中的消息丢失 简单来说就是producer发送一次就不再发送了不管是否发送成功。 ack1broker在故障后的消息丢失 简单来说就是producer只要收到一个分区副本成功写入的通知就认为推送消息成功了。这里有一个地方需要注 意这个副本必须是leader副本。只有leader副本成功写入了producer才会认为消息发送成功。 注意ack的默认值就是1。这个默认值其实就是吞吐量与可靠性的一个折中方案。生产上我们可以根据实际情况进 行调整比如如果你要追求高吞吐量那么就要放弃可靠性。 ack-1生产侧和存储侧不会丢失数据 简单来说就是producer只有收到分区内所有副本的成功写入的通知才认为推送消息成功了。Offset机制
kafka消费者的三种消费语义 at-most-once最多一次可能丢数据 at-least-once最少一次可能重复消费数据 exact-once message精确一次Kafka是pullpush以及优劣势分析
Kafka最初考虑的问题是customer应该从brokes拉取消息还是brokers将消息推送到consumer也就是pull还 push。 Kafka遵循了一种大部分消息系统共同的传统的设计producer将消息推送到brokerconsumer从broker拉取消 息。 一些消息系统比如Scribe和Apache Flume采用了push模式将消息推送到下游的consumer。 这样做有好处也有坏处由broker决定消息推送的速率对于不同消费速率的consumer就不太好处理了。 消息系统都致力于让consumer以最大的速率最快速的消费消息但不幸的是push模式下当broker推送的速率 远大于consumer消费的速率时consumer恐怕就要崩溃了。 最终Kafka还是选取了传统的pull模式。 Pull模式的另外一个好处是consumer可以自主决定是否批量的从broker拉取数据。 Push模式必须在不知道下游consumer消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推 送。 如果为了避免consumer崩溃而采用较低的推送速率将可能导致一次只推送较少的消息而造成浪费。 Pull模式下consumer就可以根据自己的消费能力去决定这些策略。Pull有个缺点是如果broker没有可供消费的消息将导致consumer不断在循环中轮询直到新消息到达。 为了避免这点Kafka有个参数可以让consumer阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特 定的量这样就可以批量发