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

Kafka快速入門秘籍:背景介紹,應(yīng)用場景分析、核心架構(gòu)分析

開發(fā) 架構(gòu) Kafka
其實這段背景,我們之前介紹RabbitMQ的時候,已經(jīng)說過了,我們這里講kakfa的時候,再把這一段給拿出來,再說明下。

[[278300]]

 一、背景介紹

引言:其實這段背景,我們之前介紹RabbitMQ的時候,已經(jīng)說過了,我們這里講kakfa的時候,再把這一段給拿出來,再說明下。在講實戰(zhàn)前,我們還是有必要講解下理論的,理論為輔,實戰(zhàn)為主,在實戰(zhàn)的基礎(chǔ)上,再深入理解理論,底層原理,底層源碼。下篇文章或者視頻,我們將帶你看官網(wǎng)學習kafka環(huán)境搭建、kafka基本用法、kafka的容錯性測試,在掌握知識的同時,還能順便學習下英文。

1)問題引入:

假設(shè)我們現(xiàn)在需要設(shè)計這樣一個用戶注冊系統(tǒng):用戶注冊完成后,需要給用戶發(fā)送激活郵件,開通用戶賬號,記錄用戶IP、用戶設(shè)備、時間等信息。

起初的設(shè)計:

 

Kafka快速入門秘籍:背景介紹,應(yīng)用場景分析、核心架構(gòu)分析

 

2)但存在的問題是:

由于多個系統(tǒng)強耦合在一起,用戶注冊響應(yīng)會非常慢,嚴重影響了用戶的體驗,當流量大的時候,性能會更差。

3)引入消息中間件:

為了解決上述問題,我們引入消息中間件,來實現(xiàn)系統(tǒng)的解耦,多個系統(tǒng)間通過消息中間件進行異步通信,最終的設(shè)計圖如下:

 

Kafka快速入門秘籍:背景介紹,應(yīng)用場景分析、核心架構(gòu)分析

 

即實現(xiàn)了系統(tǒng)解耦,又提升了系統(tǒng)響應(yīng)的速度

4)消息中間件介紹:

消息中間件(Message Queue Middleware,簡稱MQ)又稱為消息隊列,是指利用高效可靠的消息傳遞機制進行與平臺無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的構(gòu)建。

 

Kafka快速入門秘籍:背景介紹,應(yīng)用場景分析、核心架構(gòu)分析

 

2、應(yīng)用場景分析

1)異步通信

在很多時候,為了加快應(yīng)用系統(tǒng)整體運轉(zhuǎn)速度,并不需要立即響應(yīng)某些請求,消息中間件提供了異步處理機制,允許將一些請求信息放入消息中間件中,但并不立即處理它,而是慢慢處理。在有限資源下,使用消息中間件能夠使系統(tǒng)性能從容倍增!

如:用戶注冊成功的郵件通知;用戶購物下單的信息通知;大數(shù)據(jù)日志收集處理

2)削峰

以防突發(fā)劇增流量瞬間沖垮系統(tǒng),使用消息中間件可以支撐突發(fā)訪問壓力

3)業(yè)務(wù)系統(tǒng)解耦

系統(tǒng)間的耦合關(guān)系太強,會對系統(tǒng)的設(shè)計產(chǎn)生束縛,也會增加系統(tǒng)的復(fù)雜性,通過消息中間件可以更好的設(shè)計系統(tǒng),是一個系統(tǒng)完成指定的功能,而不是將所有的功能融合在同一個系統(tǒng)中。

二、kafka簡介

Kafka作為一種消息中間件,是一種分布式的,基于發(fā)布/訂閱的消息系統(tǒng)。主要設(shè)計目標如下:

以時間復(fù)雜度為O(1)的方式提供消息持久化能力,即使對TB級以上數(shù)據(jù)也能保證常數(shù)時間的訪問性能

高吞吐率。即使在非常廉價的商用機器上也能做到單機支持每秒100K條消息的傳輸

支持Kafka Server間的消息分區(qū),及分布式消費,同時保證每個partition內(nèi)的消息順序傳輸

同時支持離線數(shù)據(jù)處理和實時數(shù)據(jù)處理

1、kafka架構(gòu)

 

Kafka快速入門秘籍:背景介紹,應(yīng)用場景分析、核心架構(gòu)分析

 

名詞解釋:

Broker

一個Kafka集群由一個或多個broker組成。搭建了kafka環(huán)境的服務(wù)器就可以稱為broker。

Topic

Kafka集群上存儲的消息都有一個類別,這個類別被稱為topic。(使用者只需指定消息的topic,即可生產(chǎn)或消費數(shù)據(jù)而不必關(guān)心數(shù)據(jù)存于何處)Topic在邏輯上可以被認為是一個queue。每條消費都必須指定它的topic,可以簡單理解為必須指明把這條消息放進哪個queue里,這與RabbitMQ就有點類似了。

Partition

為了使得Kafka的吞吐率可以水平擴展,物理上又把topic分成一個或多個partition,每個partition在物理上對應(yīng)一個文件夾,該文件夾下存儲這個partition的所有消息和索引文件。創(chuàng)建topic時可指定parition數(shù)量。我們實戰(zhàn)演示的時候,會再次說明。

 

Kafka快速入門秘籍:背景介紹,應(yīng)用場景分析、核心架構(gòu)分析

 

因為每條消息都被append到該partition中,是順序?qū)懘疟P,因此效率非常高(經(jīng)驗證,順序?qū)懘疟P效率比隨機寫內(nèi)存還要高,這是Kafka高吞吐率的一個很重要的保證)。

Producer

負責發(fā)布消息到Kafka broker

Consumer

消費消息。每個consumer屬于一個特定的consumer group(可為每個consumer指定group name,若不指定group name則屬于默認的group)。同一topic的一條消息只能被同一個consumer group內(nèi)的一個consumer消費,但多個consumer group可同時消費這一消息。

三、kafka其它核心概念

1、消息存儲

很多傳統(tǒng)的message queue都會在消息被消費完后將消息刪除,一方面避免重復(fù)消費,另一方面可以保證queue的長度比較少,提高效率。而Kafka集群會保留所有的消息,無論其被消費與否。當然,因為磁盤限制,不可能永久保留所有數(shù)據(jù)(實際上也沒必要),因此Kafka提供兩種策略去刪除舊數(shù)據(jù)。一是基于時間,二是基于partition文件大小。例如可以通過配置$KAFKA_HOME/config/server.properties,讓Kafka刪除一周前的數(shù)據(jù),也可通過配置讓Kafka在partition文件超過1GB時刪除舊數(shù)據(jù)。

2、Consumer Group

每一個consumer實例都屬于一個consumer group,每一條消息只會被同一個consumer group里的一個consumer實例消費。(不同consumer group可以同時消費同一條消息)

Kafka保證的是穩(wěn)定狀態(tài)下每一個consumer實例只會消費某一個或多個特定partition的數(shù)據(jù),而某個partition的數(shù)據(jù)只會被某一個特定的consumer實例所消費。這樣設(shè)計的劣勢是無法讓同一個consumer group里的consumer均勻消費數(shù)據(jù),優(yōu)勢是每個consumer不用都跟大量的broker通信,減少通信開銷,同時也降低了分配難度,實現(xiàn)也更簡單。另外,因為同一個partition里的數(shù)據(jù)是有序的,這種設(shè)計可以保證每個partition里的數(shù)據(jù)也是有序被消費。

3、Consumer Rebalance

Kafka通過Zookeeper管理集群配置,在consumer group發(fā)生變化時(如:某個consumer因故障下線時)進行rebalance。具體含義為:

如果某consumer group中consumer數(shù)量少于partition數(shù)量,則至少有一個consumer會消費多個partition的數(shù)據(jù),

如果consumer的數(shù)量與partition數(shù)量相同,則正好一個consumer消費一個partition的數(shù)據(jù),

而如果consumer的數(shù)量多于partition的數(shù)量時,會有部分consumer無法消費該topic下任何一條消息。

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-06-06 08:18:24

Kafka架構(gòu)應(yīng)用場景

2010-08-31 19:45:26

DHCP server

2013-09-09 15:55:12

SDN應(yīng)用場景

2022-04-10 23:38:33

Redis數(shù)據(jù)結(jié)構(gòu)開發(fā)

2015-08-03 13:36:40

Docker技術(shù)優(yōu)勢應(yīng)用場景

2018-05-25 13:04:21

UES應(yīng)用場景

2010-06-30 17:02:07

靜態(tài)路由

2019-03-27 15:35:35

大數(shù)據(jù)招聘互聯(lián)網(wǎng)

2015-08-04 17:45:54

Docker應(yīng)用

2009-05-18 13:07:44

類隱藏Java關(guān)鍵字

2011-05-16 15:49:58

JAVA

2011-03-07 15:24:17

LBS

2011-06-28 07:45:00

開發(fā)測試云微軟研究院云計算案例

2020-08-14 10:00:34

Node前端應(yīng)用

2014-05-15 09:43:11

CloudaMobile WebANodejs

2015-09-07 09:27:01

分析應(yīng)用場景

2017-09-18 17:59:23

Hadoop數(shù)據(jù)分析

2017-08-07 09:39:52

HBase大數(shù)據(jù)存儲

2023-06-27 13:51:07

FPGA數(shù)據(jù)中心程序

2020-09-10 18:24:00

智能
點贊
收藏

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