,kafka采用什么模式?

用户投稿 66 0

关于“php_kafka_produce”的问题,小编就整理了【4】个相关介绍“php_kafka_produce”的解答:

kafka采用什么模式?

kafka采用了pull模式也就是靠靠消费者主动拉取。

(produce将消息推送到broke,消费者主动拉取)

pull模式:消费者主动向broker拉取消息,适合不同消费速率的消费者。pull缺点:当broker没有消息推送时,导致消费者不断等待轮询。为了避免kafaka有个参数,可以以让消费者阻塞。

kafka生产者配置详解?

以下是Kafka生产者的常见配置:

bootstrap.servers: 指定Kafka集群中至少一个broker的地址,格式为“host:port”。

acks: 指定生产者需要等待多少个副本副本确认才将消息视为成功写入。可能的值为“all”(等待所有副本确认),“-1”(等待所有副本确认),“0”(不等待副本确认),“1”(等待至少一个副本确认)。

retries: 生产者在遇到可恢复的错误时重试的次数,例如连接错误。默认情况下,重试间隔为100毫秒,可以使用retry.backoff.ms属性更改。

batch.size: 控制在发送到Kafka之前收集的消息的大小。较大的批次可以提高吞吐量,但可能会增加延迟。

linger.ms: 控制发送到Kafka之前消息在缓冲区中保留的时间。如果batch.size未达到,等待时间超过此配置的时间,生产者将强制发送缓冲区中的所有消息。

buffer.memory: 生产者用于缓存等待发送到Kafka的消息的总内存量。当缓冲区中的消息达到buffer.memory时,send()方法将阻塞,直到Kafka将缓冲区中的消息清空。

key.serializer和value.serializer: 生产者将消息的键和值序列化为字节以便发送到Kafka。可以指定自定义序列化程序,但默认情况下,Kafka提供了一些内置的序列化程序,例如StringSerializer和ByteArraySerializer。

kafka是拉还是push?

kafka遵循了pull模式也就是靠靠消费者主动拉取

(produce将消息推送到broke,消费者主动拉取)

push:像Scripe和apache flume是使用push 模式。优点:broker能以最大速率发送消息。缺点:当broker推送的消息远大于消费者的速率时,消费者就会崩溃,当broker想避免消费者崩溃,采取远小于消费者速率推送消息,导致一次推送较小的消息造成浪费。

pull:消费者主动向broker拉取消息,适合不同消费速率的消费者。pull缺点:当broker没有消息推送时,导致消费者不断等待轮询。为了避免kafaka有个参数,可以以让消费者阻塞。

kafka生产几种方式?

kafka生产消息几种方式

一、发送并忘记

把消息发送给服务器,但并不关心它是否正常到达。大多数情况下,消息会正常到达,因为 Kafka 是高可用的,而且生产者会自动尝试重发。不过,使用这种方式有时候也会丢失一些消息。

二、同步发送

使用 send() 方法发送消息,它会返回一个 Future 对象,调用 get() 方法进行等待(会返回元数据或者抛出异常),就可以知道消息是否发送成功。

三、异步发送

大多数时候,我们并不需要等待响应——尽管 Kafka会把目标主题、分区信息和消息的偏移量发送回来,但对于发送端的应用程序来说不是必需的。不过在遇到消息发送失败时,我们需要抛出异常、记录错误日志等,这样的情况下可以使用异步发送消息的方式,调用 send() 方法,并指定一个回调函数,服务器在返回响应时调用该函数。

四、多线程方式 (由此想到java线程池的几种方式)

在数据量比较大同时对发送消息的顺序没有严格要求时,可以使用多线程的方式发送数据,实现多线程生产者有两种方式:1. 实例化一个 KafkaProducer 对象运行多个线程共享该对象发送消息;2. 实例化多个 KafkaProducer 对象。

由于 Kafka Producer 是线程安全的,所以多个线程共享一个 Kafka Producer 对象在性能上要好很多。

五、Kafka Producer 常用配置(kafka-1.1.0)

到此,以上就是小编对于“php_kafka_produce”的问题就介绍到这了,希望介绍关于“php_kafka_produce”的【4】点解答对大家有用。

抱歉,评论功能暂时关闭!