erlang學習: why OTP
用erlang開發工業級產品的過程中,會碰到相似的問題域,例如監控、程式打包等等。
OTP 就是針對這些問題域的解決方案。
OTP包括如下部分:
1、 監控樹
強大的監控能力,是erlang強於其它語言的核心所在;
所以基於erlang的應用,都應該具有監控功能,因此,OTP首先提供了supervisor模組,來解決這個共性問題。
在監控樹種,包括監控程式和工作程式,所有程式連結成一個監控樹。
2、 程式的行為
工作程式,通常具有相同的行為;OTP提煉出這些共同的行為,提供了三類主要的行為包,分別是 gen_server, gen_event, gen_fsm。 一個工作程式,通常採用其中的一種或幾種行為模式即可。
使用OTP行為包的好處:
1)、 強制程式設計師以一種避免併發應用程式中的典型錯誤的方式編寫程式碼。
2)、 整個團隊具有共同的程式設計風格。
3、 應用打包
監控程式+工作程式,這些模組需要被作為一個完整的應用釋出,OTP提供了application包來解決打包所面對的共同問題。
結論:
用erlang開發,一定要使用OTP;按照erlang成熟的開發模式走,不要自己造輪子。
OTP 就是針對這些問題域的解決方案。
OTP包括如下部分:
1、 監控樹
強大的監控能力,是erlang強於其它語言的核心所在;
所以基於erlang的應用,都應該具有監控功能,因此,OTP首先提供了supervisor模組,來解決這個共性問題。
在監控樹種,包括監控程式和工作程式,所有程式連結成一個監控樹。
2、 程式的行為
工作程式,通常具有相同的行為;OTP提煉出這些共同的行為,提供了三類主要的行為包,分別是 gen_server, gen_event, gen_fsm。 一個工作程式,通常採用其中的一種或幾種行為模式即可。
使用OTP行為包的好處:
1)、 強制程式設計師以一種避免併發應用程式中的典型錯誤的方式編寫程式碼。
2)、 整個團隊具有共同的程式設計風格。
3、 應用打包
監控程式+工作程式,這些模組需要被作為一個完整的應用釋出,OTP提供了application包來解決打包所面對的共同問題。
結論:
用erlang開發,一定要使用OTP;按照erlang成熟的開發模式走,不要自己造輪子。
相關文章
- Erlang/OTP 24版本釋出
- erlang學習: erlang版echoserverServer
- Erlang/Elixir 中的 OTP 程式設計介紹程式設計
- [Erlang 學習筆記] Erlang開發建議筆記
- 好書妙評之《Erlang/OTP併發程式設計實戰》程式設計
- Erlang學習筆記(三)Erlang基礎語法筆記
- Erlang學習筆記(二)Erlang基礎語法之If、Case的使用筆記
- 向豐田學習 “五WHY分析法”
- Erlang 之父學習 Elixir 語言的一週
- Erlang學習筆記(四)模組與函式筆記函式
- Erlang學習筆記(五)記錄與對映組筆記
- Erlang學習筆記(六)順序程式的錯誤處理筆記
- erlang學習: 基於gen_server的echoserver及監控模組Server
- WhyASMLIBandwhynot?ASM
- 圖書封面的故事之“阿爾特溫人”——選自《Erlang/OTP併發程式設計實戰》圖書封面程式設計
- Erlang學習筆記(七)二進位制型與位語法筆記
- Why TypeScript?TypeScript
- Why NoSQL?SQL
- [Erlang0016]Erlang三則之HIPESASLMonitor
- erlang應用
- Why React HooksReactHook
- WHY review code?View
- Why Redis 4.0?Redis
- [Erlang07] Erlang 做圖形化程式設計的嘗試:純Erlang做2048遊戲程式設計遊戲
- [Erlang08] 使用Erlang application有什麼好處?APP
- [Erlang03]Erlang有哪些好用的靜態分析工具?
- Erlang 開發者的福音:IntelliJ IDEA 的 Erlang 外掛IntelliJIdea
- CentOS 安裝ErlangCentOS
- erlang聊天室
- [譯] WebAssembly: How and whyWeb
- WhyRedis4.0?Redis
- why use dynamic SQL?SQL
- whystea2
- whystea1
- [Erlang02] 那些經歷過的Erlang小坑1-10
- Erlang Primer (1) Mac OS X 上配置 Erlang 開發環境Mac開發環境
- 第1章 Why RustRust
- why app_start startAPP