.
考虑到现有的项目使用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应用的部署与热代码替换。 一、Erlang应用部署 在Erlang环境中,应用通常被打包成一个`.app`文件,包含应用元数据,以及一个或多个beam文件(编译后的Erlang代码)。部署Erlang应用的步骤如下...
gcm-erlang, 用于Google云消息传递的Erlang应用程序 gcm 软件提供了一个用于 Google Cloud Messaging的Erlang客户机。,你可以对 gcm-erlang做什么:你可以以使用 gcm-erlang:启动几个代表由不同 GCM API keys 定义...
Erlang应用优化指南.pptx
chronica, Erlang应用程序的日志框架 [This document translated on russian] ( https://github.com/eltex-ecss/chronica/blob/master/README_RU.md )概述Chro
erlang-in-docker-from-scratch, 在一个 Docker 容器中,一个Erlang应用 当将应用程序打包为 Docker 容器时,很容易将它的惰性化,并将它的放置在 FROM debian 。 虽然你已经加入了许多库和二进制文件,但是你的应用...
这是第一卷。 在2008 CN Erlounge III的“Erlang应用程序接口”讲演的视频。PPT等其它资料在这里: http://blog.csdn.net/aimingoo/archive/2009/01/14/3777765.aspx 有关信息参见: ...
这是第四卷。 在2008 CN Erlounge III的“Erlang应用程序接口”讲演的视频。PPT等其它资料在这里: http://blog.csdn.net/aimingoo/archive/2009/01/14/3777765.aspx 有关信息参见: ...
这是第三卷。 在2008 CN Erlounge III的“Erlang应用程序接口”讲演的视频。PPT等其它资料在这里: http://blog.csdn.net/aimingoo/archive/2009/01/14/3777765.aspx 有关信息参见: ...
这是第二卷。 在2008 CN Erlounge III的“Erlang应用程序接口”讲演的视频。PPT等其它资料在这里: http://blog.csdn.net/aimingoo/archive/2009/01/14/3777765.aspx 有关信息参见: ...
由Ericsson开发的Erlang在大型电信系统中有广泛应用。它最初设计的目标就是解决分布式、高可靠性和软实时性的问题。 1. **并发与消息传递**:Erlang的核心特性之一是并发和消息传递。在Erlang中,应用程序通常由数...
erlastic_search, 一个Erlang应用程序,用于与搜索接口的弹性其余部分通信 ErlasticSearch用于 Elasticsearch的Erlang客户机。构建和运行$./rebar3 shell==> mimetypes (compile)==> hackney (compi
我在Erlounge III大会上的讲演PPT。 相关的视频在这里: http://groups.google.com/group/erlang-china/browse_thread/thread/2154c39503795edc
2. **分布式特性**:Erlang的分布式节点通信,分布式数据管理,以及如何在多台机器上部署和运行Erlang应用。 3. **故障恢复与容错**:Erlang的错误处理模式,如监控树(supervision trees)和故障检测,以及如何...
Guess Erlang应用程序散布 Geas : (In Irish folklore) an obligation or prohibition magically imposed on a person. 通过扩展,由Erlang应用程序或模块施加的义务或禁止,可能会更改其散布。 概述 Geas是检测...
此外,扩展Erlang应用非常容易,通过添加更多的CPU,性能可以线性增长。 Erlang的分布式和集群特性使其在大规模系统中尤为突出。Erlang的C底层支持保证了高效的分布式计算,内置的分布原语使得跨节点通信变得简单。...
6. 热代码升级:学习如何在不中断服务的情况下更新运行中的Erlang应用程序。 7. 源码分析:书中可能包含一些实际项目或示例代码,帮助读者深入理解Erlang和OTP的实践应用。 书中的"Manning.Erlang.and.OTP.in....
`erlang-systemd` 库是专门为Erlang应用程序设计的,目的是为了让Erlang应用更好地与Systemd集成,实现更高效的服务管理和监控。 在Erlang中,`erlang-systemd` 提供了以下关键功能: 1. **服务注册与控制**:该库...
通过这些组件,Erlang应用可以实现异步处理任务,提高系统的响应速度和整体性能。例如,一个高流量的Web服务可以使用RabbitMQ来缓存和分发请求,避免直接处理导致的延迟或崩溃。 总之,Erlang作为一种强大且适应性...