流水线并发模型

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

Subscription expired — please renew

Pro account upgrade has expired for this site and the site is now locked. If you are the master administrator for this site, please renew your subscription or delete your outstanding sites or stored files, so that your account fits in the free plan.