消息隊列的作用以及kafka和activemq的對比

来源:https://www.cnblogs.com/yuhan-Hanny/archive/2019/10/11/11657755.html
-Advertisement-
Play Games

背景分析 消息隊列這個類型的組件一直是非常重要的組件,當經過兩家企業後我就很堅信這個結論了。隊列這種東西,最廣泛的作用還是在於解耦,寬泛一點的說,它可以將不同部門的工作內容進行有效的整合,基於一個約定好的格式,就可以兩頭互相不幹擾的進行開發。可以說這個生產消費的思想不僅僅適用於程式也適用於非常多的地 ...


背景分析

消息隊列這個類型的組件一直是非常重要的組件,當經過兩家企業後我就很堅信這個結論了。隊列這種東西,最廣泛的作用還是在於解耦,寬泛一點的說,它可以將不同部門的工作內容進行有效的整合,基於一個約定好的格式,就可以兩頭互相不幹擾的進行開發。可以說這個生產消費的思想不僅僅適用於程式也適用於非常多的地方。
目前對於我看到的來說,kafka更多的還是做為一個數據源,數據橋梁的作用,不同業務之間的溝通。比如需要實時接入A部門的業務數據的話,就會有這樣的手段:

 

 

 

落地到HDFS的數據會用來進行一些演算法上的離線處理,而kafka端則是給需要實時性的消費方。其實數據的消費方式無非也就實時和離線兩種方式。

Kafka和activemq對比

相比過去經常使用的activemq,kafka確實非常的不同,做一個對比來深化印象

對比ActivemqKafka
介面協議 遵守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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi Linux。 「運維之美」是一個有情懷、有態度,專註於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和發佈最前沿的科技信息。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第一 ...
  • 這個模型是經過簡單訓練,只能識別四個英文字母:ABCD,是我為了提取答案才訓練的,因為科大,百度,以及騰訊的識別不是很準,所以自己訓練自己使用,希望能夠給你帶來方便。下麵是訓練好的model,如多你感覺圖片的類型相似,可直接使用。 1、圖片形式,儘量png 2、模型 如果需要可以加我qq:18519 ...
  • 問題描述:zabbix編譯安裝時PHP條件檢查失敗,如下圖: 解決辦法: 1.PHP自帶bcmath擴展模塊,可直接進行編譯安裝。 [root@localhost etc]# cd /usr/local/src/php-7.2.23/ext/bcmath/ ##進入解壓的源碼包目錄 2.執行 /us ...
  • centos7.x 將普通用戶加入sudoers中,獲取sudo執行許可權 0 問題由來   你在提起興緻學習的時候,興衝衝地往黑洞洞的文本視窗輸入下一行:   按照系統驗證需求,你輸入用戶密碼,結果返回的是冰冷的一串錯誤信息: pan is not in th ...
  • 網上搜的源,什麼阿裡雲163等等的,都不支持arm64 執行以下代碼,使用華為源 ...
  • "點我查看秘籍連載" 操作系統的服務埠:系統調用 用戶進程工作在用戶態,它是受限的,很多涉及到硬體的操作都無法執行,但是它們又想要取得結果,就只能請求工作在內核態的操作系統幫助完成這些操作,並將操作結果交給用戶進程。 系統調用 (system call)就是操作系統提供給用戶進程請求操作系統做一些 ...
  • 安裝最簡單的環境: apt-get install gnome-shell apt-get install gnome-panel apt-get install gnome-menus apt-get install gnome-session apt-get install gdm 安裝vncs ...
  • Samba服務: 本內容為samba服務學習者提供參考 案例描述: 某公司的管理員需要搭建SAMBA伺服器,IP地址及允許的訪問網段自定義。SAMBA伺服器的安全級別為user級,所在工作組為WORKGROUP,使添加的用戶可以訪問其個人目錄及共用目錄/smb_share,並可以對目錄讀、寫、執行。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...