分类目录归档:kafka

kafka 高级特性(2)


消费者参数配置

  1. fetch.min.bytes 服务器对每个拉取消息的请求返回的数据量最小值,如果数据量达不到这个值,请求等待,让更多的数据累计,达到这个值之后响应请求,默认设置是1个字节,表示只要有一个字节的数据,就立即响应请求,可以将值设置为大一点的数字,长时间可以累积数据,可以提高吞吐量,代价是额外的延迟时间
  2. fetch.max.wait.ms 如果服务端的数据量达不到fetch.min.bytes 的话,服务器端不能立即响应请求,用来配置服务器阻塞请求的最大时长。
  3. fetch.max.bytes 服务器给单个拉取请求返回的最大数据量,消费者批量拉取消息,如果第一个非空消息批次的值

Read more

Kafka 高级特性解析


生产者

消息发送

数据生产流程解析

  1. Producer 创建时,会创建一个Sender 线程并设置为守护线程。
  2. 生产消息时,内部是异步流程,生产的消息先经过拦截器-》序列化器-》分区器,然后将消息存在缓冲区,(该缓冲区也是在 Producer创建时创建)
  3. 批次发送的条件为:缓冲区数据大小达到batch.size 或者linger.ms 达到上限,那个先达到就算那个。
  4. 批次发送后,发往指定分区,然后罗盘到broker; 如果生产者配置了retrires 参数 大于0 并且失败原因允许重试,那么客户端内部会对该消息进行重试。
  5. 落盘到broker 成功,返回生产元数据给生产者。
  6. 元数据返回有两种方式

Read more

kafa 消息发送和消费


消息生产者

生产者有两种,1,kafka-producer,2.producer-record,其中kafkaproducer 是用来发送消息的类,producerrecord 是用来封装kafka的消息。 kafkaproducer 的创建需要指定的参数和含义:

  1. bootstrap.servers 用来配置生产者如何与broker建立连接,该参数设置的是初始化参数,如果生产者需要连接的是kafka集群,则这里配置集群中几个broker的地址,而不是全部,当生产者连接上此处指定的broker 之后,在通过该连接发现集群中的其他节点
  2. key.serializer 要发送消息的key数据的序列化

Read more

kafka


KafKa 架构和实战

KafKa 介绍

Kafka 是一个分布式,分区的,多副本,多生产者,多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志,访问日志, 消息服务等等,主要应用场景是:日志收集系统和消息系统。

kafka 主要设计目标:

  1. 以时间复杂度o(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证正常时间的访问性能。
  2. 高吞吐率,最低一般也是每秒100k条消息的传递
  3. 支持kafka server键的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输
  4. 同时支持离线数据处理和实施数据处理
  5. 支持在线水

Read more