91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kafka簡介、基本原理、執行流程與使用場景

發布時間:2020-06-19 15:13:56 來源:網絡 閱讀:672 作者:Java月亮呀 欄目:編程語言

一、簡介

Apache Kafka是分布式發布-訂閱消息系統,在 kafka官網上對 kafka 的定義:一個分布式發布-訂閱消息傳遞系統。 它最初由LinkedIn公司開發,Linkedin于2010年貢獻給了Apache基金會并成為頂級開源項目。Kafka是一種快速、可擴展的、設計內在就是分布式的,分區的和可復制的提交日志服務。

幾種分布式系統消息系統的對比:Kafka簡介、基本原理、執行流程與使用場景

##二、Kafka基本架構
它的架構包括以下組件:

  • 話題(Topic):是特定類型的消息流。消息是字節的有效負載(Payload),話題是消息的分類名或種子(Feed)名;

  • 生產者(Producer):是能夠發布消息到話題的任何對象;

  • 服務代理(Broker):已發布的消息保存在一組服務器中,它們被稱為代理(Broker)或Kafka集群;

  • 消費者(Consumer):可以訂閱一個或多個話題,并從Broker拉數據,從而消費這些已發布的消息;
    Kafka簡介、基本原理、執行流程與使用場景

上圖中可以看出,生產者將數據發送到Broker代理,Broker代理有多個話題topic,消費者從Broker獲取數據。

三、基本原理

我們將消息的發布(publish)稱作 producer,將消息的訂閱(subscribe)表述為 consumer,將中間的存儲陣列稱作 broker(代理),這樣就可以大致描繪出這樣一個場面:Kafka簡介、基本原理、執行流程與使用場景

生產者將數據生產出來,交給 broker 進行存儲,消費者需要消費數據了,就從broker中去拿出數據來,然后完成一系列對數據的處理操作。

乍一看返也太簡單了,不是說了它是分布式嗎,難道把 producer、 broker 和 consumer 放在三臺不同的機器上就算是分布式了嗎。看 kafka 官方給出的圖:Kafka簡介、基本原理、執行流程與使用場景

多個 broker 協同合作,producer 和 consumer 部署在各個業務邏輯中被頻繁的調用,三者通過 zookeeper管理協調請求和轉發。這樣一個高性能的分布式消息發布訂閱系統就完成了。

圖上有個細節需要注意,producer 到 broker 的過程是 push,也就是有數據就推送到 broker,而 consumer 到 broker 的過程是 pull,是通過 consumer 主動去拉數據的,而不是 broker 把數據主懂發送到 consumer 端的。

四、Zookeeper在kafka的作用

上述,提到了Zookeeper,那么Zookeeper在kafka的作用是什么?

(1)無論是kafka集群,還是producer和consumer都依賴于zookeeper來保證系統可用性集群保存一些meta信息。

(2)Kafka使用zookeeper作為其分布式協調框架,很好的將消息生產、消息存儲、消息消費的過程結合在一起。

(3)同時借助zookeeper,kafka能夠生產者、消費者和broker在內的所以組件在無狀態的情況下,建立起生產者和消費者的訂閱關系,并實現生產者與消費者的負載均衡

五、執行流程

首先看一下如下的過程:Kafka簡介、基本原理、執行流程與使用場景

我們看上面的圖,我們把 broker 的數量減少,叧有一臺。現在假設我們按照上圖進行部署:

(1)Server-1 broker 其實就是 kafka 的 server,因為 producer 和 consumer 都要去還它。 Broker 主要還是做存儲用。

(2)Server-2 是 zookeeper 的 server 端,它維持了一張表,記錄了各個節點的 IP、端口等信息。

(3)Server-3、 4、 5 他們的共同之處就是都配置了 zkClient,更明確的說,就是運行前必須配置 zookeeper的地址,道理也很簡單,這之間的連接都是需要 zookeeper 來進行分發的。

(4)Server-1 和 Server-2 的關系,他們可以放在一臺機器上,也可以分開放,zookeeper 也可以配集群。目的是防止某一臺掛了。

簡單說下整個系統運行的順序:

  • 啟動zookeeper 的 server

  • 啟動kafka 的 server

  • Producer 如果生產了數據,會先通過 zookeeper 找到 broker,然后將數據存放到 broker

  • Consumer 如果要消費數據,會先通過 zookeeper 找對應的 broker,然后消費。

六、Kafka的特性

(1)高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個topic可以分多個partition, consumer group 對partition進行consume操作;

(2)可擴展性:kafka集群支持熱擴展;

(3)持久性、可靠性:消息被持久化到本地磁盤,并且支持數據備份防止數據丟失;

(4)容錯性:允許集群中節點失敗(若副本數量為n,則允許n-1個節點失敗);

(5)高并發:支持數千個客戶端同時讀寫;

(6)支持實時在線處理和離線處理:可以使用Storm這種實時流處理系統對消息進行實時進行處理,同時還可以使用Hadoop這種批處理系統進行離線處理;

七、Kafka的使用場景

(1)日志收集:一個公司可以用Kafka可以收集各種服務的log,通過kafka以統一接口服務的方式開放給各種consumer,例如Hadoop、Hbase、Solr等;

(2)消息系統:解耦和生產者和消費者、緩存消息等;

(3)用戶活動跟蹤:Kafka經常被用來記錄web用戶或者app用戶的各種活動,如瀏覽網頁、搜索、點擊等活動,這些活動信息被各個服務器發布到kafka的topic中,然后訂閱者通過訂閱這些topic來做實時的監控分析,或者裝載到Hadoop、數據倉庫中做離線分析和挖掘;

(4)運營指標:Kafka也經常用來記錄運營監控數據。包括收集各種分布式應用的數據,生產各種操作的集中反饋,比如報警和報告;

(5)流式處理:比如spark streaming和storm;

(6)事件源;

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柯坪县| 含山县| 澜沧| 南木林县| 昌乐县| 逊克县| 大石桥市| 凌海市| 黎城县| 家居| 丰原市| 和政县| 拉孜县| 青州市| 三江| 太和县| 沾益县| 吉安县| 深泽县| 汕尾市| 沙湾县| 沾化县| 措勤县| 洪洞县| 会昌县| 海口市| 青川县| 韩城市| 和静县| 河北省| 玉龙| 个旧市| 尼勒克县| 朝阳区| 土默特右旗| 南投市| 丹巴县| 云阳县| 德安县| 广灵县| 枣阳市|