打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Kafka与ActiveMQ的区别与联系详解

1. 背景分析

消息队列这个类型的组件一直是非常重要的组件,当经过两家企业后我就很坚信这个结论了。队列这种东西,最广泛的作用还是在于解耦,宽泛一点的说,它可以将不同部门的工作内容进行有效的整合,基于一个约定好的格式,就可以两头互相不干扰的进行开发。可以说这个生产消费的思想不仅仅适用于程序也适用于非常多的地方。目前对于我看到的来说,Kafka更多的还是做为一个数据源,数据桥梁的作用,不同业务之间的沟通。比如需要实时接入A部门的业务数据的话,就会有这样的手段:

落地到HDFS的数据会用来进行一些算法上的离线处理,而Kafka端则是给需要实时性的消费方。其实数据的消费方式无非也就实时和离线两种方式。

2. Kafka和ActiveMQ对比

相比过去经常使用的ActiveMQ,Kafka确实非常的不同,做一个对比来深化印象

说到底,做为kafka的消费方,能感受到最大的不同还是在于几个:

a. 吞吐量确实非常高

b.可以重读历史数据

c.但是也有一些缺点:概念上比较复杂,相对于AMQ只需要知道ip和队列名你就能获得数据,Kafka使用起来非常繁琐

3. Kafka的基本概念(摘录)

a.Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。

b.Topic:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。

c.Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。

d.Segment:partition物理上由多个segment组成。

e.offset:每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息.

4. Kafka消费端的常用参数

Properties props = new Properties();
//zk服务器的地址 xxxx:2181
props.put("zookeeper.connect", zookeeper);
//组的名称,区别于其他group否则会接收不到数据
props.put("group.id", groupId);
props.put("zookeeper.session.timeout.ms", "8000");
props.put("zookeeper.connection.timeout.ms", "20000");
props.put("zookeeper.sync.time.ms", "2000");
props.put("auto.commit.interval.ms", "5000");
props.put("rebalance.max.retries", "5");
props.put("rebalance.backoff.ms", "60000");
props.put("auto.commit.enable", "true");
//重点参数,是否每次都从offset最前面开始读起
props.put("auto.offset.reset", "smallest");
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
消息队列的作用以及kafka和activemq的对比
探讨kafka的分区数与多线程消费
三万字 | Kafka 知识体系保姆级教程宝典
Kafka 对比 ActiveMQ
Kafka 分布式消息队列介绍
Apache Kafka:下一代分布式消息系统
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服