流水线并发模型

See http://groups.google.com/group/erlang-china/browse_thread/thread/1736faa88fb5ed8d

呵呵, gashero 的应用方式相当"标准"哦,我的"车库项目0.1"也是如此。

此前 mryufeng 等同学的部分测试已经表明,至少在目前这个阶段 erlang 的性能在"massive computation"方面通常并不具有特别明显的优势。(除非去化大力气做并行优化,此外毕竟 erlang 是 vm 语言,性能有损失也应在预料之中。)但在机器之间做"task scheduling"确实是目前市面上最好用的选项。

此外 port(即pipe,或曰stdin/stdout) 的整合方式也相当符合 unix 风格的审美情趣。最近 joe 老头有一段有意思的话。

For a long, long time I have been pondering the problem of how we glue(software) things together. The simplest of all methods is the unix pipe.
cat foo | grep … | awk …| wc
(or whatever)
aside: When people say "parallel programming is difficult!" I guess they weren't thinking of the unix pipe notation - the above is (or course) a parallel program with 4 parallel processes .-)

个人认为,仅就目前而言,以 native 代码来实现每个独立的组件,并将这若干个组件以 port 的形式组装到由 erlang 搭建的系统之中。似乎是实际应用 erlang 时相当实在的模型。所以听到有人说 erlang 是一个"架构语言"时,觉得还怪贴切的。至于说 port 的稳定性问题(我还没实际碰到 crash 的状况),一则有 supervisor 保驾护航,二则如果妥善设计,避免在 port 之中保持状态,应该能够避免它的重启对应用造成影响。

2008/4/24 gashero <moc.liamg|nohtyp.yrrah#moc.liamg|nohtyp.yrrah>:

性能很夸张的说,呵呵。

我在linux平台,同事用C语言写的引擎,提供stdin/stdout的接口,也就是标准的erlang扩展协议通信。然后我自己用erlang写了个简单的http服务器,每秒钟连查询后端引擎(单线程)带处理http请求,可以完成6000req/s的样子。这个速度仅仅比apache处理纯静态html页面稍微慢一点(6200req/s)。

至于稳定性,我比较看好监督树模型,所以基本不在乎单个线程的稳定性了。

关于跨平台,我还没有计划把这个程序移植到windows上面去,不过估计没什么问题的。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License