我想学习如何开始开发高度可扩展的服务器/客户端应用程序——更具体地说,是针对非基于 Web/不在浏览器中的桌面客户端。我认为开发一个非常简约的聊天应用程序(大致与 AIM/Skype 相当)是开始学习服务器/客户端和可扩展性的合理途径。
考虑到我对可扩展性的强调,我不确定哪种编程语言适合这项任务。就个人而言,我感兴趣的唯一语言是 Java、C# 和 C/C++。就服务器操作系统而言,我将处理 Linux,因此在我的情况下,C# 意味着 Mono。
我想我的具体兴趣归结为在服务器上使用什么语言,因为它是支持应用程序的基础设施,它必须具有高度可扩展性。我听说过对 Java 和 C# 服务器可伸缩性的褒贬不一的评价。我的直觉表明它们都是完全合理的选择,但是我听说其他人一旦达到应用程序/用户流量的某个阈值就会遇到问题。很难知道如何看待传闻,但我确实认为缺乏对这些语言的裸机支持可能会阻碍某些阈值的可扩展性。当我听说 C/C++ 时,我听说过很棒的 Boost 库(例如Boost.Asio
) 提供最终的可扩展性。但是当我听说在 C/C++ 中处理套接字比在 Java/C# 等其他语言中处理起来要复杂得多时,我感到害怕。
开始制作高度可扩展的服务器-客户端应用程序(例如聊天客户端)的有效方法是什么?在我提到的那些中,哪种编程语言适合开发这样的应用程序?对于这样的应用程序,我应该考虑哪些其他语言?
编辑:术语“规模”最直接地涉及为服务大量用户(可能是数万或数十万,可能是数百万)而进行的扩展。