为服务器 - 客户端应用程序提供可伸缩性的语言

时间:2013-02-24 20:32:33

标签: client-server scalability

我想学习如何开始开发高度可扩展的服务器/客户端应用程序 - 更具体地说,是针对非基于Web的/不在浏览器的桌面客户端。我认为开发一个非常简约的聊天应用程序(大致相当于AIM / Skype)是开始学习服务器/客户端和可扩展性的合理途径。

考虑到我对可扩展性的强调,我不确定哪种编程语言适合此任务。就个人而言,我唯一感兴趣的语言是Java,C#和C / C ++。就服务器操作系统而言,我将处理Linux,因此在我的情况下C#意味着Mono。

我认为我的具体兴趣归结为服务器上使用的语言,因为它是支持应用程序的基础架构,必须具有高度可扩展性。我听说过Java和C#服务器可扩展性的混合评论。我的直觉表明它们都是完全合理的选择,但是当我们达到应用/用户流量的某个阈值时,我会听到其他人遇到问题。很难知道传闻是什么,但我认为缺乏对这些语言的裸机支持可能会阻碍某些阈值的可扩展性。当我听说C / C ++时,我听到提到了提供最终可扩展性的伟大Boost库(例如Boost.Asio)。但是当我听说特别是套接字在C / C ++中处理比使用Java / C#等其他语言要复杂得多时,我很害怕。

开始制作高度可扩展的服务器 - 客户端应用程序(如聊天客户端)的有效方法是什么?在我提到的那些中,哪种编程语言非常适合开发这样的应用程序?我应该为这样的申请考虑哪些其他语言?

编辑:术语“规模”最直接与缩放相关,以服务于大量用户(可能是数十万或数十万,可能是数百万)。

2 个答案:

答案 0 :(得分:1)

“规模” - 以哪种方式扩展?使用CPU核心,用户还是代码库进行扩展?

您可以问:哪种语言实施最快?哪种语言可以毫无问题地处理大量请求?

在每种语言实现中,您都需要有策略来构建分布式系统。如果你不得不担心速度,你应该担心有可能在许多机器上分配你的系统。

如果您想要核心和非阻塞请求方面的最大可扩展性,请使用Erlang。它将在服务器端处理大量流量。

答案 1 :(得分:0)

您提到的每种语言都会缩放。

如果你认真对待这个问题,你应该选择你最熟悉的语言并建立它 - 你甚至还没有原型化你的想法,而你的关注自己的规模。

我们可以列出使用上述每种语言编写的许多程序和网站,这些程序和网站完全可以很好地扩展(我们也可以列出很多这些程序和网站)。