0

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

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

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

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

编辑:术语“规模”最直接地涉及为服务大量用户(可能是数万或数十万,可能是数百万)而进行的扩展。

4

2 回答 2

1

“规模” - 它以哪种方式扩展?使用 CPU 内核、用户或代码库进行扩展?

你可能会问:哪种语言实现最快?哪种语言可以毫无问题地处理大量请求?

在每种语言实现中,您都需要制定构建分布式系统的策略。如果您必须担心速度,您应该担心是否有可能将您的系统分布在多台机器上。

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

于 2013-02-24T20:48:38.013 回答
0

您提到的每种语言都会扩展。

如果你对此很认真,你应该选择你最了解的语言并构建它——你甚至还没有对你的想法进行原型设计,并且你关心自己的规模。

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

于 2013-02-24T20:38:04.243 回答