1.Consumer优化:心跳线程可作为后台线程,提交offset,剥离出poll函数

问题:0.10新设计的consumer是单线程的,提交offset是在poll中。本次的poll调用,提交上次poll的心跳和offset值。

The options for the user at the moment to handle this problem are the following:

  • Increase the session timeout to give more time for record processing.
  • Reduce the number of records handled on each iteration with max.poll.records.

0.10.1.1 推荐的配置

session.timeout.ms: 10s
max.poll.interval.ms: 5min
max.poll.records: 500

2.log retention 日志保留

粒度更细

  • old:根据segment的创建时间来删除
  • new:根据message的timestamp来删除

3.Offset和Time Index索引

由于引进了基于Time的索引策略,多了1.5x的存储空间,所以请增大索引文件的大小,防治频繁的rolling。log.index.size.max.bytes

由于加载的东西变多了,broker的启动时间变长了,设置num.recovery.threads.per.data.dir=1 ,可以减少启动时间。

4.重要的改变:0.10.1.0

  • The new Java Consumer now allows users to search offsets by timestamp on partitions.
  • The new Java Consumer now supports heartbeating from a background thread.

5.New Protocol Versions

  1. ListOffsetRequest v1 supports accurate offset search based on timestamps.
  2. MetadataResponse v2 introduces a new field: "cluster_id".
  3. FetchRequest v3 supports limiting the response size (in addition to the existing per partition limit), it returns messages bigger than the limits if required to make progress and the order of partitions in the request is now significant.
  4. JoinGroup v1 introduces a new field: "rebalance_timeout".

6. Kafka Server主要的特性

  1. Time-based Search(基于timeStamp的搜索):可以根据timestamp来消费topic
  2. Replication Quotas(副本带宽限制):可以限制replica拉取的带宽,减少对消费者、生产者的影响。
  3. Improved Log Compaction(提升日志压缩):以前,consumer无法分辨哪些日志是压缩的、还是不压缩的。

对这个详细看看:

对一个consumer而言,如果它lag在一定范围内,那么它能够获得每一条压缩的消息。

对于我的理解,第三条是为了基于精确的时间清理日志而用的。那个关于 database replication 的用法-没有看懂

两个参数的含义:

  • log.cleaner.min.compaction.lag.ms :The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted. 默认值是0. 日志中保留未压缩的message的最小时间。(超过这个时间的日志都是压缩的)
  • min.compaction.lag.ms : topic级别的配置属性(上面那个是Server级别的配置。topic的配置可以覆盖server 的配置。)

7.Kafka Client APIs 主要的特性

  1. Interactive Queries(交互式查询): Kafka Streaming的特性
  2. Consumer Stabilization(稳定性):支持background 心跳,让poll之后,message的处理时间更加宽裕

对这个详细看看,

old参数:

  • max.partition.fetch.bytes 用来限制每次consumer fetch数据的大小限制,只是限制partition的,无法限制到一次拉取的总量,有潜在的一次拉取几个GB的可能。

new参数:

  • fetch.max.bytes = 50MB: 限制整个consumer client 一次拉取的总量
  • replica.fetch.response.max.bytes = 10MB : 限制replica拉取线程的 一次拉取量。

new参数能否限制多线程拉取的总量,需要测试测试。即:如果我启动2个consumer 能否把fetch的量达到100MB。

  1. Improved memory management(提升内存管理):关于Kafka Stream的
  2. Secure Quotas(安全提升):以前有权限认证管理,现在可以限制Producer和Consuemr的流量了。

    目前是静态配置文件,动态加载的正在讨论中~~~
// Default bytes-out per consumer.
quota.consumer.default=2M
quota.producer.default=2M // Overrides
quota.producer.override="clientA:4M,clientB:10M"
quota.consumer.override="clientC:3M,clientD:5M"

Kafka 0.10.1.1 特点的更多相关文章

  1. Kafka 0.10问题点滴

    15.如何消费内部topic: __consumer_offsets 主要是要让它来格式化:GroupMetadataManager.OffsetsMessageFormatter 最后用看了它的源码 ...

  2. Kafka 0.10.1版本源码 Idea编译

    Kafka 0.10.1版本源码 Idea编译 1.环境准备 Jdk 1.8 Scala 2.11.12:下载scala-2.11.12.msi并配置环境变量 Gradle 5.6.4: 下载Grad ...

  3. Kafka 0.10.0

    2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...

  4. Kafka 0.10 KafkaConsumer流程简述

    ConsumerConfig.scala 储存Consumer的配置 按照我的理解,0.10的Kafka没有专门的SimpleConsumer,仍然是沿用0.8版本的. 1.从poll开始 消费的规则 ...

  5. kafka 0.10.2 消息消费者

    package cn.xiaojf.kafka.consumer; import org.apache.kafka.clients.consumer.ConsumerConfig; import or ...

  6. kafka 0.10.2 消息生产者(producer)

    package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.*; import org.apache.kafk ...

  7. kafka 0.10.2 消息生产者

    package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; import org ...

  8. kafka 0.10.2 cetos6.5 集群部署

    安装 zookeeper http://www.cnblogs.com/xiaojf/p/6572351.html安装 scala http://www.cnblogs.com/xiaojf/p/65 ...

  9. Kafka 0.10 Metadata的补充

    什么是Metadata? Topic/Partion与broker的映射关系:每一个Topic的每一个Partion的Leader.Follower的信息. 它存在哪里?持久化在Zookeeper中: ...

随机推荐

  1. TLD视觉跟踪算法(转)

    源:TLD视觉跟踪算法 TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总 ...

  2. libusb开发者指南(转)

    源:libusb开发者指南 译者: gashero 作者: Johannes Erdfelt 日期: 2010-04-17 地址: http://libusb.sourceforge.net/doc/ ...

  3. STM32 定时器用于外部脉冲计数(转)

    源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的). STM32中的定时器有很多用法: ( ...

  4. 搭建NDK环境

    2014.07.14 搭建OK,但是目前只能手动编译c代码,具体不清楚.

  5. django学习——基础

    在ubuntu下, 安装: pip install django / sudo apt-get install python-django 项目与应用 一个project包含多个app,每个app处理 ...

  6. linux下安装mysql(编译mysql源码)

    编译所需软件地址 http://mysql.mirror.kangaroot.net/Downloads/  -- 下载需要的mysql版本例如mysql-5.5.39.tar.gz    目前还不太 ...

  7. mysql配置主从数据库

    1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度<读写分离好处> 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验 ...

  8. Poi之Word文档结构介绍

    1.poi之word文档结构介绍之正文段落 一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元 获取所有段落:List<XWPFParagraph ...

  9. linux环境下Vim的配置

    原文链接:http://blog.chinaunix.net/uid-26826958-id-3272375.html  (本文转自此链接中的部分内容,但做了适当修改) 安装vim命令:sudo ap ...

  10. PHP使用JPG生成GIF动画图片,基于php_imagick_st-Q8.dll

    PHP使用php_imagick_st-Q8.dll类库,把JPG图片连接生成GIF动画图片,需要事先下载好php_imagick_st-Q8.dll,文件,并配置php.ini文件,启用php_im ...