華為云計(jì)算 云知識 Kafka應(yīng)用場景
Kafka應(yīng)用場景

Kafka作為一款熱門的消息隊(duì)列中間件,具備高效可靠的消息異步傳遞機(jī)制,主要用于不同系統(tǒng)間的數(shù)據(jù)交流和傳遞,在企業(yè)解決方案、金融支付、電信、電子商務(wù)、社交、即時通信、視頻、物聯(lián)網(wǎng)、車聯(lián)網(wǎng)等眾多領(lǐng)域都有廣泛應(yīng)用。

異步通信

將業(yè)務(wù)中屬于非核心或不重要的流程部分,使用消息異步通知的方式發(fā)給目標(biāo)系統(tǒng),這樣主業(yè)務(wù)流程無需同步等待其他系統(tǒng)的處理結(jié)果,從而達(dá)到系統(tǒng)快速響應(yīng)的目的。

如網(wǎng)站的用戶注冊場景,在用戶注冊成功后,還需要發(fā)送注冊郵件與注冊短信,這兩個流程使用Kafka消息服務(wù)通知郵件發(fā)送系統(tǒng)與短信發(fā)送系統(tǒng),從而提升注冊流程的響應(yīng)速度。

圖1串行發(fā)送注冊郵件與短信流程

Kafka應(yīng)用場景1

圖2借助消息隊(duì)列異步發(fā)送注冊郵件與短信流程

Kafka應(yīng)用場景2

錯峰流控與流量削峰

在電子商務(wù)系統(tǒng)或大型網(wǎng)站中,上下游系統(tǒng)處理能力存在差異,處理能力高的上游系統(tǒng)的突發(fā)流量可能會對處理能力低的某些下游系統(tǒng)造成沖擊,需要提高系統(tǒng)的可用性的同時降低系統(tǒng)實(shí)現(xiàn)的復(fù)雜性。電商大促銷等流量洪流突然來襲時,可以通過隊(duì)列服務(wù)堆積緩存訂單等信息,在下游系統(tǒng)有能力處理消息的時候再處理,避免下游訂閱系統(tǒng)因突發(fā)流量崩潰。消息隊(duì)列提供億級消息堆積能力,3天的默認(rèn)保留時長,消息消費(fèi)系統(tǒng)可以錯峰進(jìn)行消息處理。

另外,在商品秒殺、搶購等流量短時間內(nèi)暴增場景中,為了防止后端應(yīng)用被壓垮,可在前后端系統(tǒng)間使用Kafka消息隊(duì)列傳遞請求。

圖3消息隊(duì)列應(yīng)對秒殺大流量場景

Kafka應(yīng)用場景3

日志同步

在大型業(yè)務(wù)系統(tǒng)設(shè)計(jì)中,為了快速定位問題,全鏈路追蹤日志,以及故障及時預(yù)警監(jiān)控,通常需要將各系統(tǒng)應(yīng)用的日志集中分析處理。

Kafka設(shè)計(jì)初衷就是為了應(yīng)對大量日志傳輸場景,應(yīng)用通過可靠異步方式將日志消息同步到消息服務(wù),再通過其他組件對日志做實(shí)時或離線分析,也可用于關(guān)鍵日志信息收集進(jìn)行應(yīng)用監(jiān)控。

日志同步主要有三個關(guān)鍵部分:日志采集客戶端,Kafka消息隊(duì)列以及后端的日志處理應(yīng)用。

1.日志采集客戶端,負(fù)責(zé)用戶各類應(yīng)用服務(wù)的日志數(shù)據(jù)采集,以消息方式將日志“批量”“異步”發(fā)送Kafka客戶端。

Kafka客戶端批量提交和壓縮消息,對應(yīng)用服務(wù)的性能影響非常小。

2.Kafka將日志存儲在消息文件中,提供持久化。

3.日志處理應(yīng)用,如Logstash,訂閱并消費(fèi)Kafka中的日志消息,最終供文件搜索服務(wù)檢索日志,或者由Kafka將消息傳遞給Hadoop等其他 大數(shù)據(jù) 應(yīng)用系統(tǒng)化存儲與分析。

圖4日志同步示意圖

Kafka應(yīng)用場景4