消息队列的作用以及kafka和activemq的对比

背景分析

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

 

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

Kafka和activemq对比

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

对比 Activemq Kafka
接口协议 遵守JMS规范,各语言支持较好 没有遵循标准MQ接口协议,使用较为复杂
吞吐量 较低,磁盘随机读写 较高,磁盘顺序读写
游标位置 AMQ来管理,无法读取历史数据 客户端自己管理,不乐意甚至重新读一遍也行
HA机制 主从复制,竞争锁的方式来选举新的主节点 和hadoop系列产品一样,由zk管理所有节点

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

  1. 吞吐量确实非常高
    2.可以重读历史数据
    但是也有一些缺点:
    1.概念上比较复杂,相对于AMQ只需要知道ip和队列名你就能获得数据,Kafka使用起来非常繁琐

Kafka的基本概念(摘录)

1.Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。
2.Topic:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
3.Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。
4.Segment:partition物理上由多个segment组成。
5.offset:每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息.

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");

Kafka的一些常用命令

查看所有的topic

bin/kafka-topics.sh --zookeeper zk1.test-inf-zk.data.m.com:2181/octopus,zk2.test-inf-zk.data.m.com:2181/octopus,zk3.test-inf-zk.data.m.com:2181/octopus --list

查看topic的偏移量

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic xiuxiu_sync_search_big_data --time -1 --broker-list 192.168.199.11:9092 --partitions 0

查看topic的状态

bin/kafka-topics.sh --zookeeper 192.168.199.11:2181 --topic xiuxiu_sync_search_big_data --descr
(0)

相关推荐

  • 02.Kafka快读入门

    安装部署 先下载zookeeper.kafka zookeeper下载地址:Download kafka下载地址:Download 集群规划 hadoop001 hadoop002 zk zk kaf ...

  • 小白学习Kafka(一):初识

    前言 刚学了rabbitmq, 怎么突然又开始了kafka? 艺多不压身 <摸着渐渐稀疏的头发> 只有对比才能有更深的理解 起于专业,终于专业 起步 知乎上kafka 推荐书籍?,其中列出 ...

  • Kafka、RabbitMQ、RocketMQ、ActiveMQ 等多个分布式消息队列比较

    本文对Kafka.RabbitMQ.ZeroMQ.RocketMQ.ActiveMQ 综合对比. 一.资料文档 Kafka:中.有kafka作者自己写的书,网上资料也有一些.rabbitmq:多.有一 ...

  • 消息队列ActiveMQ、RocketMQ、RabbitMQ和Kafka如何选择?

    很多年前, 新浪微博的研发负责人TimYang老师在微博架构设计的演讲中,引用了一句话: Databases are specializing – the "one size fits al ...

  • Kafka,RabbitMQ,ZeroMQ,RocketMQ,ActiveMQ消息队列的对比

    本文将从,Kafka.RabbitMQ.ZeroMQ.RocketMQ.ActiveMQ 17 个方面综合对比作为消息队列使用时的差异. 内容目录 一.资料文档 二.开发语言 三.支持的协议 四.消息 ...

  • Redis、Kafka 和 Pulsar 消息队列对比

    刘德恩 云时代架构 一.最基础的队列 最基础的消息队列其实就是一个双端队列,我们可以用双向链表来实现,如下图所示: push_front:添加元素到队首: pop_tail:从队尾取出元素. 有了这样 ...

  • 消息队列之activeMQ

    消息队列之RabbitMQ 消息队列之kafka 1.activeMQ的主要功能 实现高可用.高伸缩.高性能.易用和安全的企业级面向消息服务的系统 异步消息的消费和处理 控制消息的消费顺序 可以和Sp ...

  • 消息队列在RTOS的应用

    传说互联网应用有两大利器,一个是缓存,另一个就是消息队列. 一直相对消息队列做一下梳理,希望早日另有成文. 一叶知秋,实际上消息队列在嵌入式系统中同样有着广泛的应用. 近来致力于IoT和智能硬件,现学 ...

  • 手把手教姐姐写消息队列

    前言 这周姐姐入职了新公司,老板想探探他的底,看了一眼他的简历,呦呵,精通kafka,这小姑娘有两下子,既然这样,那你写一个消息队列吧.因为要用go语言写,这可给姐姐愁坏了.赶紧来求助我,我这么坚贞不 ...

  • C#后台异步消息队列实现

    简介 基于生产者消费者模式,我们可以开发出线程安全的异步消息队列. 知识储备 什么是生产者消费者模式? 为了方便理解,我们暂时将它理解为垃圾的产生到结束的过程. 简单来说,多住户产生垃圾(生产者)将垃 ...

  • RabbitMQ消息队列之Windows下安装和部署(一)

    参考文档: https://jingyan.baidu.com/article/ed15cb1bb5c3411be369819d.html https://blog.csdn.net/hzw19920 ...