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");
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2711437/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解Kafka與ActiveMQ的區別與聯絡!KafkaMQ
- cookie與session的區別與聯絡CookieSession
- Session與Cookie的區別與聯絡SessionCookie
- JRE與JDK的區別與聯絡JDK
- B/S與C/S的聯絡與區別
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- 感知器、logistic與svm 區別與聯絡
- ipv4與ipv6的聯絡與區別
- javaSE中的==和equals的聯絡與區別Java
- 簡述Spring容器與SpringMVC的容器的聯絡與區別SpringMVC
- HDFS 塊和 Input Splits 的區別與聯絡
- 程式和執行緒的區別與聯絡執行緒
- 陣列地址與指標之間的區別與聯絡陣列指標
- KPI vs OKR:區別與聯絡的終極指南KPIOKR
- Vue中watch、computed與methods的聯絡和區別Vue
- 單機、分散式、叢集的區別與聯絡分散式
- equals與==的區別(詳解)
- ActiveMQ基本詳解與總結MQ
- 一文搞懂灰度釋出與 AB Test 的聯絡與區別
- Python中__new__和__init__的區別與聯絡Python
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- synchronized與Lock的區別與使用詳解synchronized
- 詳解資料結構中的“陣列”與程式語言中的“陣列”的區別和聯絡資料結構陣列
- 先驗概率與後驗概率、貝葉斯區別與聯絡
- 詳解iframe與frame的區別
- annotation之context:annotation-config與 context:component-scan的區別與聯絡Context
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- ARM晶片、核心、架構、指令集的聯絡與區別晶片架構
- Unicode,UTF-8和UTF-16的區別與聯絡Unicode
- TCP與UDP區別詳解TCPUDP
- 資料倉儲、資料湖與湖倉一體的區別與聯絡
- cookie和session的詳解與區別CookieSession
- 跟你深入剖析可迭代物件和迭代器的區別與聯絡物件
- `std::packaged_task`、`std::thread` 和 `std::async` 的區別與聯絡Packagethread
- 可觀測性與傳統監控的區別和聯絡
- 【Python入門必看】Python中Cookie和Session的區別與聯絡!PythonCookieSession
- 一篇讓你明白程式與執行緒之間的區別與聯絡執行緒