博翔科技為專業機械設備歐規/台灣TS標章/美規及半導體設備SEMI S2輔導顧問公司

博翔對於各類機械的安全技術 安全開關 安全模組 安全繼電器模組 安全繼電器 緊急停止 安全元件 歐盟電路設計 安全迴路 安全設計

由於科技的進步,各種無線通訊設備及數位裝置技術的高度發展,電磁干擾已成為電子時代中世界各國關注的問題。

機械產品的製造為迎向消費市場需求,亦朝向高速度、高精度、自動化且大量使用數值控制而使機械產品電磁干擾問題更加複雜

而博翔科技協助您解決相關安全技術問題以專業級檢測與規畫經驗並協助各種機械廠快速獲得相關認證

邀請您一起邁向世界的安全技術頂端

請立即點擊上方圖片了解更多細節吧!

 

好文分享

 

afka 是高吞吐低延遲的高並發、高性能的消息中間件,在大數據領域有極為廣泛的運用。配置良好的 Kafka 集群甚至可以做到每秒幾十萬、上百萬的超高並發寫入。 那麼 Kafka 到底是如何做到這麼高的吞吐量和性能的呢?這篇文章我們來詳細說一下。 頁緩存技術 + 磁碟順序寫 首先 Kafka 每次接收到數據都會往磁碟上去寫,如下圖所示: ... 那麼在這裡我們不禁有一個疑問了,如果把數據基於磁碟來存儲,頻繁的往磁碟文件里寫數據,這個性能會不會很差?大家肯定都覺得磁碟寫性能是極差的。 沒錯,要是真的跟上面那個圖那麼簡單的話,那確實這個性能是比較差的。 但是實際上 Kafka 在這裡有極為優秀和出色的設計,就是為了保證數據寫入性能,首先 Kafka 是基於作業系統的頁緩存來實現文件寫入的。 作業系統本身有一層緩存,叫做 Page Cache,是在內存里的緩存,我們也可以稱之為 OS Cache,意思就是作業系統自己管理的緩存。對大數據以及人工智慧概念都是模糊不清的,該按照什麼線路去學習,學完往哪方面發展,想深入了解,想學習的同學歡迎加入大數據學習扣群:數據515—269+數字485,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大數據講師給大家免費授課,給大家分享目前國內最完整的大數據高端實戰實用學習流程體系 。從java和linux入手,其後逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相關知識一一分享! 你在寫入磁碟文件的時候,可以直接寫入這個 OS Cache 里,也就是僅僅寫入內存中,接下來由作業系統自己決定什麼時候把 OS Cache 里的數據真的刷入磁碟文件中。 僅僅這一個步驟,就可以將磁碟文件寫性能提升很多了,因為其實這裡相當於是在寫內存,不是在寫磁碟,大家看下圖: ... image 接著另外一個就是 kafka 寫數據的時候,非常關鍵的一點,它是以磁碟順序寫的方式來寫的。 也就是說,僅僅將數據追加到文件的末尾,不是在文件的隨機位置來修改數據。 普通的機械磁碟如果你要是隨機寫的話,確實性能極差,也就是隨便找到文件的某個位置來寫數據。 但是如果你是追加文件末尾按照順序的方式來寫數據的話,那麼這種磁碟順序寫的性能基本上可以跟寫內存的性能本身也是差不多的。 所以大家就知道了,上面那個圖裡,Kafka 在寫數據的時候,一方面基於 OS 層面的 Page Cache 來寫數據,所以性能很高,本質就是在寫內存罷了。 另外一個,它是採用磁碟順序寫的方式,所以即使數據刷入磁碟的時候,性能也是極高的,也跟寫內存是差不多的。 基於上面兩點,Kafka 就實現了寫入數據的超高性能。那麼大家想想,假如說 Kafka 寫入一條數據要耗費 1 毫秒的時間,那麼是不是每秒就是可以寫入 1000 條數據? 但是假如 Kafka 的性能極高,寫入一條數據僅僅耗費 0.01 毫秒呢?那麼每秒是不是就可以寫入 10 萬條數據? 所以要保證每秒寫入幾萬甚至幾十萬條數據的核心點,就是盡最大可能提升每條數據寫入的性能,這樣就可以在單位時間內寫入更多的數據量,提升吞吐量。 零拷貝技術 說完了寫入這塊,再來談談消費這塊。 大家應該都知道,從 Kafka 里我們經常要消費數據,那麼消費的時候實際上就是要從 Kafka 的磁碟文件里讀取某條數據然後發送給下游的消費者,如下圖所示: ... image 那麼這裡如果頻繁的從磁碟讀數據然後發給消費者,性能瓶頸在哪裡呢? 假設要是 Kafka 什麼優化都不做,就是很簡單的從磁碟讀數據發送給下游的消費者,那麼大概過程如下所示: 先看看要讀的數據在不在 OS Cache 里,如果不在的話就從磁碟文件里讀取數據後放入 OS Cache。 接著從作業系統的 OS Cache 里拷貝數據到應用程式進程的緩存里,再從應用程式進程的緩存里拷貝數據到作業系統層面的 Socket 緩存里。 最後從 Socket 緩存里提取數據後發送到網卡,最後發送出去給下游消費。 整個過程,如下圖所示: ... image 大家看上圖,很明顯可以看到有兩次沒必要的拷貝吧!一次是從作業系統的 Cache 里拷貝到應用進程的緩存里,接著又從應用程式緩存里拷貝回作業系統的 Socket 緩存里。 而且為了進行這兩次拷貝,中間還發生了好幾次上下文切換,一會兒是應用程式在執行,一會兒上下文切換到作業系統來執行。 所以這種方式來讀取數據是比較消耗性能的。Kafka 為了解決這個問題,在讀數據的時候是引入零拷貝技術。 也就是說,直接讓作業系統的 Cache 中的數據發送到網卡後傳輸給下游的消費者,中間跳過了兩次拷貝數據的步驟,Socket 緩存中僅僅會拷貝一個描述符過去,不會拷貝數據到 Socket 緩存。 大家看下圖,體會一下這個精妙的過程: ... ... 通過零拷貝技術,就不需要把 OS Cache 里的數據拷貝到應用緩存,再從應用緩存拷貝到 Socket 緩存了,兩次拷貝都省略了,所以叫做零拷貝。 對 Socket 緩存僅僅就是拷貝數據的描述符過去,然後數據就直接從 OS Cache 中發送到網卡上去了,這個過程大大的提升了數據消費時讀取文件數據的性能。 而且大家會注意到,在從磁碟讀數據的時候,會先看看 OS Cache 內存中是否有,如果有的話,其實讀數據都是直接讀內存的。 如果 Kafka 集群經過良好的調優,大家會發現大量的數據都是直接寫入 OS Cache 中,然後讀數據的時候也是從 OS Cache 中讀。 相當於是 Kafka 完全基於內存提供數據的寫和讀了,所以這個整體性能會極其的高。想要學習提升的可以加群:810-589-193一起探討技術,學習,提升自己,免費獲取更多相關學習資料,覺得小編這個分享對大家有幫助可以轉發分享,希望這些知識點可以幫助在這個行業發展的朋友和夥伴們,把有限的時間,真正放在學習和前進上。 作者:java伯爵 連結:https://www.jianshu.com/p/625d44c59549 來源:簡書 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

 

TTT77941YYDDEE156365GG

 

 

文章來源取自於:

 

 

 

每日頭條 https://kknews.cc/tech/b3en2e9.html

 

 

如有侵權,請來信告知,我們會立刻下架。

 

 

DMCA:dmca(at)kubonews.com

 

 

聯絡我們:contact(at)kubonews.com

 


台中烤箱/微波爐符合歐盟歐規電路設計新竹烘碗/洗碗符合歐盟歐規電路設計新竹滾筒洗衣機安全迴路設計桃園接頭中繼接線盒(無效化終端)設計與電路設計台中HS7A-DMP型非接觸式安全開關
台北HS3A型非接觸式安全開關 高雄HS1C-K型鑰匙互鎖型安全開關 安全繼電器模組客製化設計的CE認證公司台北刮鬍刀安全迴路設計 新竹除濕機安全迴路設計 警示貼紙製作批發與設計新竹HW系列緊急停止用按鈕開關﹝一體型﹞ 台南料理電器安全迴路設計 與螺絲端子不同,不需要定期重新鎖緊台北安全驅動器設計與電路設計 台中安全限動開關設計與電路設計 安全繼電器模組客製化設計的CE認證公司

 

arrow
arrow
    全站熱搜

    模動世界 發表在 痞客邦 留言(0) 人氣()