<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Kafka中sequence IO、PageCache、SendFile的應用詳解

    VSole2022-08-04 16:29:49

    大家都知道Kafka是將數據存儲于磁盤的,而磁盤讀寫性能往往很差,但Kafka官方測試其數據讀寫速率能達到600M/s,那么為什么Kafka性能會這么高呢?

    首先producer往broker發送消息時,采用batch的方式即批量而非一條一條的發送,這種方式可以有效降低網絡IO的請求次數,提升性能。此外這些批次消息會"暫存"在緩沖池中,避免頻繁的GC問題。批量發送的消息可以進行壓縮并且傳輸的時候可以進行高效的序列化,從而減少數據大小。

    Kafka除了在producer發送消息方面做了很多優化,還有很多其他的優化,比如Kafka利用了sequence IO、PageCache、SendFile這3種處理方案:

    sequence IO

    首先來了解一下磁盤的特性:快速順序讀寫、慢速隨機讀寫。因為磁盤是典型的IO塊設備,每次讀寫都會經歷尋址,其中尋址中尋道是比較耗時的。隨機讀寫會導致尋址時間延長,從而影響磁盤的讀寫速度。

    大家有沒有想過MapReduce進行shuffle的時候,為什么map端和reduce端要進行排序,不排序不也不影響正常業務的處理,排序反而因為消耗資源增加了處理時間?

    以map端為例,執行過程中會產生很多小文件,這些小文件要經歷歸并排序等一系列處理后才會被reduce端進行處理。提前對未合并的文件進行排序正是利用了磁盤快速順序讀寫的特性來提高歸并排序的速度。

    而Kafka在將數據持久化到磁盤時,采用只追加的順序寫,有效降低了尋址時間,提高效率。下圖展示了Kafka寫入數據到partition的方式:

    可以看到Kafka會將數據插入到文件末尾,并且Kafka不會"直接"刪除數據,而是把所有數據保存到磁盤,每個consumer會指定一個offset來記錄自己訂閱的topic的partition中消費的位置。當然我們可以設置策略來清理數據,比如通過參數log.retention.hours指定過期時間,當達到過期時間時,Kafka會清理數據。

    PageCache

    PageCache是系統級別的緩存,它把盡可能多的空閑內存當作磁盤緩存使用來進一步提高IO效率,同時當其他進程申請內存,回收PageCache的代價也很小。

    當上層有寫操作時,操作系統只是將數據寫入PageCache,同時標記Page屬性為Dirty。當讀操作發生時,先從PageCache中查找,如果發生缺頁才進行磁盤調度,最終返回需要的數據。

    PageCache同時可以避免在JVM內部緩存數據,避免不必要的GC、以及內存空間占用。對于In-Process Cache,如果Kafka重啟,它會失效,而操作系統管理的PageCache依然可以繼續使用。

    對應到Kafka生產和消費消息中:

    producer把消息發到broker后,數據并不是直接落入磁盤的,而是先進入PageCache。PageCache中的數據會被內核中的處理線程采用同步或異步的方式寫回到磁盤。

    Consumer消費消息時,會先從PageCache獲取消息,獲取不到才回去磁盤讀取,并且會預讀出一些相鄰的塊放入PageCache,以方便下一次讀取

    如果Kafka producer的生產速率與consumer的消費速率相差不大,那么幾乎只靠對broker PageCache的讀寫就能完成整個生產和消費過程,磁盤訪問非常少。

    SendFile

    傳統的網絡I/O過程:

    1.操作系統從磁盤把數據讀到內核區

    2.用戶進程把數據從內核區copy到用戶區

    3.然后用戶進程再把數據寫入到socket,數據流入內核區的Socket Buffer上

    4.最后把數據從socket Buffer中發送到到網卡,這樣完成一次發送

    可以發現,同一份數據在內核Buffer與用戶Buffer之間拷貝兩次:

    但是通過SendFile(又稱zero copy)優化后,直接把數據從內核區copy到socket,然后發送到網卡,避免了在內核Buffer與用戶Buffer來回拷貝的弊端:

    不僅是Kafka,Java的NIO提供的FileChannle,它的transferTo、transferFrom方法也利用了這種在內核區完成數據傳輸的功能。

    科技新聞kafka
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    據英國科技新聞網站The Register報道稱,麗笙酒店集團(Radisson hotel Group,以下簡稱“麗笙”)已經于10月30日開始向參與其獎勵計劃的會員發出電子郵件,確認了一起黑客攻擊,而這些會員的詳細個人信息可能已經在此次攻擊中遭到泄露。
    美國科技公司谷歌收購了以色列網絡安全初創公司 Siemplify。
    10月27日,中國電子旗下麒麟軟件在2021操作系統產業峰會上正式發布“銀河麒麟V10 SP1”。該產品是適應云計算和移動互聯網進一步普及的發展趨勢,針對網信產業轉型升級的實際需求而推出的升級產品,不僅安全能力得到進一步提升,而且實現融入移動等新特性,達到了中國操作系統的全新高度。
    企業應該了解這些威脅載體,以及向預防和減輕威脅的網絡安全專業人員咨詢網絡安全威脅的預測至關重要。網絡犯罪即服務使不法分子能夠向他人提供黑客服務并收取費用。
    據央視新聞報道,今年以來,在工信部開展的App侵害用戶權益專項整治中,騰訊公司旗下9款產品存在違規行為,共計4批次被公開通報,違反了2021年信息通信業行風糾風相關要求。騰訊公司11月24日下午表示,公司正持續升級App對用戶權益保護的各項措施,并配合監管部門進行正常的合規檢測。
    9月23日,由國務院國資委新聞中心、山東省國資委、濟南市人民政府、經濟參考報社主辦的第六屆中國企業論壇在山東濟南召開。
    在法律上,Amicus三角褲被稱為“ amicus curiae”,拉丁語為“法院之友”。在這種情況下,簡報旨在向WhatsApp提供支持,以說服美國第九巡回上訴法院對NSO的活動負責。迄今為止,科技公司和該案的原判還沒有被這一論點說服。WhatsApp聲稱,這次攻擊違反了美國各州和聯邦法律,包括《 美國計算機欺詐和濫用法》,其目的是禁止NSO Group使用Facebook和WhatsApp服務,并尋求其他未指定的賠償。
    2020年2月,亞馬遜AWS經歷了有史以來最大的DDoS攻擊,峰值流量高達2.3Tbps,超過了2018年3月所記載的1.7Tbps攻擊。2022年2月起,俄烏沖突加劇,沒有硝煙的網絡空間成為新的作戰場域,DDoS攻擊造成眾多關鍵基礎設施和網絡系統癱瘓,嚴重影響社會秩序。2022年7月,巴西大選期間,境內多個政府網站、網絡運營商、教育機構、新聞門戶遭遇目的性強且持續性DDoS攻擊。
    新華三中標中國移動數據中心管理交換機集采項目近日,新華三對外宣布,已成功中標中國移動數據中心管理交換機集采項目。奇安信與吉大正元達成戰略合作7月20日上午,奇安信集團與吉大正元簽署戰略合作協議。雙方表示將結合各自業務優勢,進行能力融合,共同攜手推出全方位解決方案。愛數中標中車時代電氣有限公司相關項目近日,愛數對外公布喜訊,稱已經成功中標中車時代電氣有限公司相關項目。
    截至目前,“科技創新再貸款”支持專區已初步匯聚支持范圍內企業相關數據,包括高新技術企業、“專精特新”中小企業、國家技術創新示范企業、制造業單項冠軍企業等,已提交融資需求近1000億元。“科技創新再貸款”支持專區預計將于2022年5月6日正式向支持對象開放,符合要求的科技創新企業可通過國家產融合作平臺快捷入口提交融資需求,也可在平臺注冊獲取更多金融服務。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类