用于聊天和类似Twitter的应用程序的并发程序语言

时间:2010-03-12 02:53:30

标签: scala haskell concurrency erlang

我需要创建一个简单的聊天系统,如Facebook聊天和类似Twitter的应用程序。 在这种情况下,最好的并发程序语言是什么?

Erlang,Haskell,Scala还是其他什么?

谢谢^ _ ^

8 个答案:

答案 0 :(得分:6)

  

聊天系统,如Facebook聊天

Facebook聊天是用Erlang编写的,http://www.facebook.com/note.php?note_id=14218138919

  

和类似推特的应用

什么方面?邮件传递?网络前端?这最终都是消息路由。 Haskell最近被用于几个实时生产交易系统,使用大量多核并发。 http://www.starling-software.com/misc/icfp-2009-cjs.pdf

更相关:规模是多少:您希望同时投放多少用户?

答案 1 :(得分:4)

Erlang是我对此类药物的选择。但是如果你对JavaScript感觉更舒服,我也会查看Node.js。

答案 2 :(得分:4)

使用Scala / Lift完成聊天应用source code

8分20秒实时,未经编辑,webcast使用Scala / Lift从头开始编写聊天应用。

答案 3 :(得分:2)

这实际上是一个相对容易解决的问题,可以通过任何具有良好线程支持的语言来完成,包括(例如Java,C#等)。该模型非常简单:

  1. 每个客户端使用在服务器上配置的AJAX请求连接到Web服务器,不会超时;
  2. 如果因任何原因超时,则客户端配置为发出另一个AJAX请求;
  3. 该AJSX调用的服务器端点在某些监视器上执行线程等待操作,等待更新;
  4. 当用户发送聊天时,会将其发送到服务器并发出任何相关的监视器信号;
  5. 任何侦听该监视器的线程都会被唤醒,检索等待它们的任何消息并将其作为AJAX结果返回给客户端;
  6. 客户端呈现这些消息,然后发出另一个AJAX请求来监听消息。
  7. 这是基本框架,但不是故事的结尾。任何可扩展的聊天系统都将支持内部或外部联合(意味着客户端可以连接到多个服务器),但除非您是Google,Facebook或Twitter,否则您不太可能遇到此问题。

    如果你需要某种消息队列/总线进行服务器间通信。

    这是你需要像Erlang这样的重型多线程语言,但是,Haskell和其他人当然能够做到这一点。

答案 4 :(得分:2)

答案 5 :(得分:2)

我建议你看看Akka(www.akkasource.org

这是一个Scala Actor框架,其中包含很多用于制作可扩展后端应用程序的管道。

支持开箱即用:

演员监督 远程演员 群集成员 彗星JAX-RS(项目大气) HTTP Auth为您的服务 分布式存储引擎支持(Cassandra,MongoDB) +更多

答案 6 :(得分:1)

我会选择erlang,它在启用彗星的应用程序中的效率已得到很好的证明。

使用氮气这样的框架,你可以像Jquery一样轻松地启动彗星请求。

答案 7 :(得分:1)

如果它实际上是一个简单的应用程序(并且不是在非常高的负载下),那么答案就是使用你已经知道具有良好线程的任何语言。 Erlang,Scala,Clojure,Haskell,F#等都在这样的事情上做得非常好 - 但Java和C#也是如此。如果你选择你知道和/或喜欢的任何一个,你会没事的。

如果您以此为借口学习一种新的通用语言,我会选择Scala作为高性能的优秀组合(Erlang不是一般的,尽管它在高效并发方面很棒),高度功能(Java和C#不是),高度可部署(由于在JVM上运行),并且相当熟悉(假设你知道C语言)。

如果您以此为借口来实践容错并发,请使用Erlang。这就是它的设计目标,它做得非常好。