《Erlang/OTP併發編程實戰》第一章 Erlang/OTP平臺

  1. Erlang應用開發框架:開放電信平臺(OTP, Open Telecom Platform)。 併發系統平臺 
  2. OTP既是一個框架,又是一組庫,更是一套構建應用的方法學,它本質上是對語言的擴展。
  3. C的創造背景:解決如何在硬件資源受限的情況下,用比彙編更高級的語言來開發系統軟件。
  4. Erlang的創造背景:如何讓程序員開發超大規模、高併發、強容錯的軟件,並徹底改善生產效率、減少軟件缺陷的數量。
  5. OTP的優點:
    1. 生產效率:可在短時間內交付產品級的系統;
    2. 穩定性:基於OTP的代碼可以更集中於邏輯,並避免重新實現那些容易出錯而每個系統都必備的基礎功能,如進程管理、服務器、狀態機等;
    3. 監督:這是由框架提供的一套簡便的監視和控制運行時系統的機制,既有自動化方式,也有圖形用戶界面方式;
    4. 可升級:框架爲處理代碼升級提供了一套系統化的模式;
    5. 可靠的代碼庫:OTP的代碼全部經過嚴格的實戰檢驗。
  6. 進程擁有自己的工作內存和信箱。
  7. 進程之間採用複製式通信,消息傳遞的基本語義使分佈式與Erlang自然融爲一體。
  8. 進程間通信方式:
    1. 持鎖共享內存;
    2. 軟件事務性內存:將內存當作傳統數據庫,用事務來決定何時寫入什麼內容,用樂觀方式來規避鎖;
    3. Future、Promise及同類機制:每個Future代表一個被外包到其他進程的計算結果,Future可以像其他對象一樣被四處傳遞,但無法在計算完成前讀取結果,必須等待計算完成。缺點是:令程序在遠端進程故障和網絡故障面前變得弱;
    4. 消息傳遞:
      1. 同步
      2. 異步
  9. Erlang中的消息傳遞原語是異步的。
  10. Erlang進程不是操作系統線程,它們由Erlang運行時系統實現,比線程要輕量得多。Erlang進程在啓動時棧空間只需要幾百字節,並且會按需伸縮。
  11. Erlang運行時系統(ERTS)
    1. 用C語言實現;
    2. 通過它才能跟文件系統和終端打交道,它還能處理內存,同時實現了Erlang進程;
    3. ERTS負責處理進程間的消息傳遞,並使處在不同機器上運行在各自ERTS中的進程能夠像位於同一臺機器上一樣通信;
    4.  ERTS中特別重要的一個部分是:Erlang的虛擬機模擬器(BEAM Bogdan Erlang抽象機):執行Erlang程序經編譯後產出字節碼,非常高效。
  12. Erlang強大和高效的原因:
    1. 調度器:處理運行中的Erlang進程,令所有就緒的進程共享可用的CPU資源,並在新消息到達或發生超時的時候喚醒相應的睡眠中的進程;
    2. I/O模型:防止系統在進程與外部設備通信時阻塞,令系統平穩運行;
    3. 垃圾回收器:回收不再使用的內存
  13. 調度器:
    1. 最初的設計目的是在單CPU上併發運行輕量級Erlang進程,在單個操作系統進程上,跑着管理所有Erlang進程的調度器;
    2. 隨着線程的普及,ERTS開始將I/O系統從運行Erlang進程的線程中拿出來,放到獨立的線程中,但完成主體工作的線程仍然只有一個,如果用的多核系統,就必須在同一臺機器運行多個ERTS實例;
    3. Erlang/OTP第11版中增加了對稱多處理器(SMP)支持,令ERTS可以在內部使用不止一個進程調度器,每個佔用一個獨立的操作系統線程,每個調度器處理一個進程池;
    4. 在最新的Erlang/OTP發佈版中,可以根據機器上CPU的拓撲情況將進程綁定到特定的調度器上,從而更好的利用硬件的緩存架構。
  14. I/O模型:在系統的最底層,Erlang以事件驅動的方式處理所有I/O,當數據進出系統時,程序可以以非阻塞方式完成數據處理,這降低了連接建立和斷開的頻次,還避免了OS層面上的加鎖開銷和上下文切換。
  15. 垃圾回收器:
    1. 分代複製式垃圾回收器;
    2. 不會在GC時遭受停頓,主要因爲Erlang進程之間的隔離;
    3. 調度器知道每個進程最後一次運行的時間,如果某個進程自上次垃圾回收後什麼也沒幹,調度器GC時會跳過它。
  16.  越來越多的人意識到,函數時編程及其背後的觀念天然適用於併發與分佈式編程問題。
  17. 函數式編程:
    1. 將函數看作和整數、字符串一樣的數據;
    2. 運用函數而非while或for這樣的循環結構來表達算法;
    3. 不修改變量和值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章