erlang應用
.
考慮到現有的專案使用erlang重寫的複雜性和erlang對於某些資料庫支援的弱點,想結合erlang的分散式、程式碼熱載入、處理高併發方面的優勢,和C++在效能上以及大量現有專案上的優勢,實現叢集部署。
考察了erlang和C進行互動的幾種方式,ports受限於物理伺服器分佈,port_driver沒測試成功,應該也是受限於本機,最後選定C nodes方式。
測試了c server和c client兩種方式,感覺如果是server方式,還得用C寫一套處理高併發的網路模組,也不方便升級,erlang的優勢完全沒發揮上,所以選定client方式。
大致的想法是這樣的:
* erlang監聽一個本地埠和一個對外的埠,本地的用於和c node通訊,對外的通過協議和客戶互動。
* c node連線到本地埠後,就在erlang裡面註冊一個名字,這時候對外的埠上收到的資料就根據這個名字發給c node。
* c node上接收到資料以後就放佇列,給執行緒池去消化,執行緒池處理完以後就通過埠發回給erlang節點,當然是使用erl_send (問題1)。
* erlang上面當然是由process“阻塞”處理,它收到結果以後,就發回給客戶端,這個阻塞當然是假的,也正是利用erlang程式設計的便利。
* c node升級,只需要另開一個程式,註冊另一個名字,比如名字加上版本號,連到erlang節點,再使用熱載入把erlang程式碼更新,就可以在不停機的情況下更新伺服器。更新完了再停掉舊版本的c node。
* 增加協議格式等操作都交給erlang了,C node保持不變。
考慮到現有的專案使用erlang重寫的複雜性和erlang對於某些資料庫支援的弱點,想結合erlang的分散式、程式碼熱載入、處理高併發方面的優勢,和C++在效能上以及大量現有專案上的優勢,實現叢集部署。
考察了erlang和C進行互動的幾種方式,ports受限於物理伺服器分佈,port_driver沒測試成功,應該也是受限於本機,最後選定C nodes方式。
測試了c server和c client兩種方式,感覺如果是server方式,還得用C寫一套處理高併發的網路模組,也不方便升級,erlang的優勢完全沒發揮上,所以選定client方式。
大致的想法是這樣的:
* erlang監聽一個本地埠和一個對外的埠,本地的用於和c node通訊,對外的通過協議和客戶互動。
* c node連線到本地埠後,就在erlang裡面註冊一個名字,這時候對外的埠上收到的資料就根據這個名字發給c node。
* c node上接收到資料以後就放佇列,給執行緒池去消化,執行緒池處理完以後就通過埠發回給erlang節點,當然是使用erl_send (問題1)。
* erlang上面當然是由process“阻塞”處理,它收到結果以後,就發回給客戶端,這個阻塞當然是假的,也正是利用erlang程式設計的便利。
* c node升級,只需要另開一個程式,註冊另一個名字,比如名字加上版本號,連到erlang節點,再使用熱載入把erlang程式碼更新,就可以在不停機的情況下更新伺服器。更新完了再停掉舊版本的c node。
* 增加協議格式等操作都交給erlang了,C node保持不變。
相關文章
- rabbitMQ和對應的erlang版本匹配MQ
- erlang學習: erlang版echoserverServer
- RabbitMQ與Erlang的版本對應關係MQ
- Erlang/Elixir: 用Distillery替換Exam打包器
- [Erlang0016]Erlang三則之HIPESASLMonitor
- [Erlang 學習筆記] Erlang開發建議筆記
- Erlang學習筆記(三)Erlang基礎語法筆記
- [Erlang07] Erlang 做圖形化程式設計的嘗試:純Erlang做2048遊戲程式設計遊戲
- [Erlang08] 使用Erlang application有什麼好處?APP
- [Erlang03]Erlang有哪些好用的靜態分析工具?
- Erlang 開發者的福音:IntelliJ IDEA 的 Erlang 外掛IntelliJIdea
- CentOS 安裝ErlangCentOS
- [Erlang02] 那些經歷過的Erlang小坑1-10
- Erlang Primer (1) Mac OS X 上配置 Erlang 開發環境Mac開發環境
- erlang學習: why OTP
- Erlang學習筆記(二)Erlang基礎語法之If、Case的使用筆記
- RabbitMQ和Erlang相容對比MQ
- Erlang中的Record詳解
- Erlang安裝手冊-windowsWindows
- Centos 安裝 erlang 環境CentOS
- 轉載: erlang連線mysqlMySql
- Erlang開發環境搭建開發環境
- Install erlang to Ubuntu 18.04 LTSUbuntu
- rabbitmq解決erlang版本問題MQ
- 【原創】erlang模組之rpcRPC
- novaframework/nova:Erlang的開源Web框架。FrameworkWeb框架
- Erlang/OTP 24版本釋出
- linux mint 18.2 install erlangLinux
- Erlang語言的作者教你如何入手
- 《Erlang 4.08》另類破解手記
- 我為何從 Python 轉向 ErlangPython
- WhatsApp成功背後的Erlang語言APP
- 微信小程式、流應用、原生應用app、輕應用微信小程式APP
- [elixir! #0079] erlang 版本升級 22 -> 24
- Erlang 之父學習 Elixir 語言的一週
- Erlang學習筆記(四)模組與函式筆記函式
- Erlang/Elixir 中的 OTP 程式設計介紹程式設計
- 有關GO和Erlang的一些思考Go