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
- RabbitMQ與Erlang的版本對應關係MQ
- Erlang/Elixir: 用Distillery替換Exam打包器
- erlang聊天室
- CentOS 安裝ErlangCentOS
- Install erlang to Ubuntu 18.04 LTSUbuntu
- Erlang之父Joe Armstrong去世
- Erlang vs Elixir by example – kv store
- RabbitMQ和Erlang相容對比MQ
- 30 分鐘學 Erlang (一)
- Erlang中的Record詳解
- rabbitmq解決erlang版本問題MQ
- Erlang這十年 - ferd.ca
- novaframework/nova:Erlang的開源Web框架。FrameworkWeb框架
- [elixir! #0079] erlang 版本升級 22 -> 24
- Erlang中的if:讚美與非議
- Erlang/OTP 24版本釋出
- Erlang Solutions:2022年金融科技報告
- Erlang/Elixir 中的 OTP 程式設計介紹程式設計
- [譯] Erlang 之禪第二部分
- Centos7、Erlang-21.3、RabbitMQ-3.8.0安裝CentOSMQ
- [譯] Erlang 之禪第一部分
- Golang有什麼優勢?與Erlang有何差異?Golang
- [應用案例]OT應用案例之dasdig
- 一文搞懂SaaS應用架構:應用服務、應用結構、應用互動設計應用架構
- [elixir! #0081] 編譯後的 beam code 重建為 erlang 程式碼編譯
- golang RPC 應用(1) :net/rpc的應用GolangRPC
- SAP BTP MTA 應用的應用場景
- 使用汽車應用庫構建應用
- 《反應式應用開發》之“什麼是反應式應用”
- Compose應用
- Canvas應用Canvas
- iptables應用
- sed 應用
- redis應用Redis
- DOCKER應用Docker
- fastjson應用ASTJSON
- RAG應用
- 應用安全