Kafka精华问答 | Kafka有哪些使用场景?
Kafka is a distributed,partitioned,replicated commit logservice。它提供了類似于JMS的特性,但是在設(shè)計(jì)實(shí)現(xiàn)上完全不同,此外它并不是JMS規(guī)范的實(shí)現(xiàn)。今天就讓我們一起來看看關(guān)于Kafka 的精華問答吧。
1
Q:Kafka的使用場(chǎng)景
A:?1、Messaging? ?
? ? 對(duì)于一些常規(guī)的消息系統(tǒng),kafka是個(gè)不錯(cuò)的選擇;partitons/replication和容錯(cuò),可以使kafka具有良好的擴(kuò)展性和性能優(yōu)勢(shì).不過到目前為止,我們應(yīng)該很清楚認(rèn)識(shí)到,kafka并沒有提供JMS中的"事務(wù)性""消息傳輸擔(dān)保(消息確認(rèn)機(jī)制)""消息分組"等企業(yè)級(jí)特性;kafka只能使用作為"常規(guī)"的消息系統(tǒng),在一定程度上,尚未確保消息的發(fā)送與接收絕對(duì)可靠(比如,消息重發(fā),消息發(fā)送丟失等)
? ? 2、Websit activity tracking
? ? kafka可以作為"網(wǎng)站活性跟蹤"的最佳工具;可以將網(wǎng)頁/用戶操作等信息發(fā)送到kafka中.并實(shí)時(shí)監(jiān)控,或者離線統(tǒng)計(jì)分析等
? ? 3、Log Aggregation
? ? kafka的特性決定它非常適合作為"日志收集中心";application可以將操作日志"批量""異步"的發(fā)送到kafka集群中,而不是保存在本地或者DB中;kafka可以批量提交消息/壓縮消息等,這對(duì)producer端而言,幾乎感覺不到性能的開支.此時(shí)consumer端可以使hadoop等其他系統(tǒng)化的存儲(chǔ)和分析系統(tǒng).
Q:Kafka有哪些特性?
A:- 高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個(gè)topic可以分多個(gè)partition, consumer group 對(duì)partition進(jìn)行consume操作。
- 可擴(kuò)展性:kafka集群支持熱擴(kuò)展
- 持久性、可靠性:消息被持久化到本地磁盤,并且支持?jǐn)?shù)據(jù)備份防止數(shù)據(jù)丟失
- 容錯(cuò)性:允許集群中節(jié)點(diǎn)失敗(若副本數(shù)量為n,則允許n-1個(gè)節(jié)點(diǎn)失敗)
- 高并發(fā):支持?jǐn)?shù)千個(gè)客戶端同時(shí)讀寫
Q:Kafka存在哪些組件?
A:一個(gè)MQ需要哪些部分?生產(chǎn)、消費(fèi)、消息類別、存儲(chǔ)等等。
? 對(duì)于kafka而言,kafka服務(wù)就像是一個(gè)大的水池。不斷的生產(chǎn)、存儲(chǔ)、消費(fèi)著各種類別的消息。那么kafka由何組成呢?
> Kafka服務(wù):
? > Topic:主題,Kafka處理的消息的不同分類。
? > Broker:消息代理,Kafka集群中的一個(gè)kafka服務(wù)節(jié)點(diǎn)稱為一個(gè)broker,主要存儲(chǔ)消息數(shù)據(jù)。存在硬盤中。每個(gè)topic都是有分區(qū)的。
? > Partition:Topic物理上的分組,一個(gè)topic在broker中被分為1個(gè)或者多個(gè)partition,分區(qū)在創(chuàng)建topic的時(shí)候指定。
? > Message:消息,是通信的基本單位,每個(gè)消息都屬于一個(gè)partition
> Kafka服務(wù)相關(guān)
? > Producer:消息和數(shù)據(jù)的生產(chǎn)者,向Kafka的一個(gè)topic發(fā)布消息。
? > Consumer:消息和數(shù)據(jù)的消費(fèi)者,定于topic并處理其發(fā)布的消息。
? > Zookeeper:協(xié)調(diào)kafka的正常運(yùn)行。
Q:Kafka的主要功能有哪些?
?
A:根據(jù)官網(wǎng)的介紹,ApacheKafka?是一個(gè)分布式流媒體平臺(tái),它主要有3種功能:
1:It lets you publish and subscribe to streams of records.發(fā)布和訂閱消息流,這個(gè)功能類似于消息隊(duì)列,這也是kafka歸類為消息隊(duì)列框架的原因
2:It lets you store streams of records in a fault-tolerant way.以容錯(cuò)的方式記錄消息流,kafka以文件的方式來存儲(chǔ)消息流
3:It lets you process streams of records as they occur.可以再消息發(fā)布的時(shí)候進(jìn)行處理
Q:Kafka存儲(chǔ)策略
A:1)kafka以topic來進(jìn)行消息管理,每個(gè)topic包含多個(gè)partition,每個(gè)partition對(duì)應(yīng)一個(gè)邏輯log,有多個(gè)segment組成。
2)每個(gè)segment中存儲(chǔ)多條消息(見下圖),消息id由其邏輯位置決定,即從消息id可直接定位到消息的存儲(chǔ)位置,避免id到位置的額外映射。
3)每個(gè)part在內(nèi)存中對(duì)應(yīng)一個(gè)index,記錄每個(gè)segment中的第一條消息偏移。
4)發(fā)布者發(fā)到某個(gè)topic的消息會(huì)被均勻的分布到多個(gè)partition上(或根據(jù)用戶指定的路由規(guī)則進(jìn)行分布),broker收到發(fā)布消息往對(duì)應(yīng)partition的最后一個(gè)segment上添加該消息,當(dāng)某個(gè)segment上的消息條數(shù)達(dá)到配置值或消息發(fā)布時(shí)間超過閾值時(shí),segment上的消息會(huì)被flush到磁盤,只有flush到磁盤上的消息訂閱者才能訂閱到,segment達(dá)到一定的大小后將不會(huì)再往該segment寫數(shù)據(jù),broker會(huì)創(chuàng)建新的segment。
小伙伴們沖鴨,后臺(tái)留言區(qū)等著你!
關(guān)于kafka,今天你學(xué)到了什么?還有哪些不懂的?除此還對(duì)哪些話題感興趣?快來留言區(qū)打卡啦!留言方式:打開第XX天,答:……
同時(shí)歡迎大家搜集更多問題,投稿給我們!風(fēng)里雨里留言區(qū)里等你~
福利
1、掃描添加小編微信,備注“姓名+公司職位”,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
2、公眾號(hào)后臺(tái)回復(fù):白皮書,獲取IDC最新數(shù)據(jù)白皮書整理資料!
推薦閱讀:
在線公開課 | 從理論走向?qū)嵺`,多角度詳解Cloud Native
蘋果春季發(fā)布會(huì):庫(kù)克絕不玩別人玩剩下的!
中國(guó)區(qū)塊鏈職業(yè)發(fā)展現(xiàn)狀: 30歲前不做開發(fā); 平均薪資僅38.4萬; 跳槽薪資漲三成 (附完整報(bào)告下載資源)
庫(kù)克談“唱衰蘋果”:一派胡言!
上海交大CV博導(dǎo)微信群辱罵學(xué)生,已停止教學(xué)
李沐團(tuán)隊(duì)新作Gluon,復(fù)現(xiàn)CV經(jīng)典模型到BERT,簡(jiǎn)單好用 | 強(qiáng)烈推薦
日本樂天要求員工學(xué)編程,AI 進(jìn)中小學(xué)課堂,全民編程時(shí)代來了!
喜歡就點(diǎn)擊“在看”吧
總結(jié)
以上是生活随笔為你收集整理的Kafka精华问答 | Kafka有哪些使用场景?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 要长久保持一个家的干净,需要学会哪些家务
- 下一篇: Boost:是否对齐的测试程序