消息隊列的作用以及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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM