免费一级片在线观看_国产一级高清视频_99riav视频_91av视频导航

首頁 > 通信 > 正文
分享到:

深刻理解 | 以通信方式操作副本,共享內存方式通信就是操作信息本身

時間:2022-11-03 11:14:36 來源: 評論:0 點擊:0
  題目是一句golang編程箴言,對它的理解可大可小。

  往小了說,golang建議使用channel來共享信息而不是使用共享內存,這是一種優雅的方式,避免了數據同步帶來的繁瑣和低效。

  往大了說,本質上還是讓 資源去調度請求,而不是讓 請求去調度資源。

  有些時候,思維的轉變,問題的視角,會帶來意想不到的收獲

  資源就那么多,所有請求有序使用資源的方式就是通信的方式,反過來,為每個請求虛擬出它獨占資源的假象,那就是共享的方式。兩種截然不同的方式,差異體現在仲裁成本,這個成本決定了它們承載并發的能力。

  一個一個說。

  電路交換 vs 分組交換

  

 

  電路交換試圖占有整條電路(其實是最后一公里),若不成功,必須等到成功。

  分組交換將長信息分割成若干小數據包,小數據包統計復用鏈路。

  批處理系統 vs 分時系統

  批處理用戶一旦使用系統,則會獨占系統到任務完成,其它用戶等待。

  分時系統將時間分片,多用戶被調度復用時間片。

  CSMA/CD vs 交換式以太網

  CSMA/CD主機試圖獨占總線發送數據包,若不成功便退避直到成功。

  交換式以太網數據包在交換機有序排隊,復用buffer。

  Apache vs Nginx

  Apache為每一個請求生成一個task,該task一旦獲得CPU,其它task將等待。

  Nginx采用異步模型,所有請求分時復用固定數量task的CPU時間。

  共享內存 vs erlang/go channel

  共享內存對寫寫以及讀寫是互斥,每次只允許一個操作,其它不得不等待,重試。

  erlang/go channel將內容拆解為事務消息,依靠消息的有序傳遞共享信息。

  ...

  我們來看上述兩兩比較的共性。

  可將上述所有的二者抽象為爭搶模式和有序模式:

  對于 爭搶模式 ,本質上需要對沖突進行仲裁。

  對于 有序模式 ,本質上需要對并發進行調度。

  所謂對沖突進行仲裁,意思就是發生沖突后怎么辦。無論是退避重試,還是等待,此期間均是什么都做不了,且仲裁本身需要昂貴的成本。

  并發調度就會好太多,有序化便無沖突,也就沒有仲裁成本了,沒有了仲裁,也就無需重試,等待,便可以干別的了,處理完全異步化。

  我們再來對比之前技術優劣:

  電路交換 vs 分組交換

  電路交換一旦占線,你需要自己不斷重試。

  分組交換你只管發數據包,交換節點會自動調度這些數據包到達目的地后重組。

  批處理系統 vs 分時系統

  批處理系統一旦系統被占,你就要排隊等待或者待會兒再來。

  分時系統你只需要下發任務,任務調度系統會讓所有用戶的任務分時復用時間片。

  CSMA/CD vs 交換式以太網

  CSMA/CD網卡需要不斷監聽沖突并重試。

  交換式以太網卡只需要發包,交換機會排隊調度來不及轉發的數據包。

  Apache vs Nginx

  Apache線程/進程若沒被調度到CPU,就需要等待直到被調度切換至CPU。

  Nginx只需將事件通知到,工作進程便會輪詢處理完所有請求。

  共享內存 vs erlang/go channel

  共享內存訪問需要加鎖,若持鎖失敗,要么忙等重試,要么待會兒再來。

  erlang/go channel以消息傳遞通信,消息發出后就不用管了,除非它希望得到回饋,完全異步。

  可見,這又是一個殊途同歸。同類的還有:

  PCI vs PCIe ,從總線到交換。

  宏內核 vs 微內核 ,從共享數據結構到消息傳遞。

  Spin/RW Lock vs RCU Lock ,從爭搶鎖到操作副本原子更新。

  RCU原理

  為什么沖突仲裁的爭搶模式無法承載大并發,因為過載的沖突仲裁開銷會將資源淹沒,若要承載大并發,必然要采用調度的方式。要理解這一要素,需要換一個視角。

  我們看操作的是 信息的本身,還是 信息的副本。

  回到本文題目,“以通信方式共享內存”操作信息的副本, 而“以共享內存方式通信”則操作信息本身。

  操作信息副本可以保證同時有且只有一個實體操作該副本,如果有兩個實體需要操作該副本,那就再復制一個副本,這就保證了無沖突,業務流是可控無阻塞的。

  RCU可做到業務無阻塞并發,無論是spinlock還是rwlock,都做不到。spinlock/rwlock鎖臨界區,造成臨界區串行化,而RCU沒臨界區,它將本屬于臨界區的邏輯作為副本操作,擇機原子更新,這便可做到無阻塞并發。

  操作副本是無阻塞并發的甘泉,如果把并發看作是時間擴展性,那么將信息共享到遠方則是空間擴展性,完成這件事的是網絡,目前它是TCP/IP網絡。TCP/IP網絡采用了“以通信方式共享內存”的方式,它無疑是正確的。

  我不懂erlang,但大致知道它的意思,erlang沒有變量,只操作副本,它是通信網絡在編程語言上的映射,對于golang,大概也是如此,使用go channel可以像網絡收發一樣來處理信息。

  我們看socket接口,它實屬用通信的方式共享內存的古老方式。

  socket接口一開始是進程間通信機制,與之通信的進程可在本機,也可在遠處,可在世界任意地方。“以通信方式共享內存“,是最原始的編程模式,一直到現在依然正確。

  共享內存是一種本地優化,僅有編程意義,卻沒有擴展性,無論是無阻塞并發的時間擴展性,還是將信息傳遞給遠方的空間擴展性。

  共享內存是一種本地優化,優化的是指令操作延時,與其將信息封裝成消息并傳遞,不如直接操作信息本身,它編程更簡單,代碼指令更少,執行延時更低。但高并發并不care指令延時,高并發care同時執行的有效指令數,而spin,switch不屬于有效指令,故共享內存天生不與高并發配對。

  此外,還是那個觀點,網絡編程場景,普遍毫秒級的單流通信延時,共享內存相比消息傳遞節省個微妙甚至納秒級的操作延時,并無太大意義。要怪就怪光速吧。

  從云原生開始

  云原生是面向微服務的架構,而消息傳遞是微服務交互的媒介,每個工人都接觸過關于消息隊列的概念,正是消息支撐了云原生微服務。

  消息并不封裝狀態,消息本身無狀態,狀態通過消息之間的交互來體現 。消息交互可自由組合,這是分布式的源泉,而云原生本身就是面向分布式的設計。

  一個部署云原生應用的IDC機房就是縮小版的全球TCP/IP互聯網,無狀態的消息在分布式的微服務之間傳遞,狀態僅由微服務的交互定義和維護。

  甚至一臺物理主機內部板卡也成了微型版的全球TCP/IP互聯網,無狀態的消息在分布式的模塊之間傳遞,狀態僅由模塊之間的交互定義和維護。

  共享內存類似總線,大家擁有平等訪問權,但寫訪問時要獨占。我們可以從總線和消息交換的關系看共享內存的處境。

  曾經,主機主板上很多總線,很多模塊都要先爭搶獲得總線控制權才能與CPU或別的模塊通信,但后來PCIe將總線改成了由Hub互聯的交換網絡,采用消息交換替換了總線仲裁。

  以太網在此之前已經走過了同樣的軌跡。

  近來年被工人們提倡的 微內核思想,大致也是這么回事,將對共享數據結構的操作換成了消息傳遞。

  為什么這些都和全球TCP/IP互聯網類比呢?因為 TCP/IP的基礎就是異步的,無狀態的,分布式的,消息傳遞的分組交換網。

  總線簡單樸素,隨著系統規模的擴大,總線爭搶帶來的時間損耗指數級上升,人們發現總線無法支持高并發及無法物理擴展時,消息傳遞便替換了總線。大規模系統,消息操作帶來的額外延時是可以忽略不計的。

  無論內部板卡,局域網,PCI,操作系統都是從局域范圍開始的,它們一開始從總線開始便不足為奇。然而互聯網一開始就是連接分布式廣域端的,一開始就不適合采用總線結構,這反過來說明總線在分布式場景的不適用。

  我一向贊美TCP/IP端到端原則,正是它無狀態的IP細腰讓互聯網規模得以任意擴大而不引入額外開銷,而細腰也是無狀態消息交換的核心,只在發送端和接收端之間定義和維護狀態,而不是所有端一起維護共享總線或內存的狀態。

  因此,消息傳遞也遵循端到端原則,可以自由擴展規模,總線和共享內存則相反。

  以上從局域擴而大之的視角,我們看到了消息傳遞替換總線的趨勢。

  反過來,從廣域向內縮,規模在漸小,傳輸延時在漸短,越來越不分布式,無狀態消息傳遞帶來的可擴展優勢越發無用武之地,其額外封裝帶來的額外延時逐漸承擔了端到端延時的大頭。

  除去額外的消息封裝和傳輸操作,所有不多的實體直接操作信息所在的內存,最小化端到端延時便成了可觀的收益,因此,總線和共享內存便是微縮版系統的極致了。

  總結

  這就兩邊都說得通了, 從小規模到大規模,總線和共享內存被消息傳遞替代,從大規模到小規模,總線和共享內存則是消息傳遞的優化

  就像廣義相對論,牛頓力學,量子力學一樣,不同的規模尺度有不同的哲學。

  - EOF -

  加主頁君微信,不僅Linux技能+1

  主頁君日常還會在個人微信分享 Linux相關工具、資源精選技術文章,不定期分享一些 有意思的活動、 崗位內推以及 如何用技術做業余項目

  加個微信,打開一扇窗

  點擊標題可跳轉

  1、 USB 通信協議深入理解

  2、 Linux 性能分析工具匯總

  3、 現代 C++ 測試工具鏈(是時候拋棄 gtest/google bench 了)

免费一级片在线观看_国产一级高清视频_99riav视频_91av视频导航

    <em id="5xgjh"></em>
    <nav id="5xgjh"><code id="5xgjh"></code></nav>
  1. <sub id="5xgjh"><address id="5xgjh"></address></sub>
    <form id="5xgjh"></form>
    <sub id="5xgjh"><address id="5xgjh"></address></sub>
      <sub id="5xgjh"></sub>
    1. <nav id="5xgjh"></nav>

        欧美一区二区在线播放| 欧美日韩中文在线观看| 国产精品理论片| 久久国产精品久久久久久电车| 国产精品视频福利| 国自产拍偷拍福利精品免费一| 蘑菇福利视频一区播放| 欧美丝袜一区二区| 欧美乱人伦中文字幕在线| 久热成人在线视频| 亚洲一本大道在线| 免费久久99精品国产自在现线| 久久中文字幕一区二区三区| 国产欧美va欧美不卡在线| 国产一区二区三区高清在线观看| 欧美freesex8一10精品| 黄色成人片子| 欧美高清在线观看| 国产精品日韩欧美一区二区| 在线视频一区二区| 国产欧美日韩精品在线| 美腿丝袜亚洲色图| 国产精品高潮呻吟久久av黑人| 国产欧美午夜| 国产精品免费看片| 在线观看欧美激情| 国产欧美日韩一区二区三区| 国产字幕视频一区二区| 欧美国产精品人人做人人爱| 亚洲综合大片69999| 午夜精品在线观看| 欧美视频网址| 亚洲日韩成人| 亚洲精品视频中文字幕| 亚洲国产天堂久久综合| 狠狠色狠狠色综合日日tαg| 国产精品视频免费在线观看| 国产精品久久久久99| 久久久www成人免费无遮挡大片| 国产精品区一区二区三区| 亚洲国产午夜| 欧美视频国产精品| 午夜老司机精品| 久久久噜噜噜久久久| 欧美视频在线一区二区三区| 欧美在线观看视频| 久久久久久久一区| 一区二区三区毛片| 欧美激情影音先锋| 亚洲国产精品悠悠久久琪琪| 午夜一区二区三区不卡视频| 国产午夜精品全部视频在线播放| 亚洲精一区二区三区| 亚洲免费在线播放| 一本久久a久久精品亚洲| 欧美色欧美亚洲高清在线视频| 亚洲欧美日韩区| 国语对白精品一区二区| 欧美一区日韩一区| 久久久噜噜噜久久中文字免| 久久久久久久久久久久久女国产乱| 国产一区二区久久精品| 国产揄拍国内精品对白| 国产日韩欧美高清| 国产精品亚发布| 欧美电影在线播放| 国产精品视频你懂的| 欧美日韩 国产精品| 国产色产综合色产在线视频| 国产精品推荐精品| 欧美精品在线观看| 欧美午夜激情在线| 99国内精品久久久久久久软件| 亚洲女人天堂av| 裸体女人亚洲精品一区| 在线成人免费观看| 激情欧美一区二区三区在线观看| 欧美午夜在线| 国产精品久久国产三级国电话系列| 91久久久久久久久久久久久| 国产精品美女主播| 欧美14一18处毛片| 老司机凹凸av亚洲导航| 午夜亚洲福利| 国产精品久久久久久久久免费樱桃| 欧美a级片一区| 一区二区三区视频免费在线观看| 在线日韩一区二区| 欧美精品一区在线发布| 91久久香蕉国产日韩欧美9色| 欧美在线观看网站| 亚洲在线视频一区| 欧美综合77777色婷婷| 国产精品不卡在线| 在线观看日韩精品| 久久免费高清| 国产欧美日韩亚洲一区二区三区| 久久久国产视频91| 国产日韩欧美不卡在线| 国产欧美一区二区三区在线看蜜臀| 99国产一区二区三精品乱码| 欧美成人午夜激情视频| 亚洲视频1区| 欧美国产一区二区在线观看| 欧美亚洲不卡| 狠狠色狠狠色综合日日五| 欧美激情区在线播放| 欧美一区二区三区成人| 欧美一区二区三区视频免费播放| 国产精品久久777777毛茸茸| 国产精品久久999| 午夜精品久久久久久久蜜桃app| 亚洲高清二区| 欧美在线一级视频| 亚洲欧美中文日韩在线| 在线观看福利一区| 国产毛片久久| 亚洲美女黄网| 精品va天堂亚洲国产| 欧美电影免费观看高清| 日韩一本二本av| 亚洲午夜激情| 欧美性大战xxxxx久久久| 欧美日韩精品福利| 午夜免费电影一区在线观看| 国产精品私房写真福利视频| 尤物精品国产第一福利三区| 国语自产偷拍精品视频偷| 99re66热这里只有精品3直播| 国产乱人伦精品一区二区| 永久免费视频成人| 嫩草国产精品入口| 亚洲黄一区二区| 黄色在线一区| 欧美日本不卡视频| 久久精品视频99| 久久久精品久久久久| 久久久亚洲一区| 国产视频一区免费看| 亚洲一区二区精品在线| 免费观看久久久4p| 亚洲一二区在线| 亚洲天堂av综合网| 午夜精品美女自拍福到在线| 影音先锋日韩精品| 久久久人成影片一区二区三区| 亚洲一区欧美二区| 在线视频成人| 亚洲国产精品国自产拍av秋霞| 欧美一区二区三区免费大片| 欧美激情精品久久久久久黑人| 黑人极品videos精品欧美裸| 99精品黄色片免费大全| 国产精品久久夜| 亚洲精品视频在线看| 国产精品高清网站| 欧美成人高清| 欧美精品少妇一区二区三区| 在线成人激情| 欧美日本网站| 亚洲自拍偷拍网址| 国产精品久久久一区麻豆最新章节| 伊人久久男人天堂| 国产精品一区二区久激情瑜伽|