Kafka設計要點

2021-07-08 15:48:01 字數 1184 閱讀 7612

(1) 利用os的pagecache

不在程序中維護cache,而是直接寫入磁碟,並定期重新整理到磁碟。

使用程序cache的缺點:增加記憶體佔用量;程序重啟時要麼重建cache(很耗時),要麼以空cache執行(初始效能很差);加重編碼負擔,需要維護cache和磁碟上資料的一致性。

(2) 順序寫磁碟

沒有使用b-tree,因為b-tree的複雜度是o(logn),而在磁碟上的b-tree操作效能更差,每個磁碟一次只能做一次尋道,並行度受限。b-tree讀寫要加鎖,要麼是頁面鎖要麼是行級鎖,否則就要對整棵樹加鎖。

使用順序讀寫。順序讀寫的複雜度是o(1)。順序磁碟讀寫比隨機記憶體讀寫還要快!在順序讀寫時,讀操作和寫操作互相不需要加鎖。

(1) 批量傳送

生產或消費訊息時,批量傳送訊息(message set),減少網路往返時延。

(2) 二進位制的訊息格式

自定義的二進位制訊息格式

(3) 使用sendfile傳送

將磁碟上的檔案傳送到網路上,原始的方法(read + send)需要4次copy(2次dma copy + 2次cpu copy),2次系統呼叫,4次使用者空間與核心空間的切換;linux kernel 2.1版本的sendfile需要3次copy(2次dma copy + 1次cpu copy),1次系統呼叫,2次使用者空間與核心空間的切換;linux kernel 2.4版本的sendfile只需要2次copy(2次dma copy,沒有cpu copy,所謂「零拷貝」)。

(4) 端到端的批量壓縮

將多條訊息一起壓縮,而是每條訊息單獨壓縮。訊息從producer那裡壓縮,在broker上一直保持為壓縮狀態,直到被consumer取走,到達consumer那裡才解壓。

(1) 負載均衡

producer可以指定將訊息發給哪個partition,有多種選擇方式:hash, random, roudrobin,manual。

(2) 非同步傳送

async producer允許將訊息放入緩衝區中,然後定期或定量將訊息批量傳送出去。它的優點是,如果多個producer生產訊息的速度有差別,以緩衝區的方式可以將訊息均勻一致地傳送到網路上。

consumer在消費訊息時,先向broker傳送乙個fetch請求,指明要獲取的訊息的offset和數量,然後接收到乙個響應,包含了批量的訊息。其好處是consumer可以控制需要使用的訊息的位置,進而可以重新消費。

Kafka的配置要點

consumer 負載低的情況下可以每個執行緒消費多個partition。但負載高的情況下,consumer 執行緒數最好和partition數量保持一致。見 四.consumer和partition partition 1天有 1億行可以分8個分割槽,如果每天幾十萬行就乙個分割槽 見 佇列限制 主...

PCB emi設計要點

首先,對於大腦裡面一定要清楚乙個概念 在高頻裡面,自由空間的阻抗是377歐姆,對於一般的emi中的空間輻射來說,是由於訊號的迴路到了可以和空間阻抗相比擬的地步,因而訊號通過空間 輻射 出來。了解了這一點,要做的就是把訊號迴路的阻抗降下來。控制訊號迴路的阻抗,主要的辦法是縮短訊號的長度,減少迴路的面積...

LOGO設計要點

1.logo設計元素提取 不管你是否了解logo設計元素提取是什麼,不管你是不是乙個logo設計新手,做出了乙個logo就一定會用到元素提取,logo設計元素提取是為logo設計收集與企業相關的logo創作可用元素,以便在logo創作的時候可以豐富logo的視覺變現力。2.收集 做logo要去尋找元...