色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文讀懂什么是分布式流處理系統Kafka

馬哥Linux運維 ? 2017-12-12 09:14 ? 次閱讀

什么是Kafka

Kafka是一個分布式流處理系統,流處理系統使它可以像消息隊列一樣publish或者subscribe消息,分布式提供了容錯性,并發處理消息的機制。

Kafka的基本概念

kafka運行在集群上,集群包含一個或多個服務器。kafka把消息存在topic中,每一條消息包含鍵值(key),值(value)和時間戳(timestamp)。

kafka有以下一些基本概念:

Producer - 消息生產者,就是向kafka broker發消息的客戶端。

Consumer - 消息消費者,是消息的使用方,負責消費Kafka服務器上的消息。

Topic - 主題,由用戶定義并配置在Kafka服務器,用于建立Producer和Consumer之間的訂閱關系。生產者發送消息到指定的Topic下,消息者從這個Topic下消費消息。

Partition - 消息分區,一個topic可以分為多個 partition,每個partition是一個有序的隊列。partition中的每條消息都會被分配一個有序的id(offset)。

Broker - 一臺kafka服務器就是一個broker。一個集群由多個broker組成。一個broker可以容納多個topic。

Consumer Group - 消費者分組,用于歸組同類消費者。每個consumer屬于一個特定的consumer group,多個消費者可以共同消息一個Topic下的消息,每個消費者消費其中的部分消息,這些消費者就組成了一個分組,擁有同一個分組名稱,通常也被稱為消費者集群。

Offset - 消息在partition中的偏移量。每一條消息在partition都有唯一的偏移量,消息者可以指定偏移量來指定要消費的消息。

Kafka分布式架構

如上圖所示,kafka將topic中的消息存在不同的partition中。如果存在鍵值(key),消息按照鍵值(key)做分類存在不同的partiition中,如果不存在鍵值(key),消息按照輪詢(Round Robin)機制存在不同的partition中。默認情況下,鍵值(key)決定了一條消息會被存在哪個partition中。

partition中的消息序列是有序的消息序列。kafka在partition使用偏移量(offset)來指定消息的位置。一個topic的一個partition只能被一個consumer group中的一個consumer消費,多個consumer消費同一個partition中的數據是不允許的,但是一個consumer可以消費多個partition中的數據。

kafka將partition的數據復制到不同的broker,提供了partition數據的備份。每一個partition都有一個broker作為leader,若干個broker作為follower。所有的數據讀寫都通過leader所在的服務器進行,并且leader在不同broker之間復制數據。

上圖中,對于Partition 0,broker 1是它的leader,broker 2和broker 3是follower。對于Partition 1,broker 2是它的leader,broker 1和broker 3是follower。

在上圖中,當有Client(也就是Producer)要寫入數據到Partition 0時,會寫入到leader Broker 1,Broker 1再將數據復制到follower Broker 2和Broker 3。

在上圖中,Client向Partition 1中寫入數據時,會寫入到Broker 2,因為Broker 2是Partition 1的Leader,然后Broker 2再將數據復制到follower Broker 1和Broker 3中。

上圖中的topic一共有3個partition,對每個partition的讀寫都由不同的broker處理,因此總的吞吐量得到了提升。

實驗一:kafka-python實現生產者消費者

kafka-python是一個python的Kafka客戶端,可以用來向kafka的topic發送消息、消費消息。

這個實驗會實現一個producer和一個consumer,producer向kafka發送消息,consumer從topic中消費消息。結構如下圖

producer代碼

consumer代碼

接下來創建test topic

打開兩個窗口中,我們在window1中運行producer,如下

在window2中運行consumer,如下

可以看到window2中的consumer成功的讀到了producer寫入的數據

實驗二:消費組實現容錯性機制

這個實驗將展示消費組的容錯性的特點。這個實驗中將創建一個有2個partition的topic,和2個consumer,這2個consumer共同消費同一個topic中的數據。結構如下所示

producer部分代碼和實驗一相同,這里不再重復。consumer需要指定所屬的consumer group,代碼如下

接下來我們創建topic,名字test,設置partition數量為2

打開三個窗口,一個窗口運行producer,還有兩個窗口運行consumer。

運行consumer的兩個窗口的輸出如下:

可以看到兩個consumer同時運行的情況下,它們分別消費不同partition中的數據。window1中的consumer消費partition 0中的數據,window2中的consumer消費parition 1中的數據。

我們嘗試關閉window1中的consumer,可以看到如下結果

剛開始window2中的consumer只消費partition1中的數據,當window1中的consumer退出后,window2中的consumer中也開始消費partition 0中的數據了。

實驗三:offset管理

kafka允許consumer將當前消費的消息的offset提交到kafka中,這樣如果consumer因異常退出后,下次啟動仍然可以從上次記錄的offset開始向后繼續消費消息。

這個實驗的結構和實驗一的結構是一樣的,使用一個producer,一個consumer,test topic的partition數量設為1。

producer的代碼和實驗一中的一樣,這里不再重復。consumer的代碼稍作修改,這里consumer中打印出下一個要被消費的消息的offset。consumer代碼如下

在一個窗口中啟動producer,在另一個窗口并且啟動consumer。consumer的輸出如下

可以嘗試退出consumer,再啟動consumer。每一次重新啟動,consumer都是從offset=98的消息開始消費的。

修改consumer的代碼如下,在consumer消費每一條消息后將offset提交回kafka

啟動consumer

可以看到consumer從offset=98的消息開始消費,到offset=829時,我們Ctrl+C退出consumer。

我們再次啟動consumer

可以看到重新啟動后,consumer從上一次記錄的offset開始繼續消費消息。之后每一次consumer重新啟動,consumer都會從上一次停止的地方繼續開始消費。

本文主要介紹了一下kafka的基本概念,并結合一些實驗幫助理解kafka中的一些難點,如多個consumer的容錯性機制,offset管理。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    84939
  • kafka
    +關注

    關注

    0

    文章

    52

    瀏覽量

    5234

原文標題:Python操作分布式流處理系統Kafka

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分布式軟件系統

    分布式程序設計語言用于編寫運行于分布式計算機系統上的分布式程序。分布式程序由若干個可以獨立執行的程序模塊組成,它們
    發表于 07-22 14:53

    LED分布式原理

    本帖最后由 eehome 于 2013-1-5 09:49 編輯 1. 分布式技術分布式就是:在各并聯支路點均設立獨立恒流源,從而管理、維持、控制支路與整體線路穩定。在使
    發表于 03-09 16:47

    如何設計分布式干擾系統

    什么是分布式干擾系統分布式干擾系統種綜合化、體化、小型化、網絡化和智能化
    發表于 08-08 06:57

    讀懂分布式架構知識體系(內含超全核心知識大圖)

    和修改的能力,隔離性可以防止多個事務并發執行時,由于交叉執行而導致數據的不致;Durabilit:事務處理結束后,對數據的修改就是永久的,即便系統故障也不會丟失。分布式
    發表于 10-23 10:02

    分布式處理器的效率怎么提高?

    3和PSoC 5架構的分布式處理技術示例,該架構由個主CPU(在本例中為8051或ARM Cortex M3)、個DMA引擎、以及通用數字模塊(UDB)陣列構成。UDB可高效用作
    發表于 11-07 07:01

    分布式系統的優勢是什么?

    當討論分布式系統時,我們面臨許多以下這些形容詞所描述的 同類型: 分布式的、刪絡的、并行的、并發的和分散的。分布式處理
    發表于 03-31 09:01

    分布式的優缺點是什么?

     分布式技術就是在需要恒的節點上串接,低壓差線性恒驅動器。低壓差很重要,關系到產品驅動效率。做到恒驅動有很多種,其中低壓差線性恒
    發表于 04-01 09:03

    HarmonyOS鴻蒙操作系統之什么是“基于微內核的全場景分布式操作系統”?

    分布式:這個要提它對應的個詞來看,就是集中式;分布式是負責處理系統資源和控制程序運行。它與集中式操作系統的區別在于資源管理、進程通信和
    發表于 09-23 17:06

    分布式操作系統的相關資料分享

    文章目錄分布式操作系統嵌入操作系統集群操作系統集群系統管理
    發表于 12-22 07:23

    分布式測井曲線自動處理系統的實現

    本文介紹了分布式測井數據自動處理系統的研究與實現;詳細介紹了測井曲線自動處理系統的模塊與組成;論述了分布式并行數據處理,人機交互,神經網絡算
    發表于 06-15 10:34 ?8次下載

    采用DSP芯片的分級分布式管理系統設計

    采用DSP芯片的分級分布式管理系統設計 概述:通過個兩級分布式圖像處理系統中管理計算機的實現,闡述基于DSP的控制電路的設計方法以及對兩
    發表于 03-07 12:58 ?591次閱讀
    采用DSP芯片的分級<b class='flag-5'>分布式</b>管理<b class='flag-5'>系統</b>設計

    大數據環境下的分布式數據處理關鍵技術探析

    的實時處理能力。詳細介紹了組成基于大數據的分布式數據處理系統的四個子系統及其關鍵技術,討論和比較了各個子
    發表于 12-05 19:04 ?0次下載
    大數據環境下的<b class='flag-5'>分布式</b>數據<b class='flag-5'>流</b><b class='flag-5'>處理</b>關鍵技術探析

    分布式的產生與定義

    如果要更好的理解分布式是什么,首先得認識下,什么是集中式處理系統和分散式處理系統。集中式處理系統它主要是把
    的頭像 發表于 12-29 15:22 ?4126次閱讀

    分布式視頻處理系統有什么優勢?

    分布式視頻處理系統作為基于網絡傳輸的新型拼接技術,支持多種顯示系統同時控制,可實現將多種分辨率傳輸到塊超高清大屏上,它在LED小間距屏市場有著很高的滲透率,業內三思航天級品質的LED
    發表于 04-16 15:15 ?2429次閱讀

    分布式發布與訂閱系統Apache Kafka在即將發布的2.8版本

    分布式發布與訂閱系統Apache Kafka在即將發布的2.8版本,使用Kafka內部的Quorum控制器來取代ZooKeeper,因此用戶第
    的頭像 發表于 05-31 09:58 ?1576次閱讀
    主站蜘蛛池模板: 鸭子玩富婆流白浆视频| 色噜噜2017最新综合| 精品国产成人a区在线观看| 超大号黑吊magnet| 国语自产拍在线视频普通话| 好男人社区| 看免费人成va视频全| 久久亚洲国产精品亚洲| 暖暖日本手机免费完整版在线观看| 爽爽窝窝午夜精品一区二区| 伦理片飘花免费影院| 国产69精品麻豆久久久久| 亚洲阿v天堂在线2017| 国产在线播放KKK| 国产精品久久久久永久免费看| 最新无码国产在线视频2020| 在线看片亚洲| 亚洲高清国产拍精品影院| 久久精品国产视频澳门| 国产精品VIDEOSSEX久久发布| 亚洲国产AV一区二区三区四区| 亚洲精品97福利在线| RUNAWAY韩国动漫免费网| 久久久欧美国产精品人妻噜噜| 久亚洲AV无码专区A片| 欧美四虎精品二区免费| 亚洲中文字幕在线精品| 国产亚洲精品久久久久| 日本妈妈在线观看中文字幕| 超碰人热人人热人人看| 老师小扫货水能么多叫出来| 亚洲一区二区三区91| 日本无码毛片久久久九色综合| 九九电影伦理片| ping色堂| 最新亚洲一区二区三区四区| 亚洲人成人77777在线播放| 亚洲高清视频免费| 天天爽夜夜爽| 羞羞影院男女爽爽影院尤物| 五月丁香啪啪.|