`
wqy159
  • 浏览: 55167 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何把erlang应用在项目中?

阅读更多

网站:JavaEye 作者:qiezi 发表时间: 2007-07-12 15:28 此文章来自于 http://www.iteye.com
声明:本文系JavaEye网站原创文章,未经JavaEye网站或者作者本人书面许可,任何其他网站严禁擅自发表本文,否则必将追究法律责任!
原文链接: http://www.iteye.com/topic/100425

考虑到现有的项目使用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应用于这种项目,上面这种方式是不是最优的?请有经验的朋友指点。

问题1:
erl_send是不是线程安全的?如果不是,我可能要做个发送线程去处理发送队列了。




《 如何把erlang应用在项目中? 》 的评论也很精彩,欢迎您也添加评论。查看详细 >>

推荐相关文章:
  ErLang语法提要
  Concurrency Programming 相關報告




JavaEye推荐
上海乐福狗信息技术有限公司:诚聘技术经理和开发工程师
免费下载IBM社区版软件--它基于开放的标准,支持广泛的开发类型,让您的开发高效自主!
京沪穗蓉四地免费注册,SOA技术高手汇聚交锋.
上海:优秀公司德比:高薪诚聘 资深Java工程师
广州:优易公司:诚聘Java工程师,开发经理
上海:尤恩斯国际集团:诚聘开发工程师
北京:优秀公司NHNChina招聘:WEB开发,系统管理,JAVA开发, DBA


分享到:
评论

相关推荐

    geas:Guess Erlang应用程序散布

    Guess Erlang应用程序散布 Geas : (In Irish folklore) an obligation or prohibition magically imposed on a person. 通过扩展,由Erlang应用程序或模块施加的义务或禁止,可能会更改其散布。 概述 Geas是检测...

    docker-erlang:Erlang 的 Docker 镜像打包

    使用它来试用 erlang shell,作为 erlang 开发环境,或将其用作您自己的 erlang 应用程序的基础映像。 #用法启动一个 erlang shell 的一次性实例docker run -it --rm unbalancedparentheses/erlang 运行容器以使用...

    ErlangOTP并发编程实战

    第二部分讲解如何在实际开发中逐一添加otp 高级特性,从而完善应用,作者通过贯穿本书的主项目——加速web 访问的分布式缓存应用,深入浅出地阐明了实践中的各种技巧;第三部分讨论如何将代码与其他系统和用户集成,...

    DFT的matlab源代码-tsefft:基于元组空间的Erlang应用程序进行快速傅立叶变换

    tsefft是一个基于元组空间的erlang应用程序,用于计算快速傅立叶变换。 关于该项目 主要目的是演示/发现espace在并发数值应用程序中的表现,尤其是那些具有明确定义的算法(例如FFT)的应用程序。 关于espace和元组...

    erlang-expression-parser:Erlang 应用程序,它解析文本并处理它们(如果它们是数学表达式)

    Erlang 应用程序,它解析文本并处理它们(如果它们是数学表达式) 这是一个 IntelliJ IDEA 项目,可以使用 .iml 文件导入。 您将需要 IDEA Erlang 插件。 该应用程序解析诸如 1+(2/2) 之类的输入,根据 BODMAS 对...

    erlang-base:最小的Erlang + Debian Docker映像

    您不需要在发行版中包含Erlang运行时系统(ERTS),因为它是由erlang-base软件包提供的。 例如,使用可以生成带有relx.config --include-erts false标志或relx.config指令{include_erts, false} 。 如果已经从...

    weaverl:Erlang 遇到 AOP

    韦弗尔 Erlang 遇到 概述 Weaverl 旨在为 Erlang 社区带来与主流语言(例如 /Java)中主要 ... 不要期望一个成熟的、没有错误的工具可以集成到生产软件中,而是一个实验性的软件,你可以用它来开始在你的 Erlang 应用程

    erlang-mix-project:使用 Mix 的示例 Erlang 项目

    二郎混合项目这个示例项目展示了使用 Mix 作为构建工具和包管理器在 Erlang 中开发应用程序。 它依赖于作为依赖项添加的 。 尝试的事情: $ mix deps.get # fetch dependencies (including mix-erlang-tasks)$ mix ...

    ergo:使用Golang中ErlangOTP的技术和设计模式创建网状网络的框架

    在Golang中实现Erlang / OTP。 速度是原始Erlang / OTP的x5倍。 群集中热节点的最简单的直接替换。 目的 该项目的目标是利用Erlang / OTP经验和Golang性能。 Ergo Framework实现了诸如GenServer / Supervisor / ...

    mix-erlang-tasks:使用Mix的Erlang项目的常见任务

    安装后,为您的Erlang应用程序创建一个新项目。 选择您要如何安装自定义任务: 作为档案: mix archive.install https://github.com/alco/mix-erlang-tasks/releases/download/v0.1.0/mix_erlang_tasks-0.1.0.ez...

    enot:Erlang高级项目经理

    Erlang高级项目经理。 为什么是埃诺特? 强大的依赖管理 -> 构建稳定性 在本地和远程构建 deps 缓存 -> 提高构建速度 json 项目配置 -> devOps 和第三方工具很开心 Jinja2-> 动态环境相关配置 自动文件构建顺序 ->...

    opentracing-erlang:ERlang的开放跟踪工具包

    尽管IMO的大多数问题已在过去几年中得到解决,但OTTER也支持以下HTTP客户端:要使用这些客户端,它们应该可用(例如,作为应用程序或发行版本的依赖关系)并在OTTER中配置(请参见下面的配置)。OpenTracing 是一项...

    rlists:Erlang的扩展列表功能

    用法只需将模块rlists.erl放入项目中即可。 没有应用程序,只有一个库模块。 rebar3骨架就在那儿,以便于编译和测试。编译rebar3 compile测试rebar3 eunit笔记Erlang中没有无限列表。 因此,在Haskell中使用无限列表...

    mslog:一个简单易用的erlang日志应用

    一个简单易用的erlang日志应用 一个简单易用的erlang app 如何使用 添加到您的项目 将 mslog 添加到 rebar.config 或直接克隆它 {deps, [{mslog, ".*", {git, "git://github.com/qingliangcn/mslog.git", master}}]...

    pgo:Erlang Postgres客户端和连接池

    目前在Rebar3项目中难以使用的混合应用程序。 要求 Erlang / OTP 21.3及更高版本。 用 在pgo应用程序环境中定义的池将在启动时启动。 您还可以使用pgo:start_pool/3动态添加池。 要尝试pgo只需通过替换要连接到的...

    sshrpc:Erlang SSH RPC 模块(实验性)

    感谢以下人员对本项目的帮助: Dave Smith(在 dizzyd.com,特别是他的 SDIST 论文) Erlang Solutions 的 Francesco Cesarini Erlang Solutions 的 Ulf Wiger感谢对该项目的组织支持: 允许将我的 Erlang Factory ...

    eper:Erlang性能和调试工具

    在可预见的将来,我将接受拉取请求,并使该项目与现代OTP版本兼容。 我不打算添加新功能。 eper是与Erlang Performance相关的工具的松散集合。 dtop-类似于unix top ntop-可视化网络流量顶部-显示VM分配器的各个...

    ets_ui:Erlang术语存储用户界面

    它在每个应用程序 env http_port的指定端口上启动牛仔应用程序,或者让底层操作系统决定使用 IE 的端口:使用任何未使用的端口。 要使用一些示例上下文创建几个表,请运行以下命令: ets_ui_util:dummy_table()....

    xapian-erlang-bindings:用于Erlang的Xapian绑定(GSOC2012项目)

    尝试作为独立的Erlang应用程序: git clone git://github.com/arcusfelis/xapian-erlang-bindings.git xapian cd xapian ./rebar get-deps compile ./start-dev.sh 添加为rebar.config的依赖rebar.config :

    matlab分时代码-erlang-trader:将AlgoTrader(Java)代码移植到Erlang[已放弃]

    这个非常好的,写得很好的项目:移植到Erlang上将是一个很好的案例,说明如何在干净优雅的体系结构中调制和扩展到多个节点,在处理器之间共享责任。 您可以轻松地将节点配置为在单独的计算机上运行,​​因此技术...

Global site tag (gtag.js) - Google Analytics