04 | 我应该选择哪种Kafka?
04 | 我应该选择哪种Kafka?
讲述:胡夕
时长11:27大小10.46M
你知道几种 Kafka?
特点比较
小结
开放讨论
赞 20
提建议
精选留言(54)
- lmtoo2019-06-11kafka eagle 也是非常不错的监控软件,好像也是国人写的,一直在更新,而且不比kafka manager差共 5 条评论89
- yellowcloud2019-06-12老师,您好,目前我们使用kafka时,使用的监控工具是kafka manager,后面也尝试过 kafka eagle,但是总是感觉这两款工具做的不尽如人意,有的甚至已经很长时间不维护了,老师能不能推荐下好的监控工具呢?
作者回复: 试试JMXTrans + InfluxDB + Grafana
共 2 条评论65 - 张亮2021-02-06滴滴开源https://github.com/didi/Logi-KafkaManager,是目前市面上最好用的一站式 Kafka 集群指标监控与运维管控平台,欢迎体验交流
作者回复: 支持!前些天试用了一下,非常惊艳!
共 6 条评论31 - 高志强2019-12-05最近接触使用到了两种kafka监控软件,一个是 kafka tools ,能够清晰的看到kafka存储结构。一个是 granafa,能看到消费的折线图。感觉棒棒哒~
作者回复: 👍
28 - cricket19812019-06-12我们用的是confluent套件,线上用到了kafka, schema registry和ksql,其中ksql用于实时指标计算。共 1 条评论21
- 永光2019-06-11按照文章说的,我理解现在国内大部分用的都是apache kafka 是这样吧?
作者回复: 就我这边观察到的,Confluent很少,创业公司多是CDH,大厂一般使用Apache Kafka,并且自己做了定制和改造
12 - 疯琴2019-06-11请问老师,kafka是否可以调整一个时间窗口内先发生却后到达的错序数据,使其可以按照事件时间戳的正确顺序被消费?
作者回复: 需要使用Kafka Streams组件或其他流处理框架编写流处理应用来实现。这是典型的event time windowing场景。 不过具体实现时要微调一下:不是按照事件时间戳的正确顺序被消费,而是保证late message也会被及时处理,并且对状态的影响有且只会有一次。
共 2 条评论10 - Skrpy2019-06-11哈哈哈,我还在读本科大三,不过非常想接触Kafka和Flink这些时下流行的大数据处理引擎,或者说流处理引擎。因为上一个学期在研讨课上给同学们分享了关于Flink的粗浅理解,在自学的过程中我也开始对“真正的”流处理引擎很感兴趣,提到Flink的地方总有“Kafka作为消息发布订阅”的字眼,于是有了许多联想,也感到学计算机真的要学很多东西。同时我也对开源这种精神和那些大神们充满崇敬和向往。但是现在自己觉得学到的东西还是太浅了,或者课堂上的基础知识也不知道如何自己实现和应用。但是有这样一种危机感,让我觉得必须一直学习,一直更新换代才行。由于之前自己的一些学习,对老师这5讲的内容还是接受得不错的,也很期待能学到从原理到实战的系统的知识。😁😁😁展开共 1 条评论8
- 技术修行者2020-03-07选择哪个Kafka版本,更多取决于项目性质: 1. 如果是非常紧急的项目,优先选择商业版,毕竟花了钱以后,有人support。 2. 如果是研究性质或者时间相对宽松的项目,选择Apache Kafka,可以在和社区不断交流的过程中加深理解,根据项目需求,做一些定制。
作者回复: 完全同意:)
6 - 风中花2019-06-11一口气看完4篇,有种从入门到放弃得感觉,感觉越来越重,越来越迷茫! 调整下,调整下,继续坚持下吧,集成得对于菜鸟合适只想用用,如果真得想玩转它控制它还是社区版本。或者有钱整个全套收费得也是一省百省。呵呵
作者回复: 别放弃!有的时候坚持一下就过去了。我当初看源码就是这样的体会:)
共 2 条评论6 - 莱茵金属2019-06-11我想问下kafka性能测试工具有哪些?
作者回复: 没有特别好的工具。Kafka自己提供了kafka-producer-perf-test和kafka-consumer-perf-test脚本可以做producer和consumer的性能测试。另外LinkedIn开源了一款名为kafka-monitor的端到端系统测试工具,也可以用来测试Kafka集群end-to-end的性能。有些遗憾的是这个工具几乎没什么人维护了,你可以试试吧(https://github.com/linkedin/kafka-monitor)
5 - 朱广彬2019-09-03老师,Client/Broker 跨版本具体会带来什么性能影响呢?Kafka 在1.1版本后做了协议兼容,允许Client/Broker 协议不一致。如果生产上Client/Broker 协议不一致,除了新协议的功能上不兼容,性能上有什么影响呢?比如Client 是1.1而Broker 是2.3,会不会影响比如Zero copy 而导致性能下降?
作者回复: 功能上是兼容的,只是性能上可能会有影响,因为可能出现需要把消息格式向下转换成老版本的额外中间步骤,增加了延时,降低了TPS
4 - 铭毅天下(公众号)2019-06-19conflunt的优势:原版人马打造,完善的 同步机制。国内也有公司在用,只不过资料少,就得多看英文资料。 感觉:cinfluent更新也很快,应该是kafka未来!共 1 条评论4
- 老杜去哪儿2019-06-12老师,咨询个问题,最近通过spingboot使用非注解方式配置kafka消费者,每一段时间会出现(Re-)joining group的情况,导致即便少量消息也会堆积直到消费者挂上,出现这种情况的原因大概会有哪些呢, 配置如下: Properties props = new Properties(); props.put("bootstrap.servers", env.getBootserver()); // 每个消费者分配独立的组号 props.put("group.id", env.getGroupId()); // 如果value合法,则自动提交偏移量 props.put("enable.auto.commit", "false"); // 设置多久一次更新被消费消息的偏移量 props.put("auto.commit.interval.ms", "1000"); // 设置会话响应的时间,超过这个时间kafka可以选择放弃消费或者消费下一条消息 props.put("session.timeout.ms", "30000"); props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, "100"); props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 600000); // 自动重置offset props.put("auto.offset.reset", "earliest"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); DefaultKafkaConsumerFactory kafkaConsumerFactory = new DefaultKafkaConsumerFactory(props); ContainerProperties containerProperties = new ContainerProperties(topicName); containerProperties.setMessageListener(this); containerProperties.setPollTimeout(300000); ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(3); executor.initialize(); containerProperties.setConsumerTaskExecutor(executor); KafkaMessageListenerContainer container = new KafkaMessageListenerContainer(kafkaConsumerFactory, containerProperties);展开
作者回复: 1. 查看一下你的程序中是否频繁创建KafkaConsumer实例; 2. 查看一下你的消息平均处理时间是否超过10分钟
共 2 条评论4 - 小晏子2020-04-16课后思考:因为是创业公司改造现有架构,那么我需要考虑这样几点:1. 紧急程度有多高,如果替换比较慢对业务有多大影响. 2. 有多少开发人员能够参与这个工作. 3. 后期运维能不能跟得上. 如果紧急程度不高,且有足够的开发参与,运维也给力,那么我会考虑上原生的apache kafka,然后通过自研的组件打通全流程。反之我会考虑购买现成的产品,毕竟拿来直接用且有人做运维也能节省成本,还能使产品快速上线。何乐而不为呢?而且如果很紧急,我们的产品还是部署在阿里云上,那么我直接买阿里云的现成的服务,这样更适合创业团队。展开
作者回复: 非常好的总结👍
3 - 杨陆伟2019-12-24有没有办法从部署环境中看出用的是社区版还是Confluent版本的Kafka?
作者回复: 从bin目录下的命令可以看出来。Confluent提供了很多社区版以外的命令
共 2 条评论3 - ikimiy2019-06-11老师把Mapr-ES漏了
作者回复: 从Mapr-es的官网我们可以清晰地看到它提供或者说实现了Kafka的API,另外它对自己的定位更多的是Kafka的竞品,再有没有查看公开资料表明mapr-es底层集成了Kafka,基于这些考量我没有将它列为Kafka的发行版。就像阿里的RocketMQ一样,最开始也是用java重写了Kafka的scala服务器端,但后面增加了很多特有的新功能,把RocketMQ称为Kafka的发行版肯定是不合适的,至少阿里的同学肯定不愿意:)
3 - 135010180512019-06-11如果你仅仅需要一个消息引擎系统亦或是简单的流处理应用场景,同时需要对系统有较大把控度,那么我推荐你使用 Apache kafka,目前kafka的监控软件还挺多的单集群Kafka Offset Monitor,多集群kafka manager,grafana+prometheus+kafka Exporter共 1 条评论3
- a、2019-06-11我会选择apache kafka,因为只是用kafka做消息中间件衔接上下游,所以我不需要3
- 莫问流年2019-06-11我会选择Apache Kafka,原因是只需要Kafka作为消息引擎衔接上下游业务,这种基本功能就社区版就可以保证。而且社区版的社区活跃,遇到问题可以得到更及时的响应。随着业务的开展和深入,我们也可以对其更好的把控。2