kafka線上集羣相關配置

1、操作系統、磁盤、磁盤容量和帶寬

     操作系統:linux|windows

     1> I/O模型

          阻塞式I/O、非阻塞式I/O、I/O多路複用、信號驅動I/O和異步I/O。通常後一種模型比前一種模型高級,比如epoll比select好。而kafka客戶端底層使用了java selector,在linux中實現機制是epoll,在windows上是select,所以,在linux上會有更高的I/O性能。

     2> 網絡傳輸效率

          kafka消息保存在磁盤上,而消費者和生產者消息都是通過網絡傳輸的。因此,kafka需要在磁盤和網絡間進行大量數據傳輸。而linux上實現了零拷貝技術。

    磁盤:機械磁盤|固態硬盤

    機械磁盤的優缺點:便宜、隨機讀寫操作慢、易損壞導致可靠性查

    固態硬盤:價格昂貴、隨機讀寫快

    kafka的日誌讀取多是順序讀寫、而且kafka存在分區副本的概念,避免了可靠性差的問題,選擇機械磁盤

    3> 磁盤容量

         需要考慮:新增消息數、單條消息的大小、消息保存時間、備份數、是否壓縮等

         比如:每條消息512kb,每天新增1000條消息,平均保存7天,需要3個broker,不採用壓縮。0.5*1000*7*3 = 10.5G。還需要給索引數據等預留磁盤。

    4> 帶寬

         加入帶寬是1Gbps的千兆網絡,kafka需要每秒處理2000M的數據,那麼需要多少臺服務器部署呢?

         最大帶寬是1Gbps,kafka介於流量峯值和丟包的情況,使用帶寬的2/3。這臺服務器最大的帶寬是700M,還需要根據服務器判斷是否預留出多少資源。假設佔據500M,而副本數是3,則需要2000MT/500M*3 = 12臺

2、集羣參數的配置

      Broker端參數

      1、log.dirs:home/kafka1,home/kafka2  且使這些目錄掛載在不同物理磁盤,能夠提升讀寫性能和故障轉移。

      2、listeners:<協議名,主機名,端口號>

      3、advertised.listeners:<協議名,主機名,端口號>

      類似於內網地址和外網地址,主機名使用IP和主機,選擇主機名。Broker源碼中使用主機名,使用ip,可能出現連接失敗

      4、auto.create.topics.enable:是否允許自動創建主題。

      5、unclean.leader.election.enable:是否允許不一致副本被選舉爲首領副本

      6、auto.leader.rebalance.enable:是否允許定期選舉首領

      7、log.retention.{ms|minutes|hours}:控制數據保存多長時間

      8、log.retention.bytes:指定Broker爲消息保存的總磁盤容量大小

      9、message.max.bytes:控制broker能夠接收的最大消息大小

Topic級別參數:

      Broker類似於一般性的值,對Broker上的所有Topic生效,而Topic則是指定自身的特殊值。

      1、retention.ms:Topic消息保存的時長,默認爲7天

      2、retention.bytes:Topic預留的磁盤空間。默認值爲-1,無限使用磁盤空間

      3、max.message.bytes:決定broker能夠接受的最大的消息大小

      創建Topic和修改Topic時都可以設置

 

參考某平臺《Kafka核心技術與實戰》課程,總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章