最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深扒Kafka六大優(yōu)勢,媒體不敢說,那就我來說!

2020-07-27 12:13 作者:微軟MVP-Eleven  | 我要投稿


最近有小伙伴報喜,說終于拿到了鵝廠的Offer,3面時還只問了Kafka的吞吐設(shè)計!今天就給大家展開講一講大熱的Kafka!

容器、Kubernetes、DevOps、微服務(wù)、云原生,這些技術(shù)名詞的頻繁出現(xiàn),預(yù)兆著新的互聯(lián)網(wǎng)技術(shù)時代的到來,大數(shù)據(jù)高并發(fā)將不再遙遠(yuǎn),而是大部分項目都必須具備的能力了,而消息隊列是必備的了。成熟的消息隊列產(chǎn)品很多,說到海量數(shù)據(jù)下高吞吐高并發(fā),Kafka不是針對誰,毋庸置疑的首選!

Kafka介紹


Kafka是一個分布式的基于發(fā)布訂閱的消息隊列,有著無與倫比的消息處理能力,相比與其他消息系統(tǒng),具有以下特性:



高吞吐:普通服務(wù)器每秒幾十萬條消息


低延遲:TB級數(shù)據(jù)延遲最低只有幾毫秒


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


可擴(kuò)展:Kafka集群支持熱擴(kuò)展


可靠性:消息被持久化到本地磁盤


容錯性:允許集群中節(jié)點故障


正是因為Kafka優(yōu)異的表現(xiàn),現(xiàn)在已經(jīng)被廣泛應(yīng)用于海量日志收集、大數(shù)據(jù)處理、流式處理等場景!下面我們來探討下,Kafka到底是如何做到這么高的吞吐量和性能的呢?

頁緩存技術(shù) + 磁盤順序?qū)?/p>


首先,Kafka的消息數(shù)據(jù)是寫在硬盤上的,保證了消息數(shù)據(jù)的可靠性,但寫硬盤還能保證幾十萬條/秒的消息處理速度,是怎么做到的?

因為Kafka在這里有極為優(yōu)秀和出色的設(shè)計!為了保證數(shù)據(jù)的寫入性能,Kafka是基于操作系統(tǒng)的頁緩存來實現(xiàn)文件寫入的。


頁緩存page cache,是操作系統(tǒng)自己管理的內(nèi)存緩存,也叫os cache。寫入消息時,是直接寫入這個頁緩存里,然后由操作系統(tǒng)自己決定什么時候把頁緩存里的數(shù)據(jù)真的刷入磁盤文件中。


這樣一來,消息寫入性能就變成了寫內(nèi)存,不是在寫磁盤,請看下圖。


Kafka高性能寫入的再一個設(shè)計是磁盤順序?qū)?。一般磁盤寫入都是隨機寫,隨便找到文件的某個位置來寫數(shù)據(jù),這樣的性能非常差,但是追加文件末尾按照順序的方式來寫數(shù)據(jù)的話,其寫入性能跟寫內(nèi)存的性能差不多。

總結(jié)下, Kafka在寫數(shù)據(jù)的時候,一方面基于了操作系統(tǒng)的page cache來寫數(shù)據(jù),另一方面是采用磁盤順序?qū)懙姆绞剑蛯崿F(xiàn)了寫入數(shù)據(jù)的超高性能,才能做到在普通服務(wù)器上每秒寫入幾十萬條消息。

零拷貝技術(shù)


解決了寫入問題,那消息讀取呢?頻繁的從磁盤讀數(shù)據(jù)然后發(fā)給消費者,性能又是如何保證的?Kafka為了解決這個問題,在讀數(shù)據(jù)的時候是引入零拷貝技術(shù)。


先看圖1是常規(guī)的硬盤讀寫流程,操作系統(tǒng)讀取硬盤數(shù)據(jù)后放在OS Cache,然后需要拷貝一次到Kafka進(jìn)程,然后Kafka再將數(shù)據(jù)拷貝到Socket緩存才能發(fā)送到網(wǎng)卡,這樣流程的性能當(dāng)然沒有保障。


再看圖2, Kafka的設(shè)計為直接將操作系統(tǒng)OS Cache中的數(shù)據(jù)發(fā)送到網(wǎng)卡,跳過了兩次拷貝數(shù)據(jù)的步驟,Socket緩存中僅僅會拷貝一個描述符過去,不會拷貝數(shù)據(jù)到Socket緩存,大大提升了數(shù)據(jù)讀取性能。


深扒Kafka六大優(yōu)勢,媒體不敢說,那就我來說!的評論 (共 條)

分享到微博請遵守國家法律
美姑县| 呼玛县| 长宁区| 昭苏县| 和田市| 兴海县| 西盟| 元朗区| 吐鲁番市| 和林格尔县| 巢湖市| 上饶县| 东方市| 澎湖县| 黔西县| 通山县| 额尔古纳市| SHOW| 饶平县| 灌南县| 芜湖县| 新干县| 湖北省| 平和县| 文登市| 杂多县| 双牌县| 乌审旗| 奉节县| 阿荣旗| 庆元县| 阿鲁科尔沁旗| 拜城县| 文山县| 阿城市| 三都| 苍山县| 巴塘县| 正镶白旗| 阳朔县| 工布江达县|