中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

交河做網(wǎng)站價格windows優(yōu)化大師可靠嗎

交河做網(wǎng)站價格,windows優(yōu)化大師可靠嗎,柳州做網(wǎng)站,單位網(wǎng)站設(shè)計建議書一、Kafka簡介 Kafka是什么 Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)(消息引擎系統(tǒng)),它可以處理消費者在網(wǎng)站中的所有動作流數(shù)據(jù)。 這種動作(網(wǎng)頁瀏覽, 搜索和其他用戶的行動)是在現(xiàn)代網(wǎng)絡(luò)上的許多社…

一、Kafka簡介

Kafka是什么

Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)(消息引擎系統(tǒng)),它可以處理消費者在網(wǎng)站中的所有動作流數(shù)據(jù)。 這種動作(網(wǎng)頁瀏覽,
搜索和其他用戶的行動)是在現(xiàn)代網(wǎng)絡(luò)上的許多社會功能的一個關(guān)鍵因素。 這些數(shù)據(jù)通常是由于吞吐量的要求而通過處理日志和日志聚合來
解決。 對于像Hadoop一樣的日志數(shù)據(jù)和離線分析系統(tǒng),但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop
的并行加載機制來統(tǒng)一線上和離線的消息處理,也是為了通過集群來提供實時的消息。

其實我們簡單點理解就是系統(tǒng)A發(fā)送消息給kafka(消息引擎系統(tǒng)),系統(tǒng)B從kafka中讀取A發(fā)送的消息。而kafka就是個中間商。

1.1 Kafka的特性:

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

  • 可擴展性:kafka集群支持熱擴展

  • 持久性、可靠性:消息被持久化到本地磁盤,并且支持?jǐn)?shù)據(jù)備份防止數(shù)據(jù)丟失

  • 容錯性:允許集群中節(jié)點失敗(若副本數(shù)量為n,則允許n-1個節(jié)點失敗)

  • 高并發(fā):支持?jǐn)?shù)千個客戶端同時讀寫

1.2 Kafka的使用場景:

Kafaka經(jīng)常用于削峰、解耦、異步。

  • 日志收集:一個公司可以用Kafka可以收集各種服務(wù)的log,通過kafka以統(tǒng)一接口服務(wù)的方式開放給各種consumer,例如hadoop、Hbase、Solr等。

  • 消息系統(tǒng):解耦生產(chǎn)者和消費者、緩存消息等。

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

  • 運營指標(biāo):Kafka也經(jīng)常用來記錄運營監(jiān)控數(shù)據(jù)。包括收集各種分布式應(yīng)用的數(shù)據(jù),生產(chǎn)各種操作的集中反饋,比如報警和報告。

  • 流式處理:比如spark streaming和storm

  • 事件源

1.3 Kakfa的設(shè)計思想

Kakfa Broker Leader的選舉:Kakfa Broker集群受Zookeeper管理。所有的Kafka Broker節(jié)點一起去Zookeeper上注冊一個臨時節(jié)點,因為只有一個Kafka Broker會注冊成功,其他的都會失敗,所以這個成功在Zookeeper上注冊臨時節(jié)點的這個Kafka Broker會成為Kafka Broker Controller,其他的Kafka broker叫Kafka Broker follower。(這個過程叫Controller在ZooKeeper注冊Watch)。這個Controller會監(jiān)聽其他的Kafka Broker的所有信息,如果這個kafka broker controller宕機了,在zookeeper上面的那個臨時節(jié)點就會消失,此時所有的kafka broker又會一起去Zookeeper上注冊一個臨時節(jié)點,因為只有一個Kafka Broker會注冊成功,其他的都會失敗,所以這個成功在Zookeeper上注冊臨時節(jié)點的這個Kafka Broker會成為Kafka Broker Controller,其他的Kafka broker叫Kafka Broker follower。例如:一旦有一個broker宕機了,這個kafka broker controller會讀取該宕機broker上所有的partition在zookeeper上的狀態(tài),并選取ISR列表中的一個replica作為partition leader(如果ISR列表中的replica全掛,選一個幸存的replica作為leader; 如果該partition的所有的replica都宕機了,則將新的leader設(shè)置為-1,等待恢復(fù),等待ISR中的任一個Replica“活”過來,并且選它作為Leader;或選擇第一個“活”過來的Replica(不一定是ISR中的)作為Leader),這個broker宕機的事情,kafka controller也會通知zookeeper,zookeeper就會通知其他的kafka broker。

二、Kafka架構(gòu)

Kafka拓?fù)浣Y(jié)構(gòu)

在這里插入圖片描述

在這里插入圖片描述

三、Kafka中的術(shù)語解釋概述

Broker【服務(wù)器節(jié)點】

Kafka 集群包含一個或多個服務(wù)器,服務(wù)器節(jié)點稱為broker。broker存儲topic的數(shù)據(jù)。

  • 如果某topic有N個partition,集群有N個broker,那么每個broker存儲該topic的一個partition。

  • 如果某topic有N個partition,集群有(N+M)個broker,那么其中有N個broker存儲該topic的一個partition,剩下的M個broker不存儲該topic的partition數(shù)據(jù)。

  • 如果某topic有N個partition,集群中broker數(shù)目少于N個,那么一個broker存儲該topic的一個或多個partition。在實際生產(chǎn)環(huán)境中,盡量避免這種情況的發(fā)生,這種情況容易導(dǎo)致Kafka集群數(shù)據(jù)不均衡。

Topic【主題】

每條發(fā)布到Kafka集群的消息都有一個類別,這個類別被稱為Topic。(物理上不同Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存于
一個或多個broker上但用戶只需指定消息的Topic即可生產(chǎn)或消費數(shù)據(jù)而不必關(guān)心數(shù)據(jù)存于何處)。類似于數(shù)據(jù)庫的表名。在每個broker上都
可以創(chuàng)建多個topic。

Partition【分區(qū)】

在這里插入圖片描述

  • topic中的數(shù)據(jù)分割為一個或多個partition。每個topic至少有一個partition。topic的數(shù)據(jù)數(shù)據(jù)會寫入到不同的partition。

  • 每個Partition在物理上對應(yīng)一個文件夾,該文件夾下存儲這個Partition的所有消息和索引文件。

  • partition中的數(shù)據(jù)是有序的,不同partition間的數(shù)據(jù)丟失了數(shù)據(jù)的順序。

  • 如果topic有多個partition,消費數(shù)據(jù)時就不能保證數(shù)據(jù)的順序。

  • 在需要嚴(yán)格保證消息的消費順序的場景下,需要將partition數(shù)目設(shè)為1。

上面說到數(shù)據(jù)會寫入到不同的分區(qū),那kafka為什么要做分區(qū)呢?相信大家應(yīng)該也能猜到,分區(qū)的主要目的是:

  1. 方便擴展。因為一個topic可以有多個partition,所以我們可以通過擴展機器去輕松的應(yīng)對日益增長的數(shù)據(jù)量。

  2. 提高并發(fā)。以partition為讀寫單位,可以多個消費者同時消費數(shù)據(jù),提高了消息的處理效率。

熟悉負(fù)載均衡的朋友應(yīng)該知道,當(dāng)我們向某個服務(wù)器發(fā)送請求的時候,服務(wù)端可能會對請求做一個負(fù)載,將流量分發(fā)到不同的服務(wù)器,那在kafka中,如果某個topic有多個partition,producer又怎么知道該將數(shù)據(jù)發(fā)往哪個partition呢?

kafka中有幾個原則:

  1. partition在寫入的時候可以指定需要寫入的partition,如果有指定,則寫入對應(yīng)的partition。

  2. 如果沒有指定partition,但是設(shè)置了數(shù)據(jù)的key,則會根據(jù)key的值hash出一個partition。

  3. 如果既沒指定partition,又沒有設(shè)置key,則會輪詢選出一個partition。

保證消息不丟失是一個消息隊列中間件的基本保證,那producer在向kafka寫入消息的時候,怎么保證消息不丟失呢?

那就是通過ACK應(yīng)答機制!在生產(chǎn)者向隊列寫入數(shù)據(jù)的時候可以設(shè)置參數(shù)來確定是否確認(rèn)kafka接收到數(shù)據(jù),這個參數(shù)可設(shè)置的值為0、1、all。

  • 0代表producer往集群發(fā)送數(shù)據(jù)不需要等到集群的返回,不確保消息發(fā)送成功。安全性最低但是效率最高。

  • 1代表producer往集群發(fā)送數(shù)據(jù)只要leader應(yīng)答就可以發(fā)送下一條,只確保leader發(fā)送成功。

  • all代表producer往集群發(fā)送數(shù)據(jù)需要所有的follower都完成從leader的同步才會發(fā)送下一條,確保leader發(fā)送成功和所有的副本都完成備份。安全性最高,但是效率最低。

最后要注意的是,如果往不存在的topic寫數(shù)據(jù),能不能寫入成功呢?kafka會自動創(chuàng)建topic,分區(qū)和副本的數(shù)量根據(jù)默認(rèn)配置都是1。

Producer【生產(chǎn)者】

生產(chǎn)者即數(shù)據(jù)的發(fā)布者,該角色將消息發(fā)布到Kafka的topic中。broker接收到生產(chǎn)者發(fā)送的消息后,broker將該消息追加到當(dāng)前用于追加數(shù)據(jù)的segment文件中。生產(chǎn)者發(fā)送的消息,存儲到一個partition中,生產(chǎn)者也可以指定數(shù)據(jù)存儲的partition。

Consumer【消費者】

消費者可以從broker中讀取數(shù)據(jù)。消費者可以消費多個topic中的數(shù)據(jù)。

Consumer Group【消費者組】

每個Consumer屬于一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬于默認(rèn)的group)。

同一個topic下的每個partition中message只能被組(Consumer group )中的一個consumer消費,如果想讓一個message可以被多個consumer消費的話,那么這些consumer必須在不同的Consumer group。所以如果想同時對一個topic做消費的話,啟動多個consumer group就可以了,但是要注意的是,這里的多個consumer的消費都必須是順序讀取partition里面的message,新啟動的consumer默認(rèn)從partition隊列最頭端最新的地方開始阻塞的讀message。它不能像AMQ那樣可以多個BET作為consumer去互斥的(for update悲觀鎖)并發(fā)處理message,這是因為多個BET去消費一個Queue中的數(shù)據(jù)的時候,由于要保證不能多個線程拿同一條message,所以就需要行級別悲觀所(for update),這就導(dǎo)致了consume的性能下降,吞吐量不夠。而kafka為了保證吞吐量,只允許同一個consumer group下的一個consumer線程去訪問一個partition。如果覺得效率不高的時候,可以加partition的數(shù)量來橫向擴展,那么再加新的consumer thread去消費。如果想多個不同的業(yè)務(wù)都需要這個topic的數(shù)據(jù),起多個consumer group就好了,大家都是順序的讀取message,offsite的值互不影響。這樣沒有鎖競爭,充分發(fā)揮了橫向的擴展性,吞吐量極高。這也就形成了分布式消費的概念。

當(dāng)啟動一個consumer group去消費一個topic的時候,無論topic里面有多少個partition,無論我們consumer group里面配置了多少個consumer thread,這個consumer group下面的所有consumer thread一定會消費全部的partition;即便這個consumer group下只有一個consumer thread,那么這個consumer thread也會去消費所有的partition。因此,最優(yōu)的設(shè)計就是,consumer group下的consumer thread的數(shù)量等于partition數(shù)量,這樣效率是最高的。

  • 當(dāng)consumer group里面的consumer數(shù)量小于這個topic下的partition數(shù)量的時候,就會出現(xiàn)一個conusmer thread消費多個partition的情況,總之是這個topic下的partition都會被消費。
  • 如果consumer group里面的consumer數(shù)量等于這個topic下的partition數(shù)量的時候,此時效率是最高的,每個partition都有一個consumer thread去消費。
  • 當(dāng)consumer group里面的consumer數(shù)量大于這個topic下的partition數(shù)量的時候,就會有consumer thread空閑。

多個Consumer Group下的consumer可以消費同一條message,但是這種消費也是以o(1)的方式順序的讀取message去消費,,所以一定會重復(fù)消費這批message的,不能向AMQ那樣多個BET作為consumer消費(對message加鎖,消費的時候不能重復(fù)消費message)

Leader【領(lǐng)導(dǎo)者】

每個partition有多個副本,其中有且僅有一個作為Leader,Leader是當(dāng)前負(fù)責(zé)數(shù)據(jù)的讀寫的partition。

Follower【跟隨者】

  • Follower跟隨Leader,所有寫請求都通過Leader路由,數(shù)據(jù)變更會廣播給所有Follower,Follower與Leader保持?jǐn)?shù)據(jù)同步。
  • 如果Leader失效,則從Follower中選舉出一個新的Leader。
  • 當(dāng)Follower與Leader掛掉、卡住或者同步太慢,leader會把這個follower從“in sync replicas”(ISR)列表中刪除,重新創(chuàng)建一個Follower。

Replica【副本】

每個partition可以在其他的kafka broker節(jié)點上存副本,以便某個kafka broker節(jié)點宕機不會影響這個kafka集群。
存replica副本的方式是按照kafka broker的順序存。
例如有5個kafka broker節(jié)點,某個topic有3個partition,每個partition存2個副本,那么partition1存broker1,broker2,partition2存broker2,broker3。。。以此類推(replica副本數(shù)目不能大于kafka broker節(jié)點的數(shù)目,否則報錯。這里的replica數(shù)其實就是partition的副本總數(shù),其中包括一個leader,其他的就是copy副本)。這樣如果某個broker宕機,其實整個kafka內(nèi)數(shù)據(jù)依然是完整的。但是,replica副本數(shù)越高,系統(tǒng)雖然越穩(wěn)定,但是會帶來資源和性能上的下降;replica副本少的話,也會造成系統(tǒng)丟數(shù)據(jù)的風(fēng)險。

  • 傳送消息:producer先把message發(fā)送到partition leader,再由leader發(fā)送給其他partition follower(如果讓producer發(fā)送給每個replica那就太慢了)。 再向Producer發(fā)送ACK前需要保證有多少個Replica已經(jīng)收到該消息:根據(jù)ack配的個數(shù)而定。

  • 處理某個Replica不工作的情況:如果這個部工作的partition replica不在ack列表中,就是producer在發(fā)送消息到partition leader上,partition leader向partition follower發(fā)送message沒有響應(yīng)而已,這個不會影響整個系統(tǒng),也不會有什么問題。如果這個不工作的partition replica在ack列表中的話,producer發(fā)送的message的時候會等待這個不工作的partition replca寫message成功,但是會等到time out,然后返回失敗因為某個ack列表中的partition replica沒有響應(yīng),此時kafka會自動的把這個部工作的partition replica從ack列表中移除,以后的producer發(fā)送message的時候就不會有這個ack列表下的這個部工作的partition replica了。

  • 處理Failed Replica恢復(fù)回來的情況:如果這個partition replica之前不在ack列表中,那么啟動后重新受Zookeeper管理即可,之后producer發(fā)送message的時候,partition leader會繼續(xù)發(fā)送message到這個partition follower上。如果這個partition replica之前在ack列表中,此時重啟后,需要把這個partition replica再手動加到ack列表中。(ack列表是手動添加的,出現(xiàn)某個部工作的partition replica的時候自動從ack列表中移除的)。

四、Kafka可視化管理工具

【Kafka可視化工具】kafka-manager
kafka-manager安裝及基本使用

【Kafka可視化工具】Offset Explorer
Kafka-Offset Explorer安裝及基本使用

http://www.risenshineclean.com/news/53967.html

相關(guān)文章:

  • 如何承接設(shè)計網(wǎng)站建設(shè)傳媒網(wǎng)站
  • 諸城做網(wǎng)站的公司php視頻轉(zhuǎn)碼
  • 在線直播網(wǎng)站怎么做人民網(wǎng)輿情數(shù)據(jù)中心官網(wǎng)
  • 國外大型網(wǎng)站曹操seo博客
  • 酒泉做網(wǎng)站網(wǎng)站目錄結(jié)構(gòu)
  • 門戶網(wǎng)站建設(shè)工作方案在線優(yōu)化seo
  • 深圳市建設(shè)科技促進中心網(wǎng)站網(wǎng)絡(luò)優(yōu)化網(wǎng)站
  • 做網(wǎng)站的例子設(shè)計網(wǎng)站官網(wǎng)
  • 佛山門戶網(wǎng)站建設(shè)廣告優(yōu)化師怎么學(xué)
  • 做日語字幕的網(wǎng)站杭州關(guān)鍵詞排名系統(tǒng)
  • 做vi的網(wǎng)站廣告門
  • 廣告設(shè)計圖片 門頭windows優(yōu)化大師有用嗎
  • 零度業(yè)務(wù)網(wǎng)站seo學(xué)校培訓(xùn)班
  • 自己做網(wǎng)站要買域名嗎谷歌seo網(wǎng)站推廣怎么做
  • 網(wǎng)站用微信登錄 要怎么做東莞網(wǎng)站優(yōu)化關(guān)鍵詞排名
  • 鄭州企業(yè)網(wǎng)站開發(fā)信陽seo推廣
  • 南寧網(wǎng)站設(shè)計推廣在線網(wǎng)頁服務(wù)器
  • 正能量網(wǎng)站推薦免費下載名詞解釋seo
  • 網(wǎng)站做的圖上傳后字變得很模糊win7一鍵優(yōu)化工具
  • 上海成品網(wǎng)站google推廣一年的費用
  • 沈營商環(huán)境建設(shè)監(jiān)督局網(wǎng)站網(wǎng)站開發(fā)的公司
  • 移動網(wǎng)站設(shè)計方案好的競價推廣托管
  • 網(wǎng)站做301好不好百度app下載安裝官方免費版
  • 做網(wǎng)站如何避免侵權(quán)網(wǎng)絡(luò)營銷的重要性
  • 蘇州做網(wǎng)站多少錢廣告投放平臺系統(tǒng)
  • 購買域名需要注意什么seo關(guān)鍵詞選取工具
  • 網(wǎng)站關(guān)于我們怎么做網(wǎng)絡(luò)營銷策劃需要包括哪些內(nèi)容
  • 程序開發(fā)外包平臺公司百度官網(wǎng)優(yōu)化
  • 做全球視頻網(wǎng)站賺錢嗎英文網(wǎng)站推廣
  • 公司名字大全及寓意seo排名首頁