`
albertlee
  • 浏览: 35654 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

使用erlang 开发 web的选择

阅读更多
    最近看 Joe 的blog,并且研读他的那个  wiki 的例子程序。Joe就是那篇著名的  Yaws vs Apache的作者。不过, yaws 我始终还没有搞太明白,毕竟多了一层template,erlang程序本身还没搞熟呢。
    在那个wiki里面, Joe用了pico 这个 erlang web server,想来和 RoR 中的 webrick 角色类似。这个 pico 就是一个小的web服务器,erlang程序启动它之后,通过 event_handler 的方式处理 url dispatch,这里用了 pattern match 的方式,url 对应 erlang函数,处理起来倒也自然。
    现在还没有看到关于 pico 的性能测试方面的数据。

    其他通过Erlang开发web的方式还有: CGI,  yaws, erlyweb ,另外还可以作为 PHP等脚本的后台,通过socket进行通讯。现在 erlang的大型站点还真没有听说过,估计比 django的还要稀缺。
    考虑到 erlang 在并发性能上的优势,比较适合做大型的论坛社区。
分享到:
评论
31 楼 dcaoyuan 2007-05-26  
cookoo 写道
不知道erlang的java port稳定性如何?


ErlIde很多地方用了jinterface,稳定性似乎有问题。

我在ErlyBird里用了一些,还可以,但在Erlang的String(List)转换到Java类型时似乎有个Bug,我没时间去查,等今后吧。
30 楼 cookoo 2007-05-26  
不知道erlang的java port稳定性如何?
29 楼 Elminster 2007-05-25  
Trustno1 写道
另外说道,并发/并行.我觉得很多人都搞不太清楚之间的差别.具体的区别我就不说了.我只是想说,在SMP架构上去做并行任务实际意义不大,虽然你可以通过OpenMP之类的库实现并行优化,但是实际上尽管CPU可以独立运行,但是I/O,memory都是仍然是共享的,这对于真正的并行计算来说是个致命伤.除非你用Numa,那情况又两说了,不过Numa那种东西很奢侈吧,现在google的PC farm大行其道的年代,谁用Numa就真有些人傻钱多速来的嫌疑了.



要不了多久,每一台计算机都会是传统意义上的 SMP 和 NUMA 系统了。多核 CPU 势不可挡,而当核心数量达到一定程度的时候(Intel 打算在几年内推出 80 核的 CPU),某个核心独享的 cache 甚至是内存也会不可避免。

到时候会很有趣吧,怎么样同时利用好多核 CPU 和 PC 集群的并行能力。我猜想,会有新的奇迹传说诞生的。
28 楼 Puras 2007-05-25  
wzgme 写道
turing 写道
像Second Life那样的虚拟社区,大家有没有关注过?它的后台语言好像叫Linden。


确定?

只知道Linden Lab是一个公司.

从招聘来看底层是C++/OpenGL,Web是PHP


SecondLife里的脚本语言是Linden
用这个可以自己在里面创建物品等
后台语言好像不是
27 楼 Trustno1 2007-05-25  
另外理论上说Functional的程序可以天然并行计算,很多functional的特性像lazy evaluation,好像就是专门为并行而量身定做的.比如说
result;
for(int i;i<100000;i++)
{
  result+=power(i,3)
}

这样的代码,用OpenMP无论如何是不可能对其做任何优化的.但是如果你有惰性求职就可以.不过这目前也仅仅停留在理论上,实际使用FP语言的虚拟机需要为这些Funtional特性寻找特别的优化算法.这目前看来也只能期待数学上的突破了.


26 楼 Trustno1 2007-05-25  
AvinDev 写道
T1觉得Folding@Home这种方式的分布式运算,是否比SMP架构更适合?现在游戏主机和一些显卡的计算能力非一般的猛。

这实则上是分布式结构,和SMP/Numa已经没有关系了,分布/并行/并发的概念区别还是很大的.我不清楚Folding@Home具体的结构,不过我猜想这是一种SPMD并行,这其实是一种比较简单的并发模式了,每一个node上运行的计算程序相同,然后把一条蛋白质上的数据切成几小块,分给不同的节点做.每一个节点上运行的程序相同,但是不care具体的计算机是什么样的.但是事实上能做到SPMD的应用是不多的,大多数的应用都是MPMD,如果你要写MPMD的话,网络通信上的问题可能已经是优先级很低的问题了,最主要的工作是小心的设计并行算法.Folding@Home这种方式也就很难奏效,因为很有可能某些计算机由于配置比其他的低,而拖慢整个计算.
25 楼 AvinDev 2007-05-25  
T1觉得Folding@Home这种方式的分布式运算,是否比SMP架构更适合?现在游戏主机和一些显卡的计算能力非一般的猛。
24 楼 Trustno1 2007-05-25  
另外说道,并发/并行.我觉得很多人都搞不太清楚之间的差别.具体的区别我就不说了.我只是想说,在SMP架构上去做并行任务实际意义不大,虽然你可以通过OpenMP之类的库实现并行优化,但是实际上尽管CPU可以独立运行,但是I/O,memory都是仍然是共享的,这对于真正的并行计算来说是个致命伤.除非你用Numa,那情况又两说了,不过Numa那种东西很奢侈吧,现在google的PC farm大行其道的年代,谁用Numa就真有些人傻钱多速来的嫌疑了.

23 楼 AvinDev 2007-05-25  
MMORPG,就服务器端来说,我认为从架构上,都是差不多的,从实现角度,我谈谈我的看法。
在通信框架方面,Erlang会方便很多,那篇OpenPoker的文章主要是讲的分隔的休闲游戏,各个服务器之间没有太大的关联。MMORPG,如果是大世界,会涉及到跨服务器的通信,这方面也是Erlang的强项。
可能会有问题的是人物交互设计上,按照Erlang Way,对于游戏里面的人物,都要设计为Process,而不是C++里的Object。各个Process基于Message来进行并发的活动和交互,这样设计对绝大多数人来说还是比较陌生。
还有就是游戏逻辑上面,貌似大部分网游都是用python,lua这样的脚本来写的逻辑,如果要用Erlang开发,用FP风格写这些比较灵活的逻辑,可能会比较痛苦。

国外已经有人研究过Erlang开发MMORPG的可行性,这里顺便将ppt放上来吧。
22 楼 pi1ot 2007-05-25  
port不稳定,用inets库调用频率一上去就出莫名其妙的问题。
21 楼 Trustno1 2007-05-25  
qiezi 写道
只有并发好像意义并不大,不知道是否适合MMORPG类游戏开发?核心算法用其它语言实现难度怎样?erlang的扩展库还是比较难写吧,不能长时间阻塞,更不能有线程锁这类东西。。。


<EVE ONLINE>是stackless python写的,我想python在效率方面比不上erlang.我还见过N多的泡菜游戏用Java写,为了进行快速表查找和各种缓存,一启动就是2G内存那种,这点上erlang的menisa效率要好得多.
其实再不济可以参考openpoker的做法,把erlang server写成一个socket adapter,专门负责通信和分布式存储,具体的游戏算法用C/Java写,通过tcp/ip插在adapter上.
另,erlang的c/java的插件是通过port或者driver实现的,内部实则上是运行在一个native thread pool里面,所以cport的block不会影响其他的erlang process的运行.不过具potain实际使用下来,c/port或者driver好像不那么稳定总是会把整个erlang 拖死掉,所以还是用tcp/ip写个c服务器更好些.


20 楼 qiezi 2007-05-25  
只有并发好像意义并不大,不知道是否适合MMORPG类游戏开发?核心算法用其它语言实现难度怎样?erlang的扩展库还是比较难写吧,不能长时间阻塞,更不能有线程锁这类东西。。。
19 楼 AvinDev 2007-05-25  
我觉得将复杂计算分解到大量节点,使用Erlang也不太适合。Erlang的maillist上面有人问Erlang为什么没有一些科学计算的数学库,有人就举了个例子,
8000 dot products of 3000-element vectors:
   Fortran 90:  0.79 seconds  (Sun Fortran compiler, -O3)
   C 89:        1.96 seconds  (Sun C compiler, -xO3)
   Erlang:     42.33 seconds  (erlc +native)
可见如果要使用Erlang,要50台机器的运算量才能比得上Fortran。结论是Erlang更适合于并发,而非并行。
18 楼 pi1ot 2007-05-25  
cookoo 写道
pi1ot 写道
erlang的优势是分布和并发,适用的范围是计算密集型的,比如搜索引擎后端,或者按我的理解网游server端也应该是,没做过网游不是很肯定。
bbs的根本瓶颈在于io,或者在前端cache,或者在后端db,如果这个bbs的访问量足以使系统显现出性能瓶颈的话。

Erlang本身的执行速度并不快(相对于静态类型语言),不适合直接用于计算密集的任务。


描述不当,把复杂计算任务分解到大量的节点的意思。
17 楼 cookoo 2007-05-24  
pi1ot 写道
erlang的优势是分布和并发,适用的范围是计算密集型的,比如搜索引擎后端,或者按我的理解网游server端也应该是,没做过网游不是很肯定。
bbs的根本瓶颈在于io,或者在前端cache,或者在后端db,如果这个bbs的访问量足以使系统显现出性能瓶颈的话。

Erlang本身的执行速度并不快(相对于静态类型语言),不适合直接用于计算密集的任务。
16 楼 AvinDev 2007-05-24  
书上的那个例子只是个Demo,远远比不上Hadoop的强大,但是可以一窥Erlang开发此类应用的强大。
顺便附上源码包,中国的IP被屏蔽了,唉。
15 楼 zhangyu8374 2007-05-24  
看到Erlang这么好的并发性能,我猜应该有搜索引擎公司开始涉足这方面的技术。但自己在网上找了一通,没有发现相关的资料。不知谁有没有这方面的信息?

不知这个mapreduce实现与hadoop提供的实现在性能上差别大不大。

btw:正准备去下书中带的源码,竟然把中国IP屏蔽掉了。哎,中国的这些net spider已经是声名远播啦!
14 楼 potian 2007-05-18  
代码早就可以下载了

是一个mapreduce的全文检索例子

这本新书入门还是可以的,原理和基本习惯用法都讲解得非常得当

但基本上每一点讲得并不是很深入,如果要深入某一点,还是需要自己啃文档加练习。
13 楼 cryolite 2007-05-18  
dogstar 写道
joe programming erlang 马上就出了,据说是实现了一个google的大map做为demo,可以看看。


还早呢,7月份才出来
http://www.pragmaticprogrammer.com/titles/jaerlang/index.html
12 楼 dogstar 2007-05-15  
joe programming erlang 马上就出了,据说是实现了一个google的大map做为demo,可以看看。

相关推荐

Global site tag (gtag.js) - Google Analytics