訊息佇列的作用以及kafka和activemq的對比
記錄下平時使用kafka的姿勢。
背景分析
訊息佇列這個型別的元件一直是非常重要的元件,當經過兩家企業後我就很堅信這個結論了。佇列這種東西,最廣泛的作用還是在於解耦,寬泛一點的說,它可以將不同部門的工作內容進行有效的整合,基於一個約定好的格式,就可以兩頭互相不干擾的進行開發。可以說這個生產消費的思想不僅僅適用於程式也適用於非常多的地方。
目前對於我看到的來說,kafka更多的還是做為一個資料來源,資料橋樑的作用,不同業務之間的溝通。比如需要實時接入A部門的業務資料的話,就會有這樣的手段:
落地到HDFS的資料會用來進行一些演算法上的離線處理,而kafka端則是給需要實時性的消費方。其實資料的消費方式無非也就實時和離線兩種方式。
Kafka和activemq對比
相比過去經常使用的activemq,kafka確實非常的不同,做一個對比來深化印象
對比 | Activemq | Kafka |
---|---|---|
介面協議 | 遵守JMS規範,各語言支援較好 | 沒有遵循標準MQ介面協議,使用較為複雜 |
吞吐量 | 較低,磁碟隨機讀寫 | 較高,磁碟順序讀寫 |
遊標位置 | AMQ來管理,無法讀取歷史資料 | 客戶端自己管理,不樂意甚至重新讀一遍也行 |
HA機制 | 主從複製,競爭鎖的方式來選舉新的主節點 | 和hadoop系列產品一樣,由zk管理所有節點 |
說到底,主要還是做為kafka的消費方,能感受到最大的不同還是在於幾個:
- 吞吐量確實非常高
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 --describe
相關文章
- RabbitMQ,RocketMQ,Kafka 幾種訊息佇列的對比MQKafka佇列
- 訊息佇列之 ActiveMQ佇列MQ
- 訊息佇列ActiveMQ的使用詳解佇列MQ
- Kafka訊息佇列Kafka佇列
- kafka 訊息佇列Kafka佇列
- 訊息佇列效能對比佇列
- 訊息佇列之JMS和AMQP對比佇列MQ
- 溫故之訊息佇列ActiveMQ佇列MQ
- 訊息佇列之 Kafka佇列Kafka
- 訊息佇列的作用是啥佇列
- “簡單”的訊息佇列與kafka佇列Kafka
- 訊息佇列之事務訊息,RocketMQ 和 Kafka 是如何做的?佇列MQKafka
- PHP Kafka 訊息佇列使用PHPKafka佇列
- 訊息佇列概念與作用佇列
- 訊息佇列的使用場景之kafka佇列Kafka
- Java訊息佇列總結只需一篇解決ActiveMQ、RabbitMQ、ZeroMQ、KafkaJava佇列MQKafka
- MQ 訊息佇列 比較MQ佇列
- 訊息佇列Kafka學習總結佇列Kafka
- 誰才是最快的訊息佇列:ActiveMQ, RabbitMQ, HornetQ, QPID佇列MQ
- 【RocketMq】什麼是,對比ActiveMq和KafkaMQKafka
- Python中執行緒的MQ訊息佇列實現以及訊息佇列的優點解析Python執行緒MQ佇列
- CentOS 7.0 安裝配置 kafka 訊息佇列CentOSKafka佇列
- 快速理解Kafka分散式訊息佇列框架Kafka分散式佇列框架
- 訊息佇列之非同步訊息的基本概念以及ActiveMQ整合Spring的常用用法介紹 | 掘金技術徵文佇列非同步MQSpring
- KMQ:基於Apache Kafka的可靠性訊息佇列MQApacheKafka佇列
- Java訊息佇列:RabbitMQ與Kafka的整合與應用Java佇列MQKafka
- 阿里雲訊息佇列 Kafka-訊息檢索實踐阿里佇列Kafka
- 訊息佇列系列一:訊息佇列應用佇列
- 訊息佇列Kafka「檢索元件」重磅上線!佇列Kafka元件
- KOA + egg.js 整合 kafka 訊息佇列JSKafka佇列
- 技術分享| 訊息佇列Kafka群集部署佇列Kafka
- Kafka、RabbitMQ、RocketMQ訊息中介軟體的對比 —— 訊息傳送效能KafkaMQ
- Kafka,Mq和Redis作為訊息佇列使用時的差異有哪些KafkaMQRedis佇列
- 訊息佇列之Kafka——從架構技術重新理解Kafka佇列Kafka架構
- 訊息佇列佇列
- 訊息佇列中的Oracle佇列Oracle
- Laravel 的訊息佇列剖析Laravel佇列
- 服務網格Service Mesh、API閘道器和訊息佇列的對比 - Wolfram HempelAPI佇列