- 目錄
- 前言:
- 1、Kafka是什么
- 2、JMS是什么
- 3、Kafka核心組件(重點)
- 總結:
目錄
前言:
作為流式計算中的一個組件,對于它的組成以及運行的原理,學習者也需要相關的了解。以下主要簡單介紹了kafka是什么以及對應的組件有哪些;除此之外重點介紹了JMS,畢竟JMS也算是Kafka的核心,還是有必要了解一下。
1、Kafka是什么
在流式計算中,Kafka一般用來緩存數據,Storm通過消費Kafka的數據進行計算。
- Apache Kafka是一個開源消息系統,由Scala寫成。是由Apache軟件基金會開發的一個開源消息系統項目。
- Kafka最初是由LinkedIn開發,并于2011年初開源。2012年10月從Apache
Incubator畢業。該項目的目標是為處理實時數據提供一個統一、高通量、低等待的平臺。 - Kafka是一個分布式消息隊列:生產者、消費者的功能。它提供了類似于JMS的特性,但是在設計實現上完全不同,此外它并不是JMS規范的實現。
- Kafka對消息保存時根據Topic進行歸類,發送消息者稱為Producer,消息接受者稱為Consumer,此外kafka集群有多個kafka實例組成,每個實例(server)成為broker。
- 無論是kafka集群,還是producer和consumer都依賴于zookeeper集群保存一些meta信息,來保證系統可用性。
2、JMS是什么
2.1、JMS的基礎
JMS是什么:JMS是Java提供的一套技術規范
JMS干什么用:用來異構系統 集成通信,緩解系統瓶頸,提高系統的伸縮性增強系統用戶體驗,使得系統模塊化和組件化變得可行并更加靈活
總結:為什么需要消息隊列(重要)
消息系統的核心作用就是三點:解耦,異步和并行
通過什么方式:生產消費者模式(生產者、服務器、消費者)
2.2、JMS消息傳輸模型
- 點對點模式(一對一,消費者主動拉取數據,消息收到后消息清除)
點對點模型通常是一個基于拉取或者輪詢的消息傳送模型,這種模型從隊列中請求信息,而不是將消息推送到客戶端。這個模型的特點是發送到隊列的消息被一個且只有一個接收者接收處理,即使有多個消息監聽者也是如此。 - 發布/訂閱模式(一對多,數據生產后,推送給所有訂閱者)
發布訂閱模型則是一個基于推送的消息傳送模型。發布訂閱模型可以有多種不同的訂閱者,臨時訂閱者只在主動監聽主題時才接收消息,而持久訂閱者則監聽主題的所有消息,即時當前訂閱者不可用,處于離線狀態。
2.3、JMS核心組件
Destination:消息發送的目的地,也就是前面說的Queue和Topic。
Message :從字面上就可以看出是被發送的消息。
Producer: 消息的生產者,要發送一個消息,必須通過這個生產者來發送。
MessageConsumer: 與生產者相對應,這是消息的消費者或接收者,通過它來接收一個消息。
Message:
StreamMessage:Java 數據流消息,用標準流操作來順序的填充和讀取。
MapMessage:一個Map類型的消息;名稱為 string 類型,而值為 Java 的基本類型。
TextMessage:普通字符串消息,包含一個String。
ObjectMessage:對象消息,包含一個可序列化的Java 對象
BytesMessage:二進制數組消息,包含一個byte[]。
XMLMessage: 一個XML類型的消息。
最常用的是TextMessage和ObjectMessage。
通過與ConnectionFactory可以獲得一個connection
通過connection可以獲得一個session會話。
3、Kafka核心組件(重點)
- Topic :消息根據Topic進行歸類
- Producer:發送消息者
- Consumer:消息接受者
- broker:每個kafka實例(server)
- Zookeeper:依賴集群保存meta信息。
總結:
本篇文章只是對Kafka做了一個簡單的介紹。通過本篇文章,你只要能知道Kafka的核心組件有哪些以及Kafka是什么就OK;當然能了解JMS更好。下面的文章中會對Kafka做一個深入的介紹。