自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

高速數(shù)據(jù)總線kafka介紹

云計(jì)算 Kafka
本文主要介紹高速數(shù)據(jù)總線kafka,下面,我們就從Kafka的作用、產(chǎn)生背景以及架構(gòu)等方面來(lái)詳細(xì)講解。

1. Kafka的作用

在大數(shù)據(jù)系統(tǒng)中,常常會(huì)碰到一個(gè)問(wèn)題,整個(gè)大數(shù)據(jù)是由各個(gè)子系統(tǒng)組成,數(shù)據(jù)需要在各個(gè)子系統(tǒng)中高性能,低延遲的不停流轉(zhuǎn)。有沒(méi)有一個(gè)系統(tǒng)可以同時(shí)搞定在線應(yīng)用(消息)和離線應(yīng)用(數(shù)據(jù)文件,日志)?這就需要kafka。Kafka可以起到兩個(gè)作用:

  • 降低系統(tǒng)組網(wǎng)復(fù)雜度。
  • 降低編程復(fù)雜度,各個(gè)子系統(tǒng)不在是相互協(xié)商接口,各個(gè)子系統(tǒng)類似插口插在插座上,Kafka承擔(dān)高速數(shù)據(jù)總線的作用。

2. Kafka產(chǎn)生背景

Kafka是Linkedin于2010年12月份開(kāi)源的消息系統(tǒng),它主要用于處理活躍的流式數(shù)據(jù)?;钴S的流式數(shù)據(jù)在web網(wǎng)站應(yīng)用中非常常見(jiàn),這些數(shù)據(jù)包括網(wǎng)站的pv、用戶訪問(wèn)了什么內(nèi)容,搜索了什么內(nèi)容等。 這些數(shù)據(jù)通常以日志的形式記錄下來(lái),然后每隔一段時(shí)間進(jìn)行一次統(tǒng)計(jì)處理。

傳統(tǒng)的日志分析系統(tǒng)提供了一種離線處理日志信息的可擴(kuò)展方案,但若要進(jìn)行實(shí)時(shí)處理,通常會(huì)有較大延遲。而現(xiàn)有的消(隊(duì)列)系統(tǒng)能夠很好的處理實(shí)時(shí)或者近似實(shí)時(shí)的應(yīng)用,但未處理的數(shù)據(jù)通常不會(huì)寫(xiě)到磁盤(pán)上,這對(duì)于Hadoop之類(一小時(shí)或者一天只處理一部分?jǐn)?shù)據(jù))的離線應(yīng)用而言,可能存在問(wèn)題。Kafka正是為了解決以上問(wèn)題而設(shè)計(jì)的,它能夠很好地離線和在線應(yīng)用。

3. Kafka架構(gòu)

Kafka架構(gòu)

  • 生產(chǎn)者(producer):消息和數(shù)據(jù)產(chǎn)生者
  • 代理(Broker):緩存代理
  • 消費(fèi)者(consumer):消息和數(shù)據(jù)消費(fèi)者

架構(gòu)很簡(jiǎn)單,Producer,consumer實(shí)現(xiàn)Kafka注冊(cè)的接口,數(shù)據(jù)從producer發(fā)送到broker,broker承擔(dān)一個(gè)中間緩存和分發(fā)的作用。broker分發(fā)注冊(cè)到系統(tǒng)中的consumer。

4. 設(shè)計(jì)要點(diǎn)

(1) 直接使用linux 文件系統(tǒng)的cache,來(lái)高效緩存數(shù)據(jù)。

(2) 采用linux Zero-Copy提高發(fā)送性能。傳統(tǒng)的數(shù)據(jù)發(fā)送需要發(fā)送4次上下文切換,采用sendfile系統(tǒng)調(diào)用之后,數(shù)據(jù)直接在內(nèi)核態(tài)交換,系統(tǒng)上下文切換減少為2次。根據(jù)測(cè)試結(jié)果,可以提高60%的數(shù)據(jù)發(fā)送性能。Zero-Copy詳細(xì)的技術(shù)細(xì)節(jié)可以參考:https://www.ibm.com/developerworks/linux/library/j-zerocopy/

(3) 數(shù)據(jù)在磁盤(pán)上存取代價(jià)為O(1)。

  • 以topic來(lái)進(jìn)行消息管理,每個(gè)topic包含多個(gè)part(ition),每個(gè)part對(duì)應(yīng)一個(gè)邏輯log,有多個(gè)segment組成。
  • 每個(gè)segment中存儲(chǔ)多條消息(見(jiàn)下圖),消息id由其邏輯位置決定,即從消息id可直接定位到消息的存儲(chǔ)位置,避免id到位置的額外映射。
  • 每個(gè)part在內(nèi)存中對(duì)應(yīng)一個(gè)index,記錄每個(gè)segment中的第一條消息偏移。
  • 發(fā)布者發(fā)到某個(gè)topic的消息會(huì)被均勻的分布到多個(gè)part上(隨機(jī)或根據(jù)用戶指定的回調(diào)函數(shù)進(jìn)行分布),broker收到發(fā)布消息往對(duì)應(yīng)part的最后一個(gè)segment上添加該消息,當(dāng)某個(gè)segment上的消息條數(shù)達(dá)到配置值或消息發(fā)布時(shí)間超過(guò)閾值時(shí),segment上的消息會(huì)被flush到磁盤(pán),只有flush到磁盤(pán)上的消息訂閱者才能訂閱到,segment達(dá)到一定的大小后將不會(huì)再往該segment寫(xiě)數(shù)據(jù),broker會(huì)創(chuàng)建新的segment。

(4) 顯式分布式,即所有的producer、broker和consumer都會(huì)有多個(gè),均為分布式的。Producer和broker之間沒(méi)有負(fù)載均衡機(jī)制。broker和consumer之間利用zookeeper進(jìn)行負(fù)載均衡。所有broker和consumer都會(huì)在zookeeper中進(jìn)行注冊(cè),且zookeeper會(huì)保存他們的一些元數(shù)據(jù)信息。如果某個(gè)broker和consumer發(fā)生了變化,所有其他的broker和consumer都會(huì)得到通知。

5. 類似的系統(tǒng)

RocketMQ:國(guó)內(nèi)淘寶團(tuán)隊(duì)參考開(kāi)源的實(shí)現(xiàn)的消息隊(duì)列,解決了kafka的一些問(wèn)題,如優(yōu)先級(jí)問(wèn)題。

6. 參考資料:

  • http://blog.chinaunix.net/uid-20196318-id-2420884.html
  • http://dongxicheng.org/search-engine/kafka/

【本文為51CTO專欄作者“大數(shù)據(jù)和云計(jì)算”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)微信公眾號(hào)獲取聯(lián)系和授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2021-05-17 16:24:58

Spring Clou

2023-09-27 12:22:50

Kafka架構(gòu)

2016-07-08 10:56:34

華為

2022-11-02 10:08:46

分布式高并發(fā)消息中間件

2023-12-15 18:41:59

Kafka大數(shù)據(jù)消息隊(duì)列

2018-04-10 14:25:30

大數(shù)據(jù)高速公路數(shù)據(jù)存儲(chǔ)

2021-12-14 11:01:44

TCPUDP網(wǎng)絡(luò)協(xié)議

2010-05-05 17:57:44

Unix系統(tǒng)

2010-01-07 09:31:27

Json數(shù)據(jù)異常

2010-07-01 15:58:31

CANopen總線協(xié)議

2023-08-27 21:51:50

Kafka數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)

2010-06-17 23:38:17

CANopen總線協(xié)議

2016-08-02 15:24:40

PCI總線布局

2010-07-01 16:52:19

CAN總線協(xié)議

2010-07-06 16:02:30

HART協(xié)議

2022-03-18 15:29:02

Harmony鴻蒙架構(gòu)

2011-04-01 14:51:37

Oracle數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出

2017-02-13 20:43:36

高速公路大數(shù)據(jù)

2012-08-10 10:34:39

VMware大數(shù)據(jù)云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)