• 榣山樵客™
    2019-06-14
    版本号:
    大 + 小 + patch

    0.7版本:
    只有基础消息队列功能,无副本;打死也不使用

    0.8版本:
    增加了副本机制,新的producer API;建议使用0.8.2.2版本;不建议使用0.8.2.0之后的producer API

    0.9版本:
    增加权限和认证,新的consumer API,Kafka Connect功能;不建议使用consumer API;

    0.10版本:
    引入Kafka Streams功能,bug修复;建议版本0.10.2.2;建议使用新版consumer API

    0.11版本:
    producer API幂等,事物API,消息格式重构;建议版本0.11.0.3;谨慎对待消息格式变化

    1.0和2.0版本:
    Kafka Streams改进;建议版本2.0;

    江湖经验:不要成为最新版本的小白鼠

    谢谢老师的讲解,收工。
    展开
    
     48
  • 小头针
    2019-06-13
    胡老师讲的这个版本,一下戳到我的痛处。讲一下我在生产环境中遇到的Kafka版本带来的坑。我参与到项目中一年,运行的版本是0.10.0.1,前半年还算稳定,偶尔出现进程假死问题。但是慢慢的生产环境数据量增加,假死频发,导致客户数据丢失,问题很严重。但是一直又没有证据证明这个版本确实存在问题,虽然官网上有提到,但是我们老大的意思还是要找到根本原因。妥所以开始对生产环境的进程进程监控,确实监控出此版本存在线程死锁问题。(妥从一个开发转变为现场运维人员)然后研究官网bug列表,选出0.11.0.3这个版本,至今稳定运行。

    再顺便讲一下选择这门课的原因,虽然项目已经高一段落,但是在整个项目过程中,一直处于哪里不会点哪里的状态,感觉一直还是没有真正的掀开Kafka的面纱。所以想系统的学习一下,听了几节课,之前有些知其然而不知其所以然的内容,似乎开始有点茅塞顿开了。
    展开
    
     40
  • QQ怪
    2019-06-13
    的确在工作中遇到了kafka版本不同导致消息格式不兼容问题,后来服务端和客户端统一版本号才解决,👍👍👍
    
     6
  • 少林寺三毛
    2019-06-13
    👍
    
     6
  • 南辕北辙
    2019-06-13
    记得在刚开始学kafka写demo时,找到了kafka.producer.Producer,以及apache.kafka...KafkaProducer,还以为只是2种不同的实现方式,后来在老师的书上才得知这完全是2个版本。针对今天讨论的版本差异,书上也做了很好了总结。
    现在看来比较难理解的就是客户端的版本与服务端版本的兼容问题,与之前的各种技术还是有点差异的,并不是一味的较新客户端就完事,kafka中还有一种请求版本号的存在。
    图片为书中版本对比
    https://raw.githubusercontent.com/DarkerPWQ/picgo/master/img/Kafka%E7%89%88%E6%9C%AC%E5%8F%98%E8%BF%81.png
    展开

    作者回复: 嗯嗯,请求版本号偏底层的设计了,一般用户用不到。其实客户端和服务器端版本的差异很大一部分也是请求版本号的差异

    
     3
  • 疯琴
    2019-06-13
    美音最正的老师没有之一。有两个问题:1 文章前面说某些旧版本的服务端不适用新版本的客户端,文末又说二者应该保持一致,感觉是矛盾的,应该是我没理解清楚,还请说明 2 服务端版本靠编号就可以识别,而客户端是怎么定义新旧版本的呢?谢谢。

    作者回复: 1. 其实我也没太明白您的意思:) “旧版本的服务端不适用新版本的客户端 所以建议保持一致”,不是挺自然的结论吗。。。。

    2. 客户端也有版本号,和broker端是一样的。比如Java客户端,如果我们使用Gradle的话,就类似于这样:

    compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.2.1'

    
     3
  • 木偶人King
    2019-07-03
    找到0.10.2.2 和0.11.0.3
    http://mirrors.hust.edu.cn/apache/kafka/
    
     2
  • 风中花
    2019-06-17
    每次看完就想打卡,以表示我还在坚持学习,如此看来,这个版本真不能忽视

    作者回复: 嗯嗯,之前在做咨询的时候发现过两个问题:1. 很多人碰到的问题实际上已经是新版本解决的bug;2. 客户端/服务器端版本不一致导致的性能问题

    因此觉得写一篇版本的文章还是有点必要的。

    
     2
  • Chloe
    2019-06-14
    只想简单点赞👍,看了标题觉得版本号没有什么好聊了,看到才知道Kaka一路走来充满荆棘啊。感谢感谢!
    
     2
  • King Yao
    2019-06-13
    我是一名运维,在维护工作环境维护几十台Kafka。最近打算扩容。我有三个问题请教:
    1.kafka如何做压力测试,它的参考主要指标是什么,比如QPS,最大连接数,延迟等等。
    2.扩容如何做到平滑扩容,不影响原业务
    3.kafka有什么好的监控软件。

    作者回复: 1. Kafka提供了命令行脚本可以执行producer和consumer的性能测试,主要指标还是TPS,延时
    2. 增加broker很简单,也不会对现有业务有影响。关键是做好迁移计划——比如避开业务高峰时刻,如果迁移对业务影响最小

     2
     2
  • 刘朋
    2019-06-13
    升级Kafka版本,
    首先,看业务在使用当前Kafka版本是否有问题,是否有性能问题,
    其次,当前版本特性是否满足业务需求,是否需要新的Kafka特性
    然后,查看该当前版本是否还在迭代更新,以及迭代周期
    最后,升级Kafka版开发人员所付出的人工成本和时间成本

    在升级版本时,不是一味的追求最新版本,而是在满足业务需求为前提条件下的还在社区维护更新的稳定版本.
    展开
    
     2
  • 开水
    2019-06-13
    目前用的是hdp2.4.2内嵌版本。应该是apache版本的0.8.2.0。遇到很多问题都很难找到解决方法。比如前几天遇到了replicaFetcherThread oom的问题,网上根本找不到什么正经的解释。但又不能一味的调高jvm参数。老大说现在生产稳定就行了,暂时不要升级了,改代码耗时切面对的问题未知。期待老大能看到这篇文章,升级到0.11.0.3。

    作者回复: 嗯嗯,可以查一下ZooKeeper中是否存在大量session超时的情况。不过还是建议升级吧,听着很像是一个已知的bug。如果暂时不能升级,可以尝试调低replica.fetch.max.bytes的值试试。

    
     2
  • 平叔叔
    2019-09-22
    不论你用的是哪个版本,都请尽量保持服务器端版本和客户端版本一致 另外即使你升到了 0.8.2.2,也不要使用新版本 Producer api 不是互相矛盾吗?

    作者回复: 不矛盾。保持版本一致是任何时候都要尽力保持的。如果你依然使用0.8.x版本,那么最好使用Scala producer,而不是java producer

    
     1
  • Geek_sky
    2019-08-13
    看到版本号命名这,有一个问题想问一下,小版本号和修订版本号有什么区别呢?小版本号是新增小的功能,而修订版本号是修改发现的bug,是这个区别吗?

    作者回复: 嗯嗯,差不多:)

    
     1
  • 一天到晚游泳的鱼
    2019-07-08
    清晰透彻的讲解
    
     1
  • Aurevoir
    2019-06-22
    请问老师,0.11版本的Kafka消息格式是怎样的,与之前版本相比最大的差别在哪

    作者回复: 专栏毕竟篇幅有限。如果你想知道V2版本的详细设计,请参考:https://www.cnblogs.com/huxi2b/p/7126410.html

    
     1
  • jacke
    2019-06-22
    胡老师,问下:
    "如果你不能升级大版本,我也建议你至少要升级到0.8.2.2+这个版本,因为该版本中老版本消费者API是比较稳定的。另外即使你升到了0.8.2.2,也不要使用新版本+Producer+API,此时它的Bug还非常多" == 不是很明白
    这段话的意思升级到0.8.2.2,使用0.8.2.2的consumer api, 但是不要0.8.2.2的 producer api? 使用0.8大版本号下的producer api 是这个意思吗

    作者回复: 如果使用0.8.2.2,那么使用老版本的consumer和producer,不要使用新版本的客户端。它们此时还有很多bug。我是这个意思。。。。

    
     1
  • focusOn
    2019-06-14
    使用 kafka 2.0.0版本 在整个应用中只创建了一个 Kafka Producer , 每次调用 包装过的同步静态方法插入消息,其中插入静态方法调用了 Kafka Producer 的 send 方法,应用 OOM 情况下,Kafka 的 Producer 发送消息的 IoThread 线程被关闭,导致消息不能正常写入,这个是一个 bug 吗?老师?

    作者回复: 最好多给一些信息,比如OOM是哪部分内存溢出了。另外是否启用了Kafka Security等,还有就是是否频繁地创建KafkaProducer实例?

    
     1
  • 燕子上
    2019-06-14
    一般的,版本都会选择比最新低一个minor version的版本。除非团队有人精通最新版(解决了旧版本的哪些痛点,没有增加其他新问题),才会使用。当然我说的是所有的版本选择。
    
     1
  • Geek_89bbab
    2019-06-13
    原来kafka在演进过程中这么坑啊
    
     1
我们在线,来聊聊吧